diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000000000000000000000000000000000000..41789cacd9f8f13950c43a02be46199c7a412290 --- /dev/null +++ b/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": ["es2015", "stage-2"], + "plugins": ["transform-runtime"], + "comments": false +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000000000000000000000000000000000..e3a4037e479f58286a5de99b95107183d71ffcf9 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +build/*.js +config/*.js +src/assets diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000000000000000000000000000000000000..a388ba278c5b31c39a433793beab8e4f55c0cbfc --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,318 @@ +module.exports = { + root: true, + parser: 'babel-eslint', + parserOptions: { + sourceType: 'module' + }, + env: { + browser: true, + node: true + }, + extends: 'eslint:recommended', + // required to lint *.vue files + plugins: [ + 'html' + ], + // check if imports actually resolve + 'settings': { + 'import/resolver': { + 'webpack': { + 'config': 'build/webpack.base.conf.js' + } + } + }, + // add your custom rules here + 'rules': { + // don't require .vue extension when importing + // 'import/extensions': ['error', 'always', { + // 'js': 'never', + // 'vue': 'never' + // }], + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + /* + * Possible Errors + */ + + // disallow unnecessary parentheses + 'no-extra-parens': ['error', 'all', {'nestedBinaryExpressions': false}], + + // disallow negating the left operand of relational operators + 'no-unsafe-negation': 'error', + + // enforce valid JSDoc comments + 'valid-jsdoc': 'off', + + /* + * Best Practices + */ + + // enforce return statements in callbacks of array methods + 'array-callback-return': 'error', + + // enforce consistent brace style for all control statements + curly: ['error', 'multi-line'], + + // enforce consistent newlines before and after dots + 'dot-location': ['error', 'property'], + + // enforce dot notation whenever possible + 'dot-notation': 'error', + + // require the use of === and !== + 'eqeqeq': ['error', 'smart'], + + // disallow the use of arguments.caller or arguments.callee + 'no-caller': 'error', + + // disallow empty functions + 'no-empty-function': 'error', + + // disallow unnecessary calls to .bind() + 'no-extra-bind': 'error', + + // disallow unnecessary labels + 'no-extra-label': 'error', + + // disallow leading or trailing decimal points in numeric literals + 'no-floating-decimal': 'error', + + // disallow assignments to native objects or read-only global variables + 'no-global-assign': 'error', + + // disallow the use of eval()-like methods + 'no-implied-eval': 'error', + + // disallow the use of the __iterator__ property + 'no-iterator': 'error', + + // disallow unnecessary nested blocks + 'no-lone-blocks': 'error', + + // disallow multiple spaces + 'no-multi-spaces': 'error', + + // disallow new operators with the String, Number, and Boolean objects + 'no-new-wrappers': 'error', + + // disallow octal escape sequences in string literals + 'no-octal-escape': 'error', + + // disallow the use of the __proto__ property + 'no-proto': 'error', + + // disallow comparisons where both sides are exactly the same + 'no-self-compare': 'error', + + // disallow throwing literals as exceptions + 'no-throw-literal': 'error', + + // disallow unused expressions + 'no-unused-expressions': 'error', + + // disallow unnecessary calls to .call() and .apply() + 'no-useless-call': 'error', + + // disallow unnecessary concatenation of literals or template literals + 'no-useless-concat': 'error', + + // disallow unnecessary escape characters + 'no-useless-escape': 'error', + + // disallow void operators + 'no-void': 'error', + + // require parentheses around immediate function invocations + 'wrap-iife': 'error', + + // require or disallow “Yoda†conditions + yoda: 'error', + + /* + * Variables + */ + + // disallow labels that share a name with a variable + 'no-label-var': 'error', + + // disallow initializing variables to undefined + 'no-undef-init': 'error', + 'no-undef': 'off', + // disallow the use of variables before they are defined + 'no-use-before-define': 'error', + + /* + * Node.js and CommonJS + */ + + // disallow new operators with calls to require + 'no-new-require': 'error', + + /* + * Stylistic Issues + */ + + // enforce consistent spacing inside array brackets + 'array-bracket-spacing': 'error', + + // enforce consistent spacing inside single-line blocks + 'block-spacing': 'error', + + // enforce consistent brace style for blocks + 'brace-style': ['error', '1tbs', {'allowSingleLine': true}], + + // require or disallow trailing commas + 'comma-dangle': 'error', + + // enforce consistent spacing before and after commas + 'comma-spacing': 'error', + + // enforce consistent comma style + 'comma-style': 'error', + + // enforce consistent spacing inside computed property brackets + 'computed-property-spacing': 'error', + + // require or disallow spacing between function identifiers and their invocations + 'func-call-spacing': 'error', + + // enforce consistent indentation + indent: ['error', 2, {SwitchCase: 1}], + + // enforce the consistent use of either double or single quotes in JSX attributes + 'jsx-quotes': 'error', + + // enforce consistent spacing between keys and values in object literal properties + 'key-spacing': 'error', + + // enforce consistent spacing before and after keywords + 'keyword-spacing': 'error', + + // enforce consistent linebreak style + 'linebreak-style': 'error', + + // require or disallow newlines around directives + 'lines-around-directive': 'error', + + // require constructor names to begin with a capital letter + 'new-cap': 'off', + + // require parentheses when invoking a constructor with no arguments + 'new-parens': 'error', + + // disallow Array constructors + 'no-array-constructor': 'error', + + // disallow Object constructors + 'no-new-object': 'error', + + // disallow trailing whitespace at the end of lines + 'no-trailing-spaces': 'error', + + // disallow ternary operators when simpler alternatives exist + 'no-unneeded-ternary': 'error', + + // disallow whitespace before properties + 'no-whitespace-before-property': 'error', + + // enforce consistent spacing inside braces + 'object-curly-spacing': ['error', 'always'], + + // require or disallow padding within blocks + 'padded-blocks': ['error', 'never'], + + // require quotes around object literal property names + 'quote-props': ['error', 'as-needed'], + + // enforce the consistent use of either backticks, double, or single quotes + quotes: ['error', 'single'], + + // enforce consistent spacing before and after semicolons + 'semi-spacing': 'error', + + // require or disallow semicolons instead of ASI + // semi: ['error', 'never'], + + // enforce consistent spacing before blocks + 'space-before-blocks': 'error', + + 'no-console': 'off', + + // enforce consistent spacing before function definition opening parenthesis + 'space-before-function-paren': ['error', 'never'], + + // enforce consistent spacing inside parentheses + 'space-in-parens': 'error', + + // require spacing around infix operators + 'space-infix-ops': 'error', + + // enforce consistent spacing before or after unary operators + 'space-unary-ops': 'error', + + // enforce consistent spacing after the // or /* in a comment + 'spaced-comment': 'error', + + // require or disallow Unicode byte order mark (BOM) + 'unicode-bom': 'error', + + + /* + * ECMAScript 6 + */ + + // require braces around arrow function bodies + 'arrow-body-style': 'error', + + // require parentheses around arrow function arguments + 'arrow-parens': ['error', 'as-needed'], + + // enforce consistent spacing before and after the arrow in arrow functions + 'arrow-spacing': 'error', + + // enforce consistent spacing around * operators in generator functions + 'generator-star-spacing': ['error', 'after'], + + // disallow duplicate module imports + 'no-duplicate-imports': 'error', + + // disallow unnecessary computed property keys in object literals + 'no-useless-computed-key': 'error', + + // disallow unnecessary constructors + 'no-useless-constructor': 'error', + + // disallow renaming import, export, and destructured assignments to the same name + 'no-useless-rename': 'error', + + // require let or const instead of var + 'no-var': 'error', + + // require or disallow method and property shorthand syntax for object literals + 'object-shorthand': 'error', + + // require arrow functions as callbacks + 'prefer-arrow-callback': 'error', + + // require const declarations for variables that are never reassigned after declared + 'prefer-const': 'error', + + // disallow parseInt() in favor of binary, octal, and hexadecimal literals + 'prefer-numeric-literals': 'error', + + // require rest parameters instead of arguments + 'prefer-rest-params': 'error', + + // require spread operators instead of .apply() + 'prefer-spread': 'error', + + // enforce spacing between rest and spread operators and their expressions + 'rest-spread-spacing': 'error', + + // require or disallow spacing around embedded expressions of template strings + 'template-curly-spacing': 'error', + + // require or disallow spacing around the * in yield* expressions + 'yield-star-spacing': 'error' + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..19131cc39a99df21fa0a16685524cdf9055f52f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules/ +dist/ +static/ckeditor + +npm-debug.log +test/unit/coverage +test/e2e/reports +selenium-debug.log +.idea diff --git a/build/build.js b/build/build.js new file mode 100644 index 0000000000000000000000000000000000000000..4d02fc932c3b232cf14f8a8a21925f755b9535b2 --- /dev/null +++ b/build/build.js @@ -0,0 +1,42 @@ +require('./check-versions')(); +var server = require('pushstate-server'); +var opn = require('opn') +var ora = require('ora') +var rm = require('rimraf') +var path = require('path') +var chalk = require('chalk') +var webpack = require('webpack'); +var config = require('../config'); +var webpackConfig = require('./webpack.prod.conf'); + +console.log(process.env.NODE_ENV) +console.log(process.env.npm_config_preview) + +var spinner = ora('building for ' + process.env.NODE_ENV + '...') +spinner.start() + + +rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, function (err, stats) { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, + chunks: false, + chunkModules: false + }) + '\n\n') + + console.log(chalk.cyan(' Build complete.\n')) + if(process.env.npm_config_preview){ + server.start({ + port: 80, + directory: './dist', + file: '/index.html' + }); + opn('http://kushnerpreview.wallstreetcn.com/') + } + }) +}) diff --git a/build/check-versions.js b/build/check-versions.js new file mode 100644 index 0000000000000000000000000000000000000000..3a1dda61e98f9ee7c67088a0ccb952333829ff85 --- /dev/null +++ b/build/check-versions.js @@ -0,0 +1,45 @@ +var chalk = require('chalk') +var semver = require('semver') +var packageConfig = require('../package.json') + +function exec(cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +var versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + }, + { + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + } +] + +module.exports = function () { + var warnings = [] + for (var i = 0; i < versionRequirements.length; i++) { + var mod = versionRequirements[i] + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + for (var i = 0; i < warnings.length; i++) { + var warning = warnings[i] + console.log(' ' + warning) + } + console.log() + process.exit(1) + } +} diff --git a/build/dev-client.js b/build/dev-client.js new file mode 100644 index 0000000000000000000000000000000000000000..18aa1e21952b9468dd5a7e603eb9966d037d2f1a --- /dev/null +++ b/build/dev-client.js @@ -0,0 +1,9 @@ +/* eslint-disable */ +require('eventsource-polyfill') +var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') + +hotClient.subscribe(function (event) { + if (event.action === 'reload') { + window.location.reload() + } +}) diff --git a/build/dev-server.js b/build/dev-server.js new file mode 100644 index 0000000000000000000000000000000000000000..86398d436178473d3cd4a43db548d17a30cef12d --- /dev/null +++ b/build/dev-server.js @@ -0,0 +1,85 @@ +require('./check-versions')(); // 检查 Node å’Œ npm 版本 +var config = require('../config'); +if (!process.env.NODE_ENV) { + process.env.NODE_ENV = config.dev.env; + // process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) +} + +var opn = require('opn') +var path = require('path'); +var express = require('express'); +var webpack = require('webpack'); +var proxyMiddleware = require('http-proxy-middleware'); +var webpackConfig = require('./webpack.dev.conf'); + +// default port where dev server listens for incoming traffic +var port = process.env.PORT || config.dev.port; +// automatically open browser, if not set will be false +var autoOpenBrowser = !!config.dev.autoOpenBrowser; +// Define HTTP proxies to your custom API backend +// https://github.com/chimurai/http-proxy-middleware +var proxyTable = config.dev.proxyTable; + +var app = express(); +var compiler = webpack(webpackConfig); + +var devMiddleware = require('webpack-dev-middleware')(compiler, { + publicPath: webpackConfig.output.publicPath, + quiet: true +}); + +var hotMiddleware = require('webpack-hot-middleware')(compiler, { + log: () => { + } +}); + +// force page reload when html-webpack-plugin template changes +compiler.plugin('compilation', function (compilation) { + compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { + hotMiddleware.publish({action: 'reload'}); + cb() + }) +}); + +// compiler.apply(new DashboardPlugin()); + +// proxy api requests +Object.keys(proxyTable).forEach(function (context) { + var options = proxyTable[context] + if (typeof options === 'string') { + options = {target: options} + } + app.use(proxyMiddleware(options.filter || context, options)) +}); + +// handle fallback for HTML5 history API +app.use(require('connect-history-api-fallback')()); + +// serve webpack bundle output +app.use(devMiddleware); + +// enable hot-reload and state-preserving +// compilation error display +app.use(hotMiddleware); + +// serve pure static assets +var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory); +app.use(staticPath, express.static('./static')); + +var uri = 'http://localhost:' + port + +devMiddleware.waitUntilValid(function () { + console.log('> Listening at ' + uri + '\n') +}); + +module.exports = app.listen(port, function (err) { + if (err) { + console.log(err); + return + } + + // when env is testing, don't need open it + if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { + opn(uri) + } +}); diff --git a/build/utils.js b/build/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..d3aaebb05e11ef5fc43c8d6484621c10a76d5c3d --- /dev/null +++ b/build/utils.js @@ -0,0 +1,71 @@ +var path = require('path') +var config = require('../config') +var ExtractTextPlugin = require('extract-text-webpack-plugin') + +exports.assetsPath = function (_path) { + var assetsSubDirectory = process.env.NODE_ENV === 'production' + ? config.build.assetsSubDirectory + : config.dev.assetsSubDirectory + return path.posix.join(assetsSubDirectory, _path) +} + +exports.cssLoaders = function (options) { + options = options || {} + + var cssLoader = { + loader: 'css-loader', + options: { + minimize: process.env.NODE_ENV === 'production', + sourceMap: options.sourceMap + } + } + + // generate loader string to be used with extract text plugin + function generateLoaders(loader, loaderOptions) { + var loaders = [cssLoader] + if (loader) { + loaders.push({ + loader: loader + '-loader', + options: Object.assign({}, loaderOptions, { + sourceMap: options.sourceMap + }) + }) + } + + // Extract CSS when that option is specified + // (which is the case during production build) + if (options.extract) { + return ExtractTextPlugin.extract({ + use: loaders, + fallback: 'vue-style-loader' + }) + } else { + return ['vue-style-loader'].concat(loaders) + } + } + + // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html + return { + css: generateLoaders(), + postcss: generateLoaders(), + less: generateLoaders('less'), + sass: generateLoaders('sass', {indentedSyntax: true}), + scss: generateLoaders('sass'), + stylus: generateLoaders('stylus'), + styl: generateLoaders('stylus') + } +} + +// Generate loaders for standalone style files (outside of .vue) +exports.styleLoaders = function (options) { + var output = [] + var loaders = exports.cssLoaders(options) + for (var extension in loaders) { + var loader = loaders[extension] + output.push({ + test: new RegExp('\\.' + extension + '$'), + use: loader + }) + } + return output +} diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js new file mode 100644 index 0000000000000000000000000000000000000000..d7df7e57270ac94e6361180f61d4998a32a662d9 --- /dev/null +++ b/build/vue-loader.conf.js @@ -0,0 +1,12 @@ +var utils = require('./utils') +var config = require('../config') +var isProduction = process.env.NODE_ENV === 'production' + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: isProduction + ? config.build.productionSourceMap + : config.dev.cssSourceMap, + extract: isProduction + }) +} diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js new file mode 100644 index 0000000000000000000000000000000000000000..986604bf7bf3248a4fe8060c76e4efd4870f311b --- /dev/null +++ b/build/webpack.base.conf.js @@ -0,0 +1,92 @@ +var path = require('path'); +var utils = require('./utils'); +var config = require('../config'); +var vueLoaderConfig = require('./vue-loader.conf'); + +function resolve(dir) { + return path.join(__dirname, '..', dir) +} + +var src = path.resolve(__dirname, '../src'); +var env = process.env.NODE_ENV +// check env & config/index.js to decide weither to enable CSS Sourcemaps for the +// various preprocessor loaders added to vue-loader at the end of this file +var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) +var cssSourceMapProd = (env === 'production||sit' && config.build.productionSourceMap) +var useCssSourceMap = cssSourceMapDev || cssSourceMapProd + +module.exports = { + entry: { + app: './src/main.js' + }, + output: { + path: config.build.assetsRoot, + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production||sit' ? config.build.assetsPublicPath : config.dev.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'vue$': 'vue/dist/vue.esm.js', + '@': resolve('src'), + 'src': path.resolve(__dirname, '../src'), + 'assets': path.resolve(__dirname, '../src/assets'), + 'components': path.resolve(__dirname, '../src/components'), + 'views': path.resolve(__dirname, '../src/views'), + 'styles': path.resolve(__dirname, '../src/styles'), + 'api': path.resolve(__dirname, '../src/api'), + 'utils': path.resolve(__dirname, '../src/utils'), + 'store': path.resolve(__dirname, '../src/store'), + 'router': path.resolve(__dirname, '../src/router'), + 'mock': path.resolve(__dirname, '../src/mock'), + 'vendor': path.resolve(__dirname, '../src/vendor'), + 'static': path.resolve(__dirname, '../static') + } + }, + externals: { + jquery: 'jQuery' + }, + module: { + rules: [ + // { + // test: /\.(js|vue)$/, + // loader: 'eslint-loader', + // enforce: "pre", + // include: [resolve('src'), resolve('test')], + // options: { + // formatter: require('eslint-friendly-formatter') + // } + // }, + { test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + loader: 'babel-loader?cacheDirectory', + include: [resolve('src'), resolve('test')] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + query: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + query: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + } + ] + }, + //注入全局mixin + // sassResources: path.join(__dirname, '../src/styles/mixin.scss'), + // sassLoader: { + // data: path.join(__dirname, '../src/styles/index.scss') + // }, +} diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js new file mode 100644 index 0000000000000000000000000000000000000000..109a79705d6ef991bd5dfff44a45bc105eddfd2c --- /dev/null +++ b/build/webpack.dev.conf.js @@ -0,0 +1,47 @@ +var utils = require('./utils') +var path = require('path') +var webpack = require('webpack') +var config = require('../config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') + +// add hot-reload related code to entry chunks +Object.keys(baseWebpackConfig.entry).forEach(function (name) { + baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) +}) + +function resolveApp(relativePath) { + return path.resolve(relativePath); +} + +module.exports = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({sourceMap: config.dev.cssSourceMap}) + }, + // cheap-source-map is faster for development + devtool: '#cheap-source-map', + cache: true, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': config.dev.env + }), + new webpack.ProvidePlugin({ + $: 'jquery', + 'jQuery': 'jquery' + }), + // https://github.com/glenjamin/webpack-hot-middleware#installation--usage + new webpack.HotModuleReplacementPlugin(), + new webpack.NoErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'index.html', + favicon: resolveApp('favicon.ico'), + inject: true, + path:config.dev.staticPath + }), + new FriendlyErrorsPlugin() + ] +}) diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js new file mode 100644 index 0000000000000000000000000000000000000000..6f01fa59c6de047827b9a99f6478ed91b33a45fb --- /dev/null +++ b/build/webpack.prod.conf.js @@ -0,0 +1,113 @@ +var path = require('path') +var utils = require('./utils') +var webpack = require('webpack') +var config = require('../config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var CopyWebpackPlugin = require('copy-webpack-plugin') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') + +var env = process.env.NODE_ENV === 'production' ? config.build.prodEnv : config.build.sitEnv + +function resolveApp(relativePath) { + return path.resolve(relativePath); +} + +var webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true + }) + }, + devtool: config.build.productionSourceMap ? '#source-map' : false, + output: { + path: config.build.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + }, + sourceMap: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css') + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin(), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: process.env.NODE_ENV === 'testing' + ? 'index.html' + : config.build.index, + template: 'index.html', + inject: true, + favicon: resolveApp('favicon.ico'), + minify: { + removeComments: true, + collapseWhitespace: true, + removeRedundantAttributes: true, + useShortDoctype: true, + removeEmptyAttributes: true, + removeStyleLinkTypeAttributes: true, + keepClosingSlash: true, + minifyJS: true, + minifyCSS: true, + minifyURLs: true + }, + path:config.build.staticPath, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency' + }), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks: function (module, count) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + chunks: ['vendor'] + }), + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.build.assetsSubDirectory, + ignore: ['.*'] + } + ]), + new webpack.ProvidePlugin({ + $: 'jquery', + 'jQuery': 'jquery' + }) + ] +}) +if (config.build.bundleAnalyzerReport) { + var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} +module.exports = webpackConfig diff --git a/config/dev.env.js b/config/dev.env.js new file mode 100644 index 0000000000000000000000000000000000000000..e26486cd8861613060f19f9f64157b0066ef4063 --- /dev/null +++ b/config/dev.env.js @@ -0,0 +1,5 @@ +module.exports = { + NODE_ENV: '"development"', + BASE_API: '"https://api-dev"', + APP_ORIGIN: '"https://wallstreetcn.com"' +} diff --git a/config/index.js b/config/index.js new file mode 100644 index 0000000000000000000000000000000000000000..646df8863090cc61190600a4cfab73f45feeaa01 --- /dev/null +++ b/config/index.js @@ -0,0 +1,41 @@ +// see http://vuejs-templates.github.io/webpack for documentation. +var path = require('path') + +module.exports = { + build: { + sitEnv: require('./sit.env'), + prodEnv: require('./prod.env'), + index: path.resolve(__dirname, '../dist/index.html'), + assetsRoot: path.resolve(__dirname, '../dist'), + assetsSubDirectory: '', + assetsPublicPath: '/', + staticPath:'', + productionSourceMap: true, + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + }, + dev: { + env: require('./dev.env'), + port: 9527, + autoOpenBrowser: true, + assetsSubDirectory: 'static', + staticPath:'/static', + assetsPublicPath: '/', + proxyTable: {}, + // CSS Sourcemaps off by default because relative paths are "buggy" + // with this option, according to the CSS-Loader README + // (https://github.com/webpack/css-loader#sourcemaps) + // In our experience, they generally work as expected, + // just be aware of this issue when enabling this option. + cssSourceMap: false + } +} diff --git a/config/prod.env.js b/config/prod.env.js new file mode 100644 index 0000000000000000000000000000000000000000..a3c11bd654b655d9d979647de55cd200c5ebebdf --- /dev/null +++ b/config/prod.env.js @@ -0,0 +1,5 @@ +module.exports = { + NODE_ENV: '"production"', + BASE_API: '"https://api-prod', + APP_ORIGIN: '"https://wallstreetcn.com"' +}; diff --git a/config/sit.env.js b/config/sit.env.js new file mode 100644 index 0000000000000000000000000000000000000000..64cf403b9ae6b7de46d02d09a7b6159ae9ff8ee7 --- /dev/null +++ b/config/sit.env.js @@ -0,0 +1,5 @@ +module.exports = { + NODE_ENV: '"production"', + BASE_API: '"https://api-sit"', + APP_ORIGIN: '"https://wallstreetcn.com"' +}; diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7cd39d7fc1b9c5df62f01f25614cc1062f5685a1 Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000000000000000000000000000000000000..a8105edf95273c1147e3ae2194f93ab1d68b4cf0 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="renderer" content="webkit"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> + <title>Juicy</title> +</head> +<body> +<script src=<%= htmlWebpackPlugin.options.path %>/jquery.min.js></script> +<script src=<%= htmlWebpackPlugin.options.path %>/tinymce1.3/tinymce.min.js></script> +<div id="app"></div> +<!-- built files will be auto injected --> +</body> + +</html> diff --git a/package.json b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..16f9cb11a59beb91b63b67b8cb8498eb9e1b0ec4 --- /dev/null +++ b/package.json @@ -0,0 +1,93 @@ +{ + "name": "juicy", + "version": "1.0.0", + "description": "A Vue.js admin", + "author": "Pan <panfree23@gmail.com>", + "private": true, + "scripts": { + "dev": "node build/dev-server.js", + "build:prod": "NODE_ENV=production node build/build.js", + "build:sit": "NODE_ENV=sit node build/build.js", + "build:sit-preview": "NODE_ENV=sit npm_config_preview=true npm_config_report=true node build/build.js", + "lint": "eslint --ext .js,.vue src" + }, + "dependencies": { + "axios": "0.15.3", + "codemirror": "5.22.0", + "dropzone": "4.3.0", + "echarts": "3.4.0", + "element-ui": "1.2.7", + "file-saver": "1.3.3", + "jquery": "3.1.1", + "js-cookie": "2.1.3", + "jsonlint": "1.6.2", + "normalize.css": "3.0.2", + "nprogress": "0.2.0", + "showdown": "1.6.4", + "simplemde": "1.11.2", + "vue": "2.2.6", + "vue-multiselect": "2.0.0-beta.14", + "vue-router": "2.3.0", + "vuedraggable": "2.8.4", + "vuex": "2.2.1", + "xlsx": "0.8.1" + }, + "devDependencies": { + "autoprefixer": "6.7.2", + "babel-core": "6.22.1", + "babel-eslint": "7.1.1", + "babel-loader": "6.2.10", + "babel-plugin-transform-runtime": "6.22.0", + "babel-preset-es2015": "6.22.0", + "babel-preset-stage-2": "6.22.0", + "babel-register": "6.22.0", + "chalk": "1.1.3", + "connect-history-api-fallback": "1.3.0", + "copy-webpack-plugin": "4.0.1", + "css-loader": "0.26.1", + "eslint": "3.14.1", + "eslint-friendly-formatter": "2.0.7", + "eslint-loader": "1.6.1", + "eslint-plugin-html": "2.0.0", + "eslint-config-airbnb-base": "11.0.1", + "eslint-import-resolver-webpack": "0.8.1", + "eslint-plugin-import": "2.2.0", + "eventsource-polyfill": "0.9.6", + "express": "4.14.1", + "extract-text-webpack-plugin": "2.0.0", + "file-loader": "0.10.0", + "friendly-errors-webpack-plugin": "^1.1.3", + "function-bind": "1.1.0", + "html-webpack-plugin": "2.28.0", + "http-proxy-middleware": "0.17.3", + "webpack-bundle-analyzer": "2.2.1", + "semver": "5.3.0", + "opn": "4.0.2", + "optimize-css-assets-webpack-plugin": "1.3.0", + "ora": "1.1.0", + "rimraf": "2.6.0", + "url-loader": "0.5.7", + "vue-loader": "11.3.4", + "vue-style-loader": "2.0.0", + "vue-template-compiler": "2.2.6", + "webpack": "2.2.1", + "webpack-dev-middleware": "1.10.0", + "webpack-hot-middleware": "2.16.1", + "webpack-merge": "2.6.1", + "webpack-dashboard": "0.2.1", + "node-sass": "3.7.0", + "pushstate-server": "2.1.0", + "sass-loader": "4.0.2", + "script-loader": "0.7.0", + "style-loader": "0.13.1" + }, + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + }, + "browserlist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000000000000000000000000000000000000..823cad8acebb21fe4d6fb6ac34e5bf84dd883e73 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,11 @@ +<template> + <div id="app"> + <router-view></router-view> + </div> +</template> + +<script> + export default{ + name: 'APP' + } +</script> diff --git a/src/api/qiniu.js b/src/api/qiniu.js new file mode 100644 index 0000000000000000000000000000000000000000..d63319a3326c03f856b342d84ae6a22104be931f --- /dev/null +++ b/src/api/qiniu.js @@ -0,0 +1,28 @@ +import fetch, { tpFetch } from 'utils/fetch'; + +export function getToken() { + return fetch({ + url: '/qiniu/upload/token', + method: 'get' + }); +} +export function upload(data) { + return tpFetch({ + url: 'https://upload.qbox.me', + method: 'post', + data + }); +} + + +/* 外部uri转七牛uri*/ +export function netUpload(token, net_url) { + const imgData = { + net_url + }; + return fetch({ + url: '/qiniu/upload/net/async', + method: 'post', + data: imgData + }); +} diff --git a/src/assets/401.gif b/src/assets/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 Binary files /dev/null and b/src/assets/401.gif differ diff --git a/src/assets/compbig.gif b/src/assets/compbig.gif new file mode 100644 index 0000000000000000000000000000000000000000..45bfc49c5b25778531e9a626305cf5530dd66934 Binary files /dev/null and b/src/assets/compbig.gif differ diff --git a/src/assets/custom-theme/fonts/element-icons.ttf b/src/assets/custom-theme/fonts/element-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9c1b720057b90619c4d176c51d4655241d6fbe0e Binary files /dev/null and b/src/assets/custom-theme/fonts/element-icons.ttf differ diff --git a/src/assets/custom-theme/fonts/element-icons.woff b/src/assets/custom-theme/fonts/element-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..2bbd019f86b1ca03d86da1937b9b0875ac167659 Binary files /dev/null and b/src/assets/custom-theme/fonts/element-icons.woff differ diff --git a/src/assets/custom-theme/index.css b/src/assets/custom-theme/index.css new file mode 100644 index 0000000000000000000000000000000000000000..6a8b51bb96e31b04abb4d1e254f714ea1c325040 --- /dev/null +++ b/src/assets/custom-theme/index.css @@ -0,0 +1,23959 @@ +.custom-theme .el-form-item__content:before, +.custom-theme .el-form-item__content:after { + display: table; + content: ""; +} + +.custom-theme .el-form-item__content:after { + clear: both; +} + +.custom-theme .el-form-item:before, +.custom-theme .el-form-item:after { + display: table; + content: ""; +} + +.custom-theme .el-form-item:after { + clear: both; +} + +.custom-theme .el-breadcrumb:before, +.custom-theme .el-breadcrumb:after { + display: table; + content: ""; +} + +.custom-theme .el-breadcrumb:after { + clear: both; +} + +.custom-theme .el-button-group:before, +.custom-theme .el-button-group:after { + display: table; + content: ""; +} + +.custom-theme .el-button-group:after { + clear: both; +} + +.custom-theme .el-button-group:before, +.custom-theme .el-button-group:after { + display: table; + content: ""; +} + +.custom-theme .el-button-group:after { + clear: both; +} + +.custom-theme .el-button-group:before, +.custom-theme .el-button-group:after { + display: table; + content: ""; +} + +.custom-theme .el-button-group:after { + clear: both; +} + +.custom-theme .el-autocomplete-suggestion.is-loading li:after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .fade-in-linear-enter-active, +.custom-theme .fade-in-linear-leave-active { + transition: opacity 200ms linear; +} + +.custom-theme .fade-in-linear-enter, +.custom-theme .fade-in-linear-leave, +.custom-theme .fade-in-linear-leave-active { + opacity: 0; +} + +.custom-theme .el-fade-in-enter-active, +.custom-theme .el-fade-in-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-fade-in-enter, +.custom-theme .el-fade-in-leave-active { + opacity: 0; +} + +.custom-theme .el-zoom-in-center-enter-active, +.custom-theme .el-zoom-in-center-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-zoom-in-center-enter, +.custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + transform: scaleX(0); +} + +.custom-theme .el-zoom-in-top-enter-active, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center top; +} + +.custom-theme .el-zoom-in-top-enter, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .el-zoom-in-bottom-enter-active, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center bottom; +} + +.custom-theme .el-zoom-in-bottom-enter, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .collapse-transition { + transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out; +} + +.custom-theme .list-enter-active, +.custom-theme .list-leave-active { + transition: all 1s; +} + +.custom-theme .list-enter, +.custom-theme .list-leave-active { + opacity: 0; + transform: translateY(-30px); +} + +@font-face { + font-family: 'element-icons'; + src: url('fonts/element-icons.woff?t=1472440741') format('woff'), + url('fonts/element-icons.ttf?t=1472440741') format('truetype'); + /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + font-weight: 400; + font-style: normal; +} + +.custom-theme [class^="el-icon-"], +.custom-theme [class*=" el-icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'element-icons' !important; + speak: none; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: baseline; + display: inline-block; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.custom-theme .el-icon-arrow-down:before { + content: "\e600"; +} + +.custom-theme .el-icon-arrow-left:before { + content: "\e601"; +} + +.custom-theme .el-icon-arrow-right:before { + content: "\e602"; +} + +.custom-theme .el-icon-arrow-up:before { + content: "\e603"; +} + +.custom-theme .el-icon-caret-bottom:before { + content: "\e604"; +} + +.custom-theme .el-icon-caret-left:before { + content: "\e605"; +} + +.custom-theme .el-icon-caret-right:before { + content: "\e606"; +} + +.custom-theme .el-icon-caret-top:before { + content: "\e607"; +} + +.custom-theme .el-icon-check:before { + content: "\e608"; +} + +.custom-theme .el-icon-circle-check:before { + content: "\e609"; +} + +.custom-theme .el-icon-circle-close:before { + content: "\e60a"; +} + +.custom-theme .el-icon-circle-cross:before { + content: "\e60b"; +} + +.custom-theme .el-icon-close:before { + content: "\e60c"; +} + +.custom-theme .el-icon-upload:before { + content: "\e60d"; +} + +.custom-theme .el-icon-d-arrow-left:before { + content: "\e60e"; +} + +.custom-theme .el-icon-d-arrow-right:before { + content: "\e60f"; +} + +.custom-theme .el-icon-d-caret:before { + content: "\e610"; +} + +.custom-theme .el-icon-date:before { + content: "\e611"; +} + +.custom-theme .el-icon-delete:before { + content: "\e612"; +} + +.custom-theme .el-icon-document:before { + content: "\e613"; +} + +.custom-theme .el-icon-edit:before { + content: "\e614"; +} + +.custom-theme .el-icon-information:before { + content: "\e615"; +} + +.custom-theme .el-icon-loading:before { + content: "\e616"; +} + +.custom-theme .el-icon-menu:before { + content: "\e617"; +} + +.custom-theme .el-icon-message:before { + content: "\e618"; +} + +.custom-theme .el-icon-minus:before { + content: "\e619"; +} + +.custom-theme .el-icon-more:before { + content: "\e61a"; +} + +.custom-theme .el-icon-picture:before { + content: "\e61b"; +} + +.custom-theme .el-icon-plus:before { + content: "\e61c"; +} + +.custom-theme .el-icon-search:before { + content: "\e61d"; +} + +.custom-theme .el-icon-setting:before { + content: "\e61e"; +} + +.custom-theme .el-icon-share:before { + content: "\e61f"; +} + +.custom-theme .el-icon-star-off:before { + content: "\e620"; +} + +.custom-theme .el-icon-star-on:before { + content: "\e621"; +} + +.custom-theme .el-icon-time:before { + content: "\e622"; +} + +.custom-theme .el-icon-warning:before { + content: "\e623"; +} + +.custom-theme .el-icon-delete2:before { + content: "\e624"; +} + +.custom-theme .el-icon-upload2:before { + content: "\e627"; +} + +.custom-theme .el-icon-view:before { + content: "\e626"; +} + +.custom-theme .el-icon-loading { + animation: rotating 1s linear infinite; +} + +.custom-theme .el-icon--right { + margin-left: 5px; +} + +.custom-theme .el-icon--left { + margin-right: 5px; +} + +@keyframes rotating { + 0% { + transform: rotateZ(0deg); + } + + 100% { + transform: rotateZ(360deg); + } +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-select-dropdown { + position: absolute; + z-index: 1001; + border: solid 1px rgb(209, 215, 229); + border-radius: 2px; + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); + box-sizing: border-box; + margin: 5px 0; +} + +.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list { + padding: 0; +} + + + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: #073069; + background-color: #fff; +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after { + position: absolute; + right: 10px; + font-family: 'element-icons'; + content: "\E608"; + font-size: 11px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.custom-theme .el-select-dropdown__empty { + padding: 10px 0; + margin: 0; + text-align: center; + color: #999; + font-size: 14px; +} + +.custom-theme .el-select-dropdown__wrap { + max-height: 274px; +} + +.custom-theme .el-select-dropdown__list { + list-style: none; + padding: 6px 0; + margin: 0; + box-sizing: border-box; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-tag { + background-color: rgb(131, 139, 165); + display: inline-block; + padding: 0 5px; + height: 24px; + line-height: 22px; + font-size: 12px; + color: #fff; + border-radius: 4px; + box-sizing: border-box; + border: 1px solid transparent; + white-space: nowrap; +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + transform: scale(.75, .75); + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -2px; +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #fff; + color: rgb(131, 139, 165); +} + +.custom-theme .el-tag--gray { + background-color: rgb(228, 230, 241); + border-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--gray .el-tag__close:hover { + background-color: rgb(72, 81, 106); + color: #fff; +} + +.custom-theme .el-tag--gray.is-hit { + border-color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--primary { + background-color: rgba(7, 48, 105, 0.1); + border-color: rgba(7, 48, 105, 0.2); + color: #073069; +} + +.custom-theme .el-tag--primary .el-tag__close:hover { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-tag--primary.is-hit { + border-color: #073069; +} + +.custom-theme .el-tag--success { + background-color: rgba(18,206,102,0.10); + border-color: rgba(18,206,102,0.20); + color: #00643b; +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #00643b; + color: #fff; +} + +.custom-theme .el-tag--success.is-hit { + border-color: #00643b; +} + +.custom-theme .el-tag--warning { + background-color: rgba(247,186,41,0.10); + border-color: rgba(247,186,41,0.20); + color: #f56a00; +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #f56a00; + color: #fff; +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #f56a00; +} + +.custom-theme .el-tag--danger { + background-color: rgba(255,73,73,0.10); + border-color: rgba(255,73,73,0.20); + color: #ffbf00; +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #ffbf00; + color: #fff; +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #ffbf00; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-select-dropdown__item { + font-size: 14px; + padding: 8px 10px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: rgb(72, 81, 106); + height: 36px; + line-height: 1.5; + box-sizing: border-box; + cursor: pointer; +} + +.custom-theme .el-select-dropdown__item.hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-select-dropdown__item.selected { + color: #fff; + background-color: #073069; +} + +.custom-theme .el-select-dropdown__item.selected.hover { + background-color: rgb(6, 42, 92); +} + +.custom-theme .el-select-dropdown__item span { + line-height: 1.5 !important; +} + +.custom-theme .el-select-dropdown__item.is-disabled { + color: rgb(191, 199, 217); + cursor: not-allowed; +} + +.custom-theme .el-select-dropdown__item.is-disabled:hover { + background-color: #fff; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-select-group { + margin: 0; + padding: 0; +} + +.custom-theme .el-select-group .el-select-dropdown__item { + padding-left: 20px; +} + +.custom-theme .el-select-group__wrap { + list-style: none; + margin: 0; + padding: 0; +} + +.custom-theme .el-select-group__title { + padding-left: 10px; + font-size: 12px; + color: #999; + height: 30px; + line-height: 30px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative; +} + +.custom-theme .el-scrollbar:hover .el-scrollbar__bar, +.custom-theme .el-scrollbar:active .el-scrollbar__bar, +.custom-theme .el-scrollbar:focus .el-scrollbar__bar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; +} + + + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0; +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(151, 161, 190, 0.3); + transition: .3s background-color; +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(151, 161, 190, 0.5); +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + transition: opacity 120ms ease-out; +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px; +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100%; +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px; +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100%; +} + +.custom-theme .el-select { + display: inline-block; + position: relative; +} + +.custom-theme .el-select:hover .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-select .el-input__inner { + cursor: pointer; +} + +.custom-theme .el-select .el-input__inner:focus { + border-color: #073069; +} + + + +.custom-theme .el-select .el-input .el-input__icon { + color: rgb(191, 199, 217); + font-size: 12px; + transition: transform .3s; + transform: translateY(-50%) rotateZ(180deg); + line-height: 16px; + top: 50%; + cursor: pointer; +} + +.custom-theme .el-select .el-input .el-input__icon.is-show-close { + transition: 0s; + width: 16px; + height: 16px; + font-size: 14px; + right: 8px; + text-align: center; + transform: translateY(-50%) rotateZ(180deg); + border-radius: 100%; + color: rgb(191, 199, 217); +} + +.custom-theme .el-select .el-input .el-input__icon.is-show-close:hover { + color: rgb(151, 161, 190); +} + +.custom-theme .el-select .el-input .el-input__icon.is-reverse { + transform: translateY(-50%); +} + + + +.custom-theme .el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed; +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover { + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-select > .el-input { + display: block; +} + +.custom-theme .el-select .el-tag__close { + margin-top: -2px; +} + +.custom-theme .el-select .el-tag { + height: 24px; + line-height: 24px; + box-sizing: border-box; + margin: 3px 0 3px 6px; +} + +.custom-theme .el-select__input { + border: none; + outline: none; + padding: 0; + margin-left: 10px; + color: #666; + font-size: 14px; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent; +} + +.custom-theme .el-select__input.is-mini { + height: 14px; +} + +.custom-theme .el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: rgb(191, 199, 217); + line-height: 18px; + font-size: 12px; +} + +.custom-theme .el-select__close:hover { + color: rgb(151, 161, 190); +} + +.custom-theme .el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1000; + top: 50%; + transform: translateY(-50%); +} + +.custom-theme .el-select__tag { + display: inline-block; + height: 24px; + line-height: 24px; + font-size: 14px; + border-radius: 4px; + color: #fff; + background-color: #073069; +} + +.custom-theme .el-select__tag .el-icon-close { + font-size: 12px; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-pagination { + white-space: nowrap; + padding: 2px 5px; + color: rgb(72, 81, 106); +} + +.custom-theme .el-pagination:before, +.custom-theme .el-pagination:after { + display: table; + content: ""; +} + +.custom-theme .el-pagination:after { + clear: both; +} + +.custom-theme .el-pagination span, +.custom-theme .el-pagination button { + display: inline-block; + font-size: 13px; + min-width: 28px; + height: 28px; + line-height: 28px; + vertical-align: top; + box-sizing: border-box; +} + +.custom-theme .el-pagination .el-select .el-input { + width: 110px; +} + +.custom-theme .el-pagination .el-select .el-input input { + padding-right: 25px; + border-radius: 2px; + height: 28px; +} + +.custom-theme .el-pagination button { + border: none; + padding: 0 6px; + background: transparent; +} + +.custom-theme .el-pagination button:focus { + outline: none; +} + +.custom-theme .el-pagination button:hover { + color: #073069; +} + +.custom-theme .el-pagination button.disabled { + color: #e4e4e4; + background-color: #fff; + cursor: not-allowed; +} + +.custom-theme .el-pagination .btn-prev, +.custom-theme .el-pagination .btn-next { + background: center center no-repeat; + background-size: 16px; + background-color: #fff; + border: 1px solid rgb(209, 215, 229); + cursor: pointer; + margin: 0; + color: rgb(151, 161, 190); +} + +.custom-theme .el-pagination .btn-prev .el-icon, +.custom-theme .el-pagination .btn-next .el-icon { + display: block; + font-size: 12px; +} + +.custom-theme .el-pagination .btn-prev { + border-radius: 2px 0 0 2px; + border-right: 0; +} + +.custom-theme .el-pagination .btn-next { + border-radius: 0 2px 2px 0; + border-left: 0; +} + +.custom-theme .el-pagination--small .btn-prev, +.custom-theme .el-pagination--small .btn-next, +.custom-theme .el-pagination--small .el-pager li, +.custom-theme .el-pagination--small .el-pager li:last-child { + border-color: transparent; + font-size: 12px; + line-height: 22px; + height: 22px; + min-width: 22px; +} + +.custom-theme .el-pagination--small .arrow.disabled { + visibility: hidden; +} + +.custom-theme .el-pagination--small .el-pager li { + border-radius: 2px; +} + +.custom-theme .el-pagination__sizes { + margin: 0 10px 0 0; +} + +.custom-theme .el-pagination__sizes .el-input .el-input__inner { + font-size: 13px; + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-pagination__sizes .el-input .el-input__inner:hover { + border-color: #073069; +} + +.custom-theme .el-pagination__jump { + margin-left: 10px; +} + +.custom-theme .el-pagination__total { + margin: 0 10px; +} + +.custom-theme .el-pagination__rightwrapper { + float: right; +} + +.custom-theme .el-pagination__editor { + border: 1px solid rgb(209, 215, 229); + border-radius: 2px; + line-height: 18px; + padding: 4px 2px; + width: 30px; + text-align: center; + margin: 0 6px; + box-sizing: border-box; + transition: border .3s; +} + +.custom-theme .el-pagination__editor::-webkit-inner-spin-button, +.custom-theme .el-pagination__editor::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.custom-theme .el-pagination__editor:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-pager { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + list-style: none; + display: inline-block; + vertical-align: top; + font-size: 0; + padding: 0; + margin: 0; +} + +.custom-theme .el-pager li { + padding: 0 4px; + border: 1px solid rgb(209, 215, 229); + border-right: 0; + background: #fff; + vertical-align: top; + display: inline-block; + font-size: 13px; + min-width: 28px; + height: 28px; + line-height: 28px; + cursor: pointer; + box-sizing: border-box; + text-align: center; + margin: 0; +} + +.custom-theme .el-pager li:last-child { + border-right: 1px solid rgb(209, 215, 229); +} + +.custom-theme .el-pager li.btn-quicknext, +.custom-theme .el-pager li.btn-quickprev { + line-height: 28px; + color: rgb(151, 161, 190); +} + +.custom-theme .el-pager li.btn-quickprev:hover { + cursor: pointer; +} + +.custom-theme .el-pager li.btn-quicknext:hover { + cursor: pointer; +} + +.custom-theme .el-pager li.active + li { + border-left: 0; + padding-left: 5px; +} + +.custom-theme .el-pager li:hover { + color: #073069; +} + +.custom-theme .el-pager li.active { + border-color: #073069; + background-color: #073069; + color: #fff; + cursor: default; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .v-modal-enter { + animation: v-modal-in .2s ease; +} + +.custom-theme .v-modal-leave { + animation: v-modal-out .2s ease forwards; +} + +@keyframes v-modal-in { + 0% { + opacity: 0; + } + + 100% { + + } +} + +@keyframes v-modal-out { + 0% { + + } + + 100% { + opacity: 0; + } +} + +.custom-theme .v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.5; + background: #000; +} + +.custom-theme .el-dialog { + position: absolute; + left: 50%; + transform: translateX(-50%); + background: #fff; + border-radius: 2px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + box-sizing: border-box; +} + +.custom-theme .el-dialog--tiny { + width: 30%; +} + +.custom-theme .el-dialog--small { + width: 50%; +} + +.custom-theme .el-dialog--large { + width: 90%; +} + +.custom-theme .el-dialog--full { + width: 100%; + top: 0; + height: 100%; + overflow: auto; +} + +.custom-theme .el-dialog__wrapper { + top: 0; + right: 0; + bottom: 0; + left: 0; + position: fixed; + overflow: auto; + margin: 0; +} + +.custom-theme .el-dialog__header { + padding: 20px 20px 0; +} + +.custom-theme .el-dialog__close { + cursor: pointer; + color: rgb(191, 199, 217); +} + +.custom-theme .el-dialog__close:hover { + color: #073069; +} + +.custom-theme .el-dialog__title { + line-height: 1; + font-size: 16px; + font-weight: 700; + color: rgb(31, 40, 61); +} + +.custom-theme .el-dialog__body { + padding: 30px 20px; + color: rgb(72, 81, 106); + font-size: 14px; +} + +.custom-theme .el-dialog__headerbtn { + float: right; +} + +.custom-theme .el-dialog__footer { + padding: 10px 20px 15px; + text-align: right; + box-sizing: border-box; +} + +.custom-theme .dialog-fade-enter-active { + animation: dialog-fade-in .3s; +} + +.custom-theme .dialog-fade-leave-active { + animation: dialog-fade-out .3s; +} + +@keyframes dialog-fade-in { + 0% { + transform: translate3d(0, -20px, 0); + opacity: 0; + } + + 100% { + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes dialog-fade-out { + 0% { + transform: translate3d(0, 0, 0); + opacity: 1; + } + + 100% { + transform: translate3d(0, -20px, 0); + opacity: 0; + } +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-autocomplete { + position: relative; + display: inline-block; +} + +.custom-theme .el-autocomplete-suggestion { + margin: 5px 0; + box-shadow: 0 0 6px 0 rgba(0,0,0,0.04), 0 2px 4px 0 rgba(0,0,0,0.12); +} + +.custom-theme .el-autocomplete-suggestion li { + list-style: none; + line-height: 36px; + padding: 0 10px; + margin: 0; + cursor: pointer; + color: rgb(72, 81, 106); + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.custom-theme .el-autocomplete-suggestion li:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-autocomplete-suggestion li.highlighted { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-autocomplete-suggestion li:active { + background-color: rgb(6, 39, 86); +} + +.custom-theme .el-autocomplete-suggestion li.divider { + margin-top: 6px; + border-top: 1px solid rgb(209, 215, 229); +} + +.custom-theme .el-autocomplete-suggestion li.divider:last-child { + margin-bottom: -6px; +} + +.custom-theme .el-autocomplete-suggestion.is-loading li { + text-align: center; + height: 100px; + line-height: 100px; + font-size: 20px; + color: #999; +} + +.custom-theme .el-autocomplete-suggestion.is-loading li:hover { + background-color: #fff; +} + +.custom-theme .el-autocomplete-suggestion.is-loading .el-icon-loading { + vertical-align: middle; +} + +.custom-theme .el-autocomplete-suggestion__wrap { + max-height: 280px; + overflow: auto; + background-color: #fff; + border: 1px solid rgb(209, 215, 229); + padding: 6px 0; + border-radius: 2px; + box-sizing: border-box; +} + +.custom-theme .el-autocomplete-suggestion__list { + margin: 0; + padding: 0; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} + +.custom-theme .el-button + .el-button { + margin-left: 10px; +} + +.custom-theme .el-button:hover, +.custom-theme .el-button:focus { + color: #073069; + border-color: #073069; +} + +.custom-theme .el-button:active { + color: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0; +} + + + +.custom-theme .el-button [class*="el-icon-"] + span { + margin-left: 5px; +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none; +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255,255,255,.35); +} + + + +.custom-theme .el-button.is-disabled, +.custom-theme .el-button.is-disabled:hover, +.custom-theme .el-button.is-disabled:focus { + color: rgb(191, 199, 217); + cursor: not-allowed; + background-image: none; + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent; +} + + + +.custom-theme .el-button.is-disabled.is-plain, +.custom-theme .el-button.is-disabled.is-plain:hover, +.custom-theme .el-button.is-disabled.is-plain:focus { + background-color: #fff; + border-color: rgb(209, 215, 229); + color: rgb(191, 199, 217); +} + +.custom-theme .el-button.is-active { + color: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); +} + + + +.custom-theme .el-button.is-plain:hover, +.custom-theme .el-button.is-plain:focus { + background: #fff; + border-color: #073069; + color: #073069; +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: rgb(6, 43, 95); + color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #073069; + border-color: #073069; +} + +.custom-theme .el-button--primary:hover, +.custom-theme .el-button--primary:focus { + background: rgb(57, 89, 135); + border-color: rgb(57, 89, 135); + color: #fff; +} + +.custom-theme .el-button--primary:active { + background: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + color: #fff; + outline: none; +} + +.custom-theme .el-button--primary.is-active { + background: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + color: #fff; +} + +.custom-theme .el-button--primary.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--primary.is-plain:hover, +.custom-theme .el-button--primary.is-plain:focus { + background: #fff; + border-color: #073069; + color: #073069; +} + +.custom-theme .el-button--primary.is-plain:active { + background: #fff; + border-color: rgb(6, 43, 95); + color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #00643b; + border-color: #00643b; +} + +.custom-theme .el-button--success:hover, +.custom-theme .el-button--success:focus { + background: rgb(51, 131, 98); + border-color: rgb(51, 131, 98); + color: #fff; +} + +.custom-theme .el-button--success:active { + background: rgb(0, 90, 53); + border-color: rgb(0, 90, 53); + color: #fff; + outline: none; +} + +.custom-theme .el-button--success.is-active { + background: rgb(0, 90, 53); + border-color: rgb(0, 90, 53); + color: #fff; +} + +.custom-theme .el-button--success.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--success.is-plain:hover, +.custom-theme .el-button--success.is-plain:focus { + background: #fff; + border-color: #00643b; + color: #00643b; +} + +.custom-theme .el-button--success.is-plain:active { + background: #fff; + border-color: rgb(0, 90, 53); + color: rgb(0, 90, 53); + outline: none; +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #f56a00; + border-color: #f56a00; +} + +.custom-theme .el-button--warning:hover, +.custom-theme .el-button--warning:focus { + background: rgb(247, 136, 51); + border-color: rgb(247, 136, 51); + color: #fff; +} + +.custom-theme .el-button--warning:active { + background: rgb(221, 95, 0); + border-color: rgb(221, 95, 0); + color: #fff; + outline: none; +} + +.custom-theme .el-button--warning.is-active { + background: rgb(221, 95, 0); + border-color: rgb(221, 95, 0); + color: #fff; +} + +.custom-theme .el-button--warning.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--warning.is-plain:hover, +.custom-theme .el-button--warning.is-plain:focus { + background: #fff; + border-color: #f56a00; + color: #f56a00; +} + +.custom-theme .el-button--warning.is-plain:active { + background: #fff; + border-color: rgb(221, 95, 0); + color: rgb(221, 95, 0); + outline: none; +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #ffbf00; + border-color: #ffbf00; +} + +.custom-theme .el-button--danger:hover, +.custom-theme .el-button--danger:focus { + background: rgb(255, 204, 51); + border-color: rgb(255, 204, 51); + color: #fff; +} + +.custom-theme .el-button--danger:active { + background: rgb(230, 172, 0); + border-color: rgb(230, 172, 0); + color: #fff; + outline: none; +} + +.custom-theme .el-button--danger.is-active { + background: rgb(230, 172, 0); + border-color: rgb(230, 172, 0); + color: #fff; +} + +.custom-theme .el-button--danger.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--danger.is-plain:hover, +.custom-theme .el-button--danger.is-plain:focus { + background: #fff; + border-color: #ffbf00; + color: #ffbf00; +} + +.custom-theme .el-button--danger.is-plain:active { + background: #fff; + border-color: rgb(230, 172, 0); + color: rgb(230, 172, 0); + outline: none; +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #00a2ae; + border-color: #00a2ae; +} + +.custom-theme .el-button--info:hover, +.custom-theme .el-button--info:focus { + background: rgb(51, 181, 190); + border-color: rgb(51, 181, 190); + color: #fff; +} + +.custom-theme .el-button--info:active { + background: rgb(0, 146, 157); + border-color: rgb(0, 146, 157); + color: #fff; + outline: none; +} + +.custom-theme .el-button--info.is-active { + background: rgb(0, 146, 157); + border-color: rgb(0, 146, 157); + color: #fff; +} + +.custom-theme .el-button--info.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--info.is-plain:hover, +.custom-theme .el-button--info.is-plain:focus { + background: #fff; + border-color: #00a2ae; + color: #00a2ae; +} + +.custom-theme .el-button--info.is-plain:active { + background: #fff; + border-color: rgb(0, 146, 157); + color: rgb(0, 146, 157); + outline: none; +} + +.custom-theme .el-button--large { + padding: 11px 19px; + font-size: 16px; + border-radius: 4px; +} + +.custom-theme .el-button--small { + padding: 7px 9px; + font-size: 12px; + border-radius: 4px; +} + +.custom-theme .el-button--mini { + padding: 4px 4px; + font-size: 12px; + border-radius: 4px; +} + +.custom-theme .el-button--text { + border: none; + color: #073069; + background: transparent; + padding-left: 0; + padding-right: 0; +} + +.custom-theme .el-button--text:hover, +.custom-theme .el-button--text:focus { + color: rgb(57, 89, 135); +} + +.custom-theme .el-button--text:active { + color: rgb(6, 43, 95); +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle; +} + + + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative; +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0; +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px; +} + +.custom-theme .el-button-group .el-button:hover, +.custom-theme .el-button-group .el-button:focus, +.custom-theme .el-button-group .el-button:active { + z-index: 1; +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1; +} + +.custom-theme .el-dropdown { + display: inline-block; + position: relative; + color: rgb(72, 81, 106); + font-size: 14px; +} + +.custom-theme .el-dropdown .el-button-group { + display: block; +} + +.custom-theme .el-dropdown .el-dropdown__caret-button { + padding-right: 5px; + padding-left: 5px; +} + +.custom-theme .el-dropdown .el-dropdown__caret-button .el-dropdown__icon { + padding-left: 0; +} + +.custom-theme .el-dropdown__icon { + font-size: 12px; + margin: 0 3px; +} + +.custom-theme .el-dropdown-menu { + margin: 5px 0; + background-color: #fff; + border: 1px solid rgb(209, 215, 229); + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12); + padding: 6px 0; + z-index: 10; + position: absolute; + top: 0; + left: 0; + min-width: 100px; +} + +.custom-theme .el-dropdown-menu__item { + list-style: none; + line-height: 36px; + padding: 0 10px; + margin: 0; + cursor: pointer; +} + +.custom-theme .el-dropdown-menu__item:not(.is-disabled):hover { + background-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-dropdown-menu__item.is-disabled { + cursor: default; + color: rgb(191, 199, 217); + pointer-events: none; +} + +.custom-theme .el-dropdown-menu__item--divided { + position: relative; + margin-top: 6px; + border-top: 1px solid rgb(209, 215, 229); +} + +.custom-theme .el-dropdown-menu__item--divided:before { + content: ''; + height: 6px; + display: block; + margin: 0 -10px; + background-color: #fff; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-menu-item, +.custom-theme .el-submenu__title { + height: 56px; + line-height: 56px; + font-size: 14px; + color: rgb(72, 81, 106); + padding: 0 20px; + cursor: pointer; + position: relative; + transition: border-color .3s, background-color .3s, color .3s; + box-sizing: border-box; + white-space: nowrap; +} + +.custom-theme .el-menu { + border-radius: 2px; + list-style: none; + position: relative; + margin: 0; + padding-left: 0; + background-color: rgb(238, 240, 246); +} + +.custom-theme .el-menu:before, +.custom-theme .el-menu:after { + display: table; + content: ""; +} + +.custom-theme .el-menu:after { + clear: both; +} + +.custom-theme .el-menu li { + list-style: none; +} + +.custom-theme .el-menu--dark { + background-color: #00a2ae; +} + +.custom-theme .el-menu--dark .el-menu-item, +.custom-theme .el-menu--dark .el-submenu__title { + color: rgb(191, 199, 217); +} + +.custom-theme .el-menu--dark .el-menu-item:hover, +.custom-theme .el-menu--dark .el-submenu__title:hover { + background-color: rgb(72, 81, 106); +} + +.custom-theme .el-menu--dark .el-submenu .el-menu { + background-color: rgb(31, 40, 61); +} + +.custom-theme .el-menu--dark .el-submenu .el-menu .el-menu-item:hover { + background-color: rgb(72, 81, 106); +} + + + +.custom-theme .el-menu--horizontal .el-menu-item { + float: left; + height: 60px; + line-height: 60px; + margin: 0; + cursor: pointer; + position: relative; + box-sizing: border-box; + border-bottom: 5px solid transparent; +} + +.custom-theme .el-menu--horizontal .el-menu-item a, +.custom-theme .el-menu--horizontal .el-menu-item a:hover { + color: inherit; +} + +.custom-theme .el-menu--horizontal .el-menu-item:hover { + background-color: rgb(209, 215, 229); +} + +.custom-theme .el-menu--horizontal .el-submenu { + float: left; + position: relative; +} + +.custom-theme .el-menu--horizontal .el-submenu > .el-menu { + position: absolute; + top: 65px; + left: 0; + border: 1px solid rgb(209, 215, 229); + padding: 5px 0; + background-color: #fff; + z-index: 100; + min-width: 100%; + box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.12), 0px 0px 6px 0px rgba(0,0,0,0.04); +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title { + height: 60px; + line-height: 60px; + border-bottom: 5px solid transparent; +} + +.custom-theme .el-menu--horizontal .el-submenu .el-menu-item { + background-color: #fff; + float: none; + height: 36px; + line-height: 36px; + padding: 0 10px; +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__icon-arrow { + position: static; + vertical-align: middle; + margin-left: 5px; + color: rgb(151, 161, 190); + margin-top: -3px; +} + +.custom-theme .el-menu--horizontal .el-menu-item:hover, +.custom-theme .el-menu--horizontal .el-submenu__title:hover { + background-color: rgb(238, 240, 246); +} + +.custom-theme .el-menu--horizontal > .el-menu-item:hover, +.custom-theme .el-menu--horizontal > .el-submenu:hover .el-submenu__title, +.custom-theme .el-menu--horizontal > .el-submenu.is-active .el-submenu__title { + border-bottom: 5px solid #073069; +} + + + +.custom-theme .el-menu--horizontal.el-menu--dark .el-menu-item:hover, +.custom-theme .el-menu--horizontal.el-menu--dark .el-submenu__title:hover { + background-color: rgb(50, 58, 87); +} + +.custom-theme .el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item, +.custom-theme .el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title { + color: rgb(72, 81, 106); +} + +.custom-theme .el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item:hover, +.custom-theme .el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title:hover { + background-color: rgb(209, 215, 229); +} + +.custom-theme .el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item.is-active { + color: #073069; +} + +.custom-theme .el-menu-item [class^="el-icon-"] { + vertical-align: baseline; + margin-right: 10px; +} + +.custom-theme .el-menu-item:first-child { + margin-left: 0; +} + +.custom-theme .el-menu-item:last-child { + margin-right: 0; +} + +.custom-theme .el-menu-item:hover { + background-color: rgb(209, 215, 229); +} + +.custom-theme .el-menu-item.is-active { + color: #073069; +} + +.custom-theme .el-submenu [class^="el-icon-"] { + vertical-align: baseline; + margin-right: 10px; +} + +.custom-theme .el-submenu .el-menu { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-submenu .el-menu-item { + height: 50px; + line-height: 50px; + padding: 0 45px; +} + +.custom-theme .el-submenu .el-menu-item:hover { + background-color: rgb(209, 215, 229); +} + +.custom-theme .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + transform: rotateZ(180deg); +} + +.custom-theme .el-submenu.is-active .el-submenu__title { + border-bottom-color: #073069; +} + +.custom-theme .el-submenu__title { + position: relative; +} + +.custom-theme .el-submenu__title:hover { + background-color: rgb(209, 215, 229); +} + +.custom-theme .el-submenu__icon-arrow { + position: absolute; + top: 50%; + right: 20px; + margin-top: -7px; + transition: transform .3s; + font-size: 12px; +} + +.custom-theme .el-menu-item-group > ul { + padding: 0; +} + +.custom-theme .el-menu-item-group__title { + padding-top: 15px; + line-height: normal; + font-size: 14px; + padding-left: 20px; + color: rgb(151, 161, 190); +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input-number { + display: inline-block; + overflow: hidden; + width: 180px; + position: relative; +} + +.custom-theme .el-input-number .el-input { + display: block; +} + +.custom-theme .el-input-number .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-right: 82px; +} + + + +.custom-theme .el-input-number.is-without-controls .el-input__inner { + padding-right: 10px; +} + +.custom-theme .el-input-number.is-disabled .el-input-number__increase, +.custom-theme .el-input-number.is-disabled .el-input-number__decrease { + border-color: rgb(209, 215, 229); + color: rgb(209, 215, 229); +} + +.custom-theme .el-input-number.is-disabled .el-input-number__increase:hover, +.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-input-number__increase, +.custom-theme .el-input-number__decrease { + height: auto; + border-left: 1px solid rgb(191, 199, 217); + width: 36px; + line-height: 34px; + top: 1px; + text-align: center; + color: rgb(151, 161, 190); + cursor: pointer; + position: absolute; + z-index: 1; +} + +.custom-theme .el-input-number__increase:hover, +.custom-theme .el-input-number__decrease:hover { + color: #073069; +} + +.custom-theme .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), +.custom-theme .el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #073069; +} + +.custom-theme .el-input-number__increase.is-disabled, +.custom-theme .el-input-number__decrease.is-disabled { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-input-number__increase { + right: 0; +} + +.custom-theme .el-input-number__decrease { + right: 37px; +} + +.custom-theme .el-input-number--large { + width: 200px; +} + +.custom-theme .el-input-number--large .el-input-number__increase, +.custom-theme .el-input-number--large .el-input-number__decrease { + line-height: 42px; + width: 42px; + font-size: 16px; +} + +.custom-theme .el-input-number--large .el-input-number__decrease { + right: 43px; +} + +.custom-theme .el-input-number--large .el-input__inner { + padding-right: 94px; +} + +.custom-theme .el-input-number--small { + width: 130px; +} + +.custom-theme .el-input-number--small .el-input-number__increase, +.custom-theme .el-input-number--small .el-input-number__decrease { + line-height: 30px; + width: 30px; + font-size: 13px; +} + +.custom-theme .el-input-number--small .el-input-number__decrease { + right: 31px; +} + +.custom-theme .el-input-number--small .el-input__inner { + padding-right: 70px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-radio { + color: rgb(31, 40, 61); + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} + +.custom-theme .el-radio + .el-radio { + margin-left: 15px; +} + +.custom-theme .el-radio__input { + white-space: nowrap; + cursor: pointer; + outline: none; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle; +} + +.custom-theme .el-radio__input.is-focus .el-radio__inner { + border-color: #073069; +} + +.custom-theme .el-radio__input.is-checked .el-radio__inner { + border-color: #073069; + background: #073069; +} + +.custom-theme .el-radio__input.is-checked .el-radio__inner::after { + transform: translate(-50%, -50%) scale(1); +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner::after { + cursor: not-allowed; + background-color: rgb(238, 240, 246); +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner + .el-radio__label { + cursor: not-allowed; +} + +.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner::after { + background-color: #fff; +} + +.custom-theme .el-radio__input.is-disabled + .el-radio__label { + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-radio__inner { + border: 1px solid rgb(191, 199, 217); + border-radius: 100%; + width: 18px; + height: 18px; + border-radius: 50%; + background-color: #fff; + position: relative; + cursor: pointer; + display: inline-block; + box-sizing: border-box; +} + +.custom-theme .el-radio__inner:hover { + border-color: #073069; +} + +.custom-theme .el-radio__inner::after { + width: 6px; + height: 6px; + border-radius: 50%; + background-color: #fff; + content: ""; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%) scale(0); + transition: transform .15s cubic-bezier(.71,-.46,.88,.6); +} + +.custom-theme .el-radio__original { + opacity: 0; + outline: none; + position: absolute; + z-index: -1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0; +} + +.custom-theme .el-radio__label { + font-size: 14px; + padding-left: 5px; +} + +.custom-theme .el-radio-group { + display: inline-block; + font-size: 0; + line-height: 1; +} + +.custom-theme .el-radio-group .el-radio { + font-size: 14px; +} + +.custom-theme .el-radio-button { + position: relative; + display: inline-block; +} + +.custom-theme .el-radio-button:first-child .el-radio-button__inner { + border-left: 1px solid rgb(191, 199, 217); + border-radius: 4px 0 0 4px; + box-shadow: none !important; +} + +.custom-theme .el-radio-button:last-child .el-radio-button__inner { + border-radius: 0 4px 4px 0; +} + +.custom-theme .el-radio-button__inner { + display: inline-block; + line-height: 1; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid rgb(191, 199, 217); + border-left: 0; + color: rgb(31, 40, 61); + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + position: relative; + cursor: pointer; + transition: all .3s cubic-bezier(.645,.045,.355,1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 10px 15px; + font-size: 14px; + border-radius: 0; +} + +.custom-theme .el-radio-button__inner:hover { + color: #073069; +} + +.custom-theme .el-radio-button__inner [class*="el-icon-"] { + line-height: 0.9; +} + +.custom-theme .el-radio-button__inner [class*="el-icon-"] + span { + margin-left: 5px; +} + +.custom-theme .el-radio-button__orig-radio { + opacity: 0; + outline: none; + position: absolute; + z-index: -1; + left: -999px; +} + + + +.custom-theme .el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: #fff; + background-color: #073069; + border-color: #073069; + box-shadow: -1px 0 0 0 #073069; +} + + + +.custom-theme .el-radio-button__orig-radio:disabled + .el-radio-button__inner { + color: rgb(191, 199, 217); + cursor: not-allowed; + background-image: none; + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); +} + + + +.custom-theme .el-radio-button--large .el-radio-button__inner { + padding: 11px 19px; + font-size: 16px; + border-radius: 0; +} + + + +.custom-theme .el-radio-button--small .el-radio-button__inner { + padding: 7px 9px; + font-size: 12px; + border-radius: 0; +} + + + +.custom-theme .el-radio-button--mini .el-radio-button__inner { + padding: 4px 4px; + font-size: 12px; + border-radius: 0; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-checkbox { + color: rgb(31, 40, 61); + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 15px; +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: none; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle; +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #073069; + border-color: rgb(1, 43, 101); +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + border: 1px solid #fff; + margin-top: -1px; + left: 3px; + right: 3px; + top: 50%; +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none; +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #073069; +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #073069; + border-color: rgb(1, 43, 101); +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + transform: rotate(45deg) scaleY(1); +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: rgb(238, 240, 246); +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed; +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #fff; +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + border-color: #fff; +} + +.custom-theme .el-checkbox__input.is-disabled + .el-checkbox__label { + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + box-sizing: border-box; + width: 18px; + height: 18px; + background-color: #fff; + z-index: 1; + transition: border-color .25s cubic-bezier(.71,-.46,.29,1.46), + background-color .25s cubic-bezier(.71,-.46,.29,1.46); +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #073069; +} + +.custom-theme .el-checkbox__inner::after { + box-sizing: content-box; + content: ""; + border: 2px solid #fff; + border-left: 0; + border-top: 0; + height: 8px; + left: 5px; + position: absolute; + top: 1px; + transform: rotate(45deg) scaleY(0); + width: 4px; + transition: transform .15s cubic-bezier(.71,-.46,.88,.6) .05s; + transform-origin: center; +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: none; + position: absolute; + margin: 0; + left: -999px; +} + +.custom-theme .el-checkbox__label { + font-size: 14px; + padding-left: 5px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-switch { + display: inline-block; + position: relative; + font-size: 14px; + line-height: 22px; + height: 22px; + vertical-align: middle; +} + +.custom-theme .el-switch .label-fade-enter, +.custom-theme .el-switch .label-fade-leave-active { + opacity: 0; +} + +.custom-theme .el-switch.is-disabled .el-switch__core { + border-color: rgb(228, 230, 241) !important; + background: rgb(228, 230, 241) !important; +} + +.custom-theme .el-switch.is-disabled .el-switch__core span { + background-color: rgb(250, 251, 252) !important; +} + +.custom-theme .el-switch.is-disabled .el-switch__core ~ .el-switch__label * { + color: rgb(250, 251, 252) !important; +} + +.custom-theme .el-switch.is-disabled .el-switch__input:checked + .el-switch__core { + border-color: rgb(228, 230, 241); + background-color: rgb(228, 230, 241); +} + + + +.custom-theme .el-switch.is-disabled .el-switch__core, +.custom-theme .el-switch.is-disabled .el-switch__label { + cursor: not-allowed; +} + +.custom-theme .el-switch__label { + transition: .2s; + position: absolute; + z-index: 10; + width: 46px; + height: 22px; + left: 0; + top: 0; + display: inline-block; + font-size: 14px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-theme .el-switch__label * { + line-height: 1; + top: 4px; + position: absolute; + font-size: 14px; + display: inline-block; + color: #fff; +} + +.custom-theme .el-switch__label--left i { + left: 6px; +} + +.custom-theme .el-switch__label--right i { + right: 6px; +} + +.custom-theme .el-switch__input { + display: none; +} + +.custom-theme .el-switch__input:checked + .el-switch__core { + border-color: #073069; + background-color: #073069; +} + +.custom-theme .el-switch__core { + margin: 0; + display: inline-block; + position: relative; + width: 46px; + height: 22px; + border: 1px solid rgb(191, 199, 217); + outline: none; + border-radius: 12px; + box-sizing: border-box; + background: rgb(191, 199, 217); + cursor: pointer; + transition: border-color .3s, background-color .3s; +} + +.custom-theme .el-switch__core .el-switch__button { + top: 0; + left: 0; + position: absolute; + border-radius: 100%; + transition: transform .3s; + width: 16px; + height: 16px; + z-index: 20; + background-color: #fff; +} + + + +.custom-theme .el-switch--wide .el-switch__label.el-switch__label--left span { + left: 10px; +} + +.custom-theme .el-switch--wide .el-switch__label.el-switch__label--right span { + right: 10px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-select-dropdown { + position: absolute; + z-index: 1001; + border: solid 1px rgb(209, 215, 229); + border-radius: 2px; + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); + box-sizing: border-box; + margin: 5px 0; +} + +.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list { + padding: 0; +} + + + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: #073069; + background-color: #fff; +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after { + position: absolute; + right: 10px; + font-family: 'element-icons'; + content: "\E608"; + font-size: 11px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.custom-theme .el-select-dropdown__empty { + padding: 10px 0; + margin: 0; + text-align: center; + color: #999; + font-size: 14px; +} + +.custom-theme .el-select-dropdown__wrap { + max-height: 274px; +} + +.custom-theme .el-select-dropdown__list { + list-style: none; + padding: 6px 0; + margin: 0; + box-sizing: border-box; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-tag { + background-color: rgb(131, 139, 165); + display: inline-block; + padding: 0 5px; + height: 24px; + line-height: 22px; + font-size: 12px; + color: #fff; + border-radius: 4px; + box-sizing: border-box; + border: 1px solid transparent; + white-space: nowrap; +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + transform: scale(.75, .75); + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -2px; +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #fff; + color: rgb(131, 139, 165); +} + +.custom-theme .el-tag--gray { + background-color: rgb(228, 230, 241); + border-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--gray .el-tag__close:hover { + background-color: rgb(72, 81, 106); + color: #fff; +} + +.custom-theme .el-tag--gray.is-hit { + border-color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--primary { + background-color: rgba(7, 48, 105, 0.1); + border-color: rgba(7, 48, 105, 0.2); + color: #073069; +} + +.custom-theme .el-tag--primary .el-tag__close:hover { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-tag--primary.is-hit { + border-color: #073069; +} + +.custom-theme .el-tag--success { + background-color: rgba(18,206,102,0.10); + border-color: rgba(18,206,102,0.20); + color: #00643b; +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #00643b; + color: #fff; +} + +.custom-theme .el-tag--success.is-hit { + border-color: #00643b; +} + +.custom-theme .el-tag--warning { + background-color: rgba(247,186,41,0.10); + border-color: rgba(247,186,41,0.20); + color: #f56a00; +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #f56a00; + color: #fff; +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #f56a00; +} + +.custom-theme .el-tag--danger { + background-color: rgba(255,73,73,0.10); + border-color: rgba(255,73,73,0.20); + color: #ffbf00; +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #ffbf00; + color: #fff; +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #ffbf00; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-select-dropdown__item { + font-size: 14px; + padding: 8px 10px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: rgb(72, 81, 106); + height: 36px; + line-height: 1.5; + box-sizing: border-box; + cursor: pointer; +} + +.custom-theme .el-select-dropdown__item.hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-select-dropdown__item.selected { + color: #fff; + background-color: #073069; +} + +.custom-theme .el-select-dropdown__item.selected.hover { + background-color: rgb(6, 42, 92); +} + +.custom-theme .el-select-dropdown__item span { + line-height: 1.5 !important; +} + +.custom-theme .el-select-dropdown__item.is-disabled { + color: rgb(191, 199, 217); + cursor: not-allowed; +} + +.custom-theme .el-select-dropdown__item.is-disabled:hover { + background-color: #fff; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-select-group { + margin: 0; + padding: 0; +} + +.custom-theme .el-select-group .el-select-dropdown__item { + padding-left: 20px; +} + +.custom-theme .el-select-group__wrap { + list-style: none; + margin: 0; + padding: 0; +} + +.custom-theme .el-select-group__title { + padding-left: 10px; + font-size: 12px; + color: #999; + height: 30px; + line-height: 30px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative; +} + +.custom-theme .el-scrollbar:hover .el-scrollbar__bar, +.custom-theme .el-scrollbar:active .el-scrollbar__bar, +.custom-theme .el-scrollbar:focus .el-scrollbar__bar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; +} + + + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0; +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(151, 161, 190, 0.3); + transition: .3s background-color; +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(151, 161, 190, 0.5); +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + transition: opacity 120ms ease-out; +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px; +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100%; +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px; +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100%; +} + +.custom-theme .el-select { + display: inline-block; + position: relative; +} + +.custom-theme .el-select:hover .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-select .el-input__inner { + cursor: pointer; +} + +.custom-theme .el-select .el-input__inner:focus { + border-color: #073069; +} + + + +.custom-theme .el-select .el-input .el-input__icon { + color: rgb(191, 199, 217); + font-size: 12px; + transition: transform .3s; + transform: translateY(-50%) rotateZ(180deg); + line-height: 16px; + top: 50%; + cursor: pointer; +} + +.custom-theme .el-select .el-input .el-input__icon.is-show-close { + transition: 0s; + width: 16px; + height: 16px; + font-size: 14px; + right: 8px; + text-align: center; + transform: translateY(-50%) rotateZ(180deg); + border-radius: 100%; + color: rgb(191, 199, 217); +} + +.custom-theme .el-select .el-input .el-input__icon.is-show-close:hover { + color: rgb(151, 161, 190); +} + +.custom-theme .el-select .el-input .el-input__icon.is-reverse { + transform: translateY(-50%); +} + + + +.custom-theme .el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed; +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover { + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-select > .el-input { + display: block; +} + +.custom-theme .el-select .el-tag__close { + margin-top: -2px; +} + +.custom-theme .el-select .el-tag { + height: 24px; + line-height: 24px; + box-sizing: border-box; + margin: 3px 0 3px 6px; +} + +.custom-theme .el-select__input { + border: none; + outline: none; + padding: 0; + margin-left: 10px; + color: #666; + font-size: 14px; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent; +} + +.custom-theme .el-select__input.is-mini { + height: 14px; +} + +.custom-theme .el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: rgb(191, 199, 217); + line-height: 18px; + font-size: 12px; +} + +.custom-theme .el-select__close:hover { + color: rgb(151, 161, 190); +} + +.custom-theme .el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1000; + top: 50%; + transform: translateY(-50%); +} + +.custom-theme .el-select__tag { + display: inline-block; + height: 24px; + line-height: 24px; + font-size: 14px; + border-radius: 4px; + color: #fff; + background-color: #073069; +} + +.custom-theme .el-select__tag .el-icon-close { + font-size: 12px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} + +.custom-theme .el-button + .el-button { + margin-left: 10px; +} + +.custom-theme .el-button:hover, +.custom-theme .el-button:focus { + color: #073069; + border-color: #073069; +} + +.custom-theme .el-button:active { + color: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0; +} + + + +.custom-theme .el-button [class*="el-icon-"] + span { + margin-left: 5px; +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none; +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255,255,255,.35); +} + + + +.custom-theme .el-button.is-disabled, +.custom-theme .el-button.is-disabled:hover, +.custom-theme .el-button.is-disabled:focus { + color: rgb(191, 199, 217); + cursor: not-allowed; + background-image: none; + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent; +} + + + +.custom-theme .el-button.is-disabled.is-plain, +.custom-theme .el-button.is-disabled.is-plain:hover, +.custom-theme .el-button.is-disabled.is-plain:focus { + background-color: #fff; + border-color: rgb(209, 215, 229); + color: rgb(191, 199, 217); +} + +.custom-theme .el-button.is-active { + color: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); +} + + + +.custom-theme .el-button.is-plain:hover, +.custom-theme .el-button.is-plain:focus { + background: #fff; + border-color: #073069; + color: #073069; +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: rgb(6, 43, 95); + color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #073069; + border-color: #073069; +} + +.custom-theme .el-button--primary:hover, +.custom-theme .el-button--primary:focus { + background: rgb(57, 89, 135); + border-color: rgb(57, 89, 135); + color: #fff; +} + +.custom-theme .el-button--primary:active { + background: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + color: #fff; + outline: none; +} + +.custom-theme .el-button--primary.is-active { + background: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + color: #fff; +} + +.custom-theme .el-button--primary.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--primary.is-plain:hover, +.custom-theme .el-button--primary.is-plain:focus { + background: #fff; + border-color: #073069; + color: #073069; +} + +.custom-theme .el-button--primary.is-plain:active { + background: #fff; + border-color: rgb(6, 43, 95); + color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #00643b; + border-color: #00643b; +} + +.custom-theme .el-button--success:hover, +.custom-theme .el-button--success:focus { + background: rgb(51, 131, 98); + border-color: rgb(51, 131, 98); + color: #fff; +} + +.custom-theme .el-button--success:active { + background: rgb(0, 90, 53); + border-color: rgb(0, 90, 53); + color: #fff; + outline: none; +} + +.custom-theme .el-button--success.is-active { + background: rgb(0, 90, 53); + border-color: rgb(0, 90, 53); + color: #fff; +} + +.custom-theme .el-button--success.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--success.is-plain:hover, +.custom-theme .el-button--success.is-plain:focus { + background: #fff; + border-color: #00643b; + color: #00643b; +} + +.custom-theme .el-button--success.is-plain:active { + background: #fff; + border-color: rgb(0, 90, 53); + color: rgb(0, 90, 53); + outline: none; +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #f56a00; + border-color: #f56a00; +} + +.custom-theme .el-button--warning:hover, +.custom-theme .el-button--warning:focus { + background: rgb(247, 136, 51); + border-color: rgb(247, 136, 51); + color: #fff; +} + +.custom-theme .el-button--warning:active { + background: rgb(221, 95, 0); + border-color: rgb(221, 95, 0); + color: #fff; + outline: none; +} + +.custom-theme .el-button--warning.is-active { + background: rgb(221, 95, 0); + border-color: rgb(221, 95, 0); + color: #fff; +} + +.custom-theme .el-button--warning.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--warning.is-plain:hover, +.custom-theme .el-button--warning.is-plain:focus { + background: #fff; + border-color: #f56a00; + color: #f56a00; +} + +.custom-theme .el-button--warning.is-plain:active { + background: #fff; + border-color: rgb(221, 95, 0); + color: rgb(221, 95, 0); + outline: none; +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #ffbf00; + border-color: #ffbf00; +} + +.custom-theme .el-button--danger:hover, +.custom-theme .el-button--danger:focus { + background: rgb(255, 204, 51); + border-color: rgb(255, 204, 51); + color: #fff; +} + +.custom-theme .el-button--danger:active { + background: rgb(230, 172, 0); + border-color: rgb(230, 172, 0); + color: #fff; + outline: none; +} + +.custom-theme .el-button--danger.is-active { + background: rgb(230, 172, 0); + border-color: rgb(230, 172, 0); + color: #fff; +} + +.custom-theme .el-button--danger.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--danger.is-plain:hover, +.custom-theme .el-button--danger.is-plain:focus { + background: #fff; + border-color: #ffbf00; + color: #ffbf00; +} + +.custom-theme .el-button--danger.is-plain:active { + background: #fff; + border-color: rgb(230, 172, 0); + color: rgb(230, 172, 0); + outline: none; +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #00a2ae; + border-color: #00a2ae; +} + +.custom-theme .el-button--info:hover, +.custom-theme .el-button--info:focus { + background: rgb(51, 181, 190); + border-color: rgb(51, 181, 190); + color: #fff; +} + +.custom-theme .el-button--info:active { + background: rgb(0, 146, 157); + border-color: rgb(0, 146, 157); + color: #fff; + outline: none; +} + +.custom-theme .el-button--info.is-active { + background: rgb(0, 146, 157); + border-color: rgb(0, 146, 157); + color: #fff; +} + +.custom-theme .el-button--info.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--info.is-plain:hover, +.custom-theme .el-button--info.is-plain:focus { + background: #fff; + border-color: #00a2ae; + color: #00a2ae; +} + +.custom-theme .el-button--info.is-plain:active { + background: #fff; + border-color: rgb(0, 146, 157); + color: rgb(0, 146, 157); + outline: none; +} + +.custom-theme .el-button--large { + padding: 11px 19px; + font-size: 16px; + border-radius: 4px; +} + +.custom-theme .el-button--small { + padding: 7px 9px; + font-size: 12px; + border-radius: 4px; +} + +.custom-theme .el-button--mini { + padding: 4px 4px; + font-size: 12px; + border-radius: 4px; +} + +.custom-theme .el-button--text { + border: none; + color: #073069; + background: transparent; + padding-left: 0; + padding-right: 0; +} + +.custom-theme .el-button--text:hover, +.custom-theme .el-button--text:focus { + color: rgb(57, 89, 135); +} + +.custom-theme .el-button--text:active { + color: rgb(6, 43, 95); +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle; +} + + + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative; +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0; +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px; +} + +.custom-theme .el-button-group .el-button:hover, +.custom-theme .el-button-group .el-button:focus, +.custom-theme .el-button-group .el-button:active { + z-index: 1; +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1; +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-checkbox { + color: rgb(31, 40, 61); + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 15px; +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: none; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle; +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #073069; + border-color: rgb(1, 43, 101); +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + border: 1px solid #fff; + margin-top: -1px; + left: 3px; + right: 3px; + top: 50%; +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none; +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #073069; +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #073069; + border-color: rgb(1, 43, 101); +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + transform: rotate(45deg) scaleY(1); +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: rgb(238, 240, 246); +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed; +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #fff; +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + border-color: #fff; +} + +.custom-theme .el-checkbox__input.is-disabled + .el-checkbox__label { + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + box-sizing: border-box; + width: 18px; + height: 18px; + background-color: #fff; + z-index: 1; + transition: border-color .25s cubic-bezier(.71,-.46,.29,1.46), + background-color .25s cubic-bezier(.71,-.46,.29,1.46); +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #073069; +} + +.custom-theme .el-checkbox__inner::after { + box-sizing: content-box; + content: ""; + border: 2px solid #fff; + border-left: 0; + border-top: 0; + height: 8px; + left: 5px; + position: absolute; + top: 1px; + transform: rotate(45deg) scaleY(0); + width: 4px; + transition: transform .15s cubic-bezier(.71,-.46,.88,.6) .05s; + transform-origin: center; +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: none; + position: absolute; + margin: 0; + left: -999px; +} + +.custom-theme .el-checkbox__label { + font-size: 14px; + padding-left: 5px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-tag { + background-color: rgb(131, 139, 165); + display: inline-block; + padding: 0 5px; + height: 24px; + line-height: 22px; + font-size: 12px; + color: #fff; + border-radius: 4px; + box-sizing: border-box; + border: 1px solid transparent; + white-space: nowrap; +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + transform: scale(.75, .75); + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -2px; +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #fff; + color: rgb(131, 139, 165); +} + +.custom-theme .el-tag--gray { + background-color: rgb(228, 230, 241); + border-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--gray .el-tag__close:hover { + background-color: rgb(72, 81, 106); + color: #fff; +} + +.custom-theme .el-tag--gray.is-hit { + border-color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--primary { + background-color: rgba(7, 48, 105, 0.1); + border-color: rgba(7, 48, 105, 0.2); + color: #073069; +} + +.custom-theme .el-tag--primary .el-tag__close:hover { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-tag--primary.is-hit { + border-color: #073069; +} + +.custom-theme .el-tag--success { + background-color: rgba(18,206,102,0.10); + border-color: rgba(18,206,102,0.20); + color: #00643b; +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #00643b; + color: #fff; +} + +.custom-theme .el-tag--success.is-hit { + border-color: #00643b; +} + +.custom-theme .el-tag--warning { + background-color: rgba(247,186,41,0.10); + border-color: rgba(247,186,41,0.20); + color: #f56a00; +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #f56a00; + color: #fff; +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #f56a00; +} + +.custom-theme .el-tag--danger { + background-color: rgba(255,73,73,0.10); + border-color: rgba(255,73,73,0.20); + color: #ffbf00; +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #ffbf00; + color: #fff; +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #ffbf00; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-table { + position: relative; + overflow: hidden; + box-sizing: border-box; + width: 100%; + max-width: 100%; + background-color: #fff; + border: 1px solid rgb(223, 227, 236); + font-size: 14px; + color: rgb(31, 40, 61); +} + +.custom-theme .el-table .el-tooltip.cell { + white-space: nowrap; +} + +.custom-theme .el-table th, +.custom-theme .el-table td { + height: 40px; + min-width: 0; + box-sizing: border-box; + text-overflow: ellipsis; + vertical-align: middle; + position: relative; +} + +.custom-theme .el-table th.is-right, +.custom-theme .el-table td.is-right { + text-align: right; +} + +.custom-theme .el-table th.is-left, +.custom-theme .el-table td.is-left { + text-align: left; +} + +.custom-theme .el-table th.is-center, +.custom-theme .el-table td.is-center { + text-align: center; +} + +.custom-theme .el-table th.is-leaf, +.custom-theme .el-table td { + border-bottom: 1px solid rgb(223, 227, 236); +} + +.custom-theme .el-table th.gutter, +.custom-theme .el-table td.gutter { + width: 15px; + border-right-width: 0; + border-bottom-width: 0; + padding: 0; +} + +.custom-theme .el-table td.is-hidden > *, +.custom-theme .el-table th.is-hidden > * { + visibility: hidden; +} + +.custom-theme .el-table::before { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 1px; + background-color: rgb(223, 227, 236); + z-index: 1; +} + +.custom-theme .el-table::after { + content: ''; + position: absolute; + top: 0; + right: 0; + width: 1px; + height: 100%; + background-color: rgb(223, 227, 236); + z-index: 1; +} + +.custom-theme .el-table th { + white-space: nowrap; + overflow: hidden; +} + +.custom-theme .el-table th { + background-color: rgb(238, 240, 246); + text-align: left; +} + +.custom-theme .el-table th > div { + display: inline-block; + padding-left: 18px; + padding-right: 18px; + line-height: 40px; + box-sizing: border-box; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.custom-theme .el-table td > div { + box-sizing: border-box; +} + +.custom-theme .el-table th.required > div::before { + display: inline-block; + content: ""; + width: 8px; + height: 8px; + border-radius: 50%; + background: #ff4d51; + margin-right: 5px; + vertical-align: middle; +} + +.custom-theme .el-table th > .cell { + position: relative; + word-wrap: normal; + text-overflow: ellipsis; + display: inline-block; + line-height: 20px; + vertical-align: middle; + width: 100%; + box-sizing: border-box; +} + +.custom-theme .el-table th > .cell.highlight { + color: #073069; +} + +.custom-theme .el-table .caret-wrapper { + position: relative; + cursor: pointer; + display: inline-block; + vertical-align: middle; + margin-left: 5px; + margin-top: -2px; + width: 16px; + height: 34px; + overflow: visible; + overflow: initial; +} + +.custom-theme .el-table .sort-caret { + display: inline-block; + width: 0; + height: 0; + border: 0; + content: ""; + position: absolute; + left: 3px; + z-index: 2; +} + +.custom-theme .el-table .sort-caret.ascending { + top: 11px; + border-top: none; + border-right: 5px solid transparent; + border-bottom: 5px solid rgb(151, 161, 190); + border-left: 5px solid transparent; +} + +.custom-theme .el-table .sort-caret.descending { + bottom: 11px; + border-top: 5px solid rgb(151, 161, 190); + border-right: 5px solid transparent; + border-bottom: none; + border-left: 5px solid transparent; +} + +.custom-theme .el-table .ascending .sort-caret.ascending { + border-bottom-color: rgb(72, 81, 106); +} + +.custom-theme .el-table .descending .sort-caret.descending { + border-top-color: rgb(72, 81, 106); +} + +.custom-theme .el-table td.gutter { + width: 0; +} + +.custom-theme .el-table .cell { + box-sizing: border-box; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; + word-break: break-all; + line-height: 24px; + padding-left: 18px; + padding-right: 18px; +} + +.custom-theme .el-table tr input[type="checkbox"] { + margin: 0; +} + +.custom-theme .el-table tr { + background-color: #fff; +} + +.custom-theme .el-table .hidden-columns { + visibility: hidden; + position: absolute; + z-index: -1; +} + +.custom-theme .el-table__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100%; +} + +.custom-theme .el-table__empty-text { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + color: rgb(94, 109, 130); +} + +.custom-theme .el-table__expand-column .cell { + padding: 0; + text-align: center; +} + +.custom-theme .el-table__expand-icon { + position: relative; + cursor: pointer; + color: #666; + font-size: 12px; + transition: transform 0.2s ease-in-out; + height: 40px; +} + +.custom-theme .el-table__expand-icon > .el-icon { + position: absolute; + left: 50%; + top: 50%; + margin-left: -5px; + margin-top: -5px; +} + +.custom-theme .el-table__expand-icon--expanded { + transform: rotate(90deg); +} + +.custom-theme .el-table__expanded-cell { + padding: 20px 50px; + background-color: rgb(250, 251, 252); + box-shadow: inset 0 2px 0 #f4f4f4; +} + +.custom-theme .el-table__expanded-cell:hover { + background-color: rgb(250, 251, 252) !important; +} + +.custom-theme .el-table--fit { + border-right: 0; + border-bottom: 0; +} + +.custom-theme .el-table--fit th.gutter, +.custom-theme .el-table--fit td.gutter { + border-right-width: 1px; +} + +.custom-theme .el-table--border th, +.custom-theme .el-table--border td { + border-right: 1px solid rgb(223, 227, 236); +} + +.custom-theme .el-table--border th { + border-bottom: 1px solid rgb(223, 227, 236); +} + +.custom-theme .el-table__fixed, +.custom-theme .el-table__fixed-right { + position: absolute; + top: 0; + left: 0; + box-shadow: 1px 0 8px #d3d4d6; + overflow-x: hidden; +} + +.custom-theme .el-table__fixed::before, +.custom-theme .el-table__fixed-right::before { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 1px; + background-color: rgb(223, 227, 236); + z-index: 4; +} + +.custom-theme .el-table__fixed-right-patch { + position: absolute; + top: -1px; + right: 0; + background-color: rgb(238, 240, 246); + border-bottom: 1px solid rgb(223, 227, 236); +} + +.custom-theme .el-table__fixed-right { + top: 0; + left: auto; + right: 0; + box-shadow: -1px 0 8px #d3d4d6; +} + +.custom-theme .el-table__fixed-right .el-table__fixed-header-wrapper, +.custom-theme .el-table__fixed-right .el-table__fixed-body-wrapper { + left: auto; + right: 0; +} + +.custom-theme .el-table__fixed-header-wrapper { + position: absolute; + left: 0; + top: 0; + z-index: 3; +} + +.custom-theme .el-table__fixed-header-wrapper thead div { + background-color: rgb(238, 240, 246); + color: rgb(31, 40, 61); +} + +.custom-theme .el-table__fixed-body-wrapper { + position: absolute; + left: 0; + top: 37px; + overflow: hidden; + z-index: 3; +} + +.custom-theme .el-table__header-wrapper, +.custom-theme .el-table__body-wrapper { + width: 100%; +} + +.custom-theme .el-table__header, +.custom-theme .el-table__body { + table-layout: fixed; +} + +.custom-theme .el-table__header-wrapper { + overflow: hidden; +} + +.custom-theme .el-table__header-wrapper thead div { + background-color: rgb(238, 240, 246); + color: rgb(31, 40, 61); +} + +.custom-theme .el-table__body-wrapper { + overflow: auto; + position: relative; +} + + + + + +.custom-theme .el-table--striped .el-table__body tr:nth-child(2n) td { + background: #FAFAFA; +} + +.custom-theme .el-table--striped .el-table__body tr:nth-child(2n).current-row td { + background: rgb(235, 238, 243); +} + +.custom-theme .el-table__body tr.hover-row > td { + background-color: rgb(238, 240, 246); +} + +.custom-theme .el-table__body tr.current-row > td { + background: rgb(235, 238, 243); +} + +.custom-theme .el-table__column-resize-proxy { + position: absolute; + left: 200px; + top: 0; + bottom: 0; + width: 0; + border-left: 1px solid rgb(223, 227, 236); + z-index: 10; +} + +.custom-theme .el-table__column-filter-trigger { + display: inline-block; + line-height: 34px; + margin-left: 5px; + cursor: pointer; +} + +.custom-theme .el-table__column-filter-trigger i { + color: rgb(151, 161, 190); +} + +.custom-theme .el-table--enable-row-transition .el-table__body td { + transition: background-color .25s ease; +} + +.custom-theme .el-table--enable-row-hover tr:hover > td { + background-color: rgb(238, 240, 246); +} + +.custom-theme .el-table--fluid-height .el-table__fixed, +.custom-theme .el-table--fluid-height .el-table__fixed-right { + bottom: 0; + overflow: hidden; +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-checkbox { + color: rgb(31, 40, 61); + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 15px; +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: none; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle; +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #073069; + border-color: rgb(1, 43, 101); +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + border: 1px solid #fff; + margin-top: -1px; + left: 3px; + right: 3px; + top: 50%; +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none; +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #073069; +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #073069; + border-color: rgb(1, 43, 101); +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + transform: rotate(45deg) scaleY(1); +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: rgb(238, 240, 246); +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed; +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #fff; +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: rgb(209, 215, 229); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + border-color: #fff; +} + +.custom-theme .el-checkbox__input.is-disabled + .el-checkbox__label { + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + box-sizing: border-box; + width: 18px; + height: 18px; + background-color: #fff; + z-index: 1; + transition: border-color .25s cubic-bezier(.71,-.46,.29,1.46), + background-color .25s cubic-bezier(.71,-.46,.29,1.46); +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #073069; +} + +.custom-theme .el-checkbox__inner::after { + box-sizing: content-box; + content: ""; + border: 2px solid #fff; + border-left: 0; + border-top: 0; + height: 8px; + left: 5px; + position: absolute; + top: 1px; + transform: rotate(45deg) scaleY(0); + width: 4px; + transition: transform .15s cubic-bezier(.71,-.46,.88,.6) .05s; + transform-origin: center; +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: none; + position: absolute; + margin: 0; + left: -999px; +} + +.custom-theme .el-checkbox__label { + font-size: 14px; + padding-left: 5px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-tag { + background-color: rgb(131, 139, 165); + display: inline-block; + padding: 0 5px; + height: 24px; + line-height: 22px; + font-size: 12px; + color: #fff; + border-radius: 4px; + box-sizing: border-box; + border: 1px solid transparent; + white-space: nowrap; +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + transform: scale(.75, .75); + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -2px; +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #fff; + color: rgb(131, 139, 165); +} + +.custom-theme .el-tag--gray { + background-color: rgb(228, 230, 241); + border-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--gray .el-tag__close:hover { + background-color: rgb(72, 81, 106); + color: #fff; +} + +.custom-theme .el-tag--gray.is-hit { + border-color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--primary { + background-color: rgba(7, 48, 105, 0.1); + border-color: rgba(7, 48, 105, 0.2); + color: #073069; +} + +.custom-theme .el-tag--primary .el-tag__close:hover { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-tag--primary.is-hit { + border-color: #073069; +} + +.custom-theme .el-tag--success { + background-color: rgba(18,206,102,0.10); + border-color: rgba(18,206,102,0.20); + color: #00643b; +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #00643b; + color: #fff; +} + +.custom-theme .el-tag--success.is-hit { + border-color: #00643b; +} + +.custom-theme .el-tag--warning { + background-color: rgba(247,186,41,0.10); + border-color: rgba(247,186,41,0.20); + color: #f56a00; +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #f56a00; + color: #fff; +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #f56a00; +} + +.custom-theme .el-tag--danger { + background-color: rgba(255,73,73,0.10); + border-color: rgba(255,73,73,0.20); + color: #ffbf00; +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #ffbf00; + color: #fff; +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #ffbf00; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-table-column--selection .cell { + padding-left: 14px; + padding-right: 14px; +} + +.custom-theme .el-table-filter { + border: solid 1px rgb(209, 215, 229); + border-radius: 2px; + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12); + box-sizing: border-box; + margin: 2px 0; + /** used for dropdown mode */ +} + +.custom-theme .el-table-filter__list { + padding: 5px 0; + margin: 0; + list-style: none; + min-width: 100px; +} + +.custom-theme .el-table-filter__list-item { + line-height: 36px; + padding: 0 10px; + cursor: pointer; + font-size: 14px; +} + +.custom-theme .el-table-filter__list-item:hover { + background-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-table-filter__list-item.is-active { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-table-filter__content { + min-width: 100px; +} + +.custom-theme .el-table-filter__bottom { + border-top: 1px solid rgb(209, 215, 229); + padding: 8px; +} + +.custom-theme .el-table-filter__bottom button { + background: transparent; + border: none; + color: rgb(131, 139, 165); + cursor: pointer; + font-size: 14px; + padding: 0 3px; +} + +.custom-theme .el-table-filter__bottom button:hover { + color: #073069; +} + +.custom-theme .el-table-filter__bottom button:focus { + outline: none; +} + +.custom-theme .el-table-filter__bottom button.is-disabled { + color: rgb(191, 199, 217); + cursor: not-allowed; +} + +.custom-theme .el-table-filter__checkbox-group { + padding: 10px; +} + +.custom-theme .el-table-filter__checkbox-group .el-checkbox { + display: block; + margin-bottom: 8px; + margin-left: 5px; +} + +.custom-theme .el-table-filter__checkbox-group .el-checkbox:last-child { + margin-bottom: 0; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-date-table { + font-size: 12px; + min-width: 224px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-theme .el-date-table td { + width: 32px; + height: 32px; + box-sizing: border-box; + text-align: center; + cursor: pointer; +} + +.custom-theme .el-date-table td.next-month, +.custom-theme .el-date-table td.prev-month { + color: #ddd; +} + +.custom-theme .el-date-table td.today { + color: #073069; + position: relative; +} + +.custom-theme .el-date-table td.today:before { + content: " "; + position: absolute; + top: 0px; + right: 0px; + width: 0; + height: 0; + border-top: 0.5em solid #073069; + border-left: .5em solid transparent; +} + +.custom-theme .el-date-table td.available:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-date-table td.in-range { + background-color: rgb(205, 214, 225); +} + +.custom-theme .el-date-table td.in-range:hover { + background-color: rgb(166, 180, 201); +} + +.custom-theme .el-date-table td.current:not(.disabled), +.custom-theme .el-date-table td.start-date, +.custom-theme .el-date-table td.end-date { + background-color: #073069 !important; + color: #fff; +} + +.custom-theme .el-date-table td.disabled { + background-color: #f4f4f4; + opacity: 1; + cursor: not-allowed; + color: #ccc; +} + +.custom-theme .el-date-table td.week { + font-size: 80%; + color: rgb(131, 139, 165); +} + +.custom-theme .el-date-table th { + padding: 5px; + color: rgb(131, 139, 165); + font-weight: 400; +} + + + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row.current { + background-color: rgb(205, 214, 225); +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-month-table { + font-size: 12px; + margin: -1px; + border-collapse: collapse; +} + +.custom-theme .el-month-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer; +} + +.custom-theme .el-month-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: rgb(72, 81, 106); +} + +.custom-theme .el-month-table td .cell:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-month-table td.disabled .cell { + background-color: #f4f4f4; + cursor: not-allowed; + color: #ccc; +} + +.custom-theme .el-month-table td.current:not(.disabled) .cell { + background-color: #073069 !important; + color: #fff; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-year-table { + font-size: 12px; + margin: -1px; + border-collapse: collapse; +} + +.custom-theme .el-year-table .el-icon { + color: rgb(151, 161, 190); +} + +.custom-theme .el-year-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer; +} + +.custom-theme .el-year-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: rgb(72, 81, 106); +} + +.custom-theme .el-year-table td .cell:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-year-table td.disabled .cell { + background-color: #f4f4f4; + cursor: not-allowed; + color: #ccc; +} + +.custom-theme .el-year-table td.current:not(.disabled) .cell { + background-color: #073069 !important; + color: #fff; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33%; +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px; +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2) { + margin-left: 1%; +} + +.custom-theme .el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative; +} + +.custom-theme .el-time-spinner__list { + padding: 0; + margin: 0; + list-style: none; + text-align: center; +} + +.custom-theme .el-time-spinner__list::after, +.custom-theme .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px; +} + +.custom-theme .el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; +} + +.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: rgb(228, 230, 241); + cursor: pointer; +} + +.custom-theme .el-time-spinner__item.active:not(.disabled) { + color: #fff; +} + +.custom-theme .el-time-spinner__item.disabled { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .fade-in-linear-enter-active, +.custom-theme .fade-in-linear-leave-active { + transition: opacity 200ms linear; +} + +.custom-theme .fade-in-linear-enter, +.custom-theme .fade-in-linear-leave, +.custom-theme .fade-in-linear-leave-active { + opacity: 0; +} + +.custom-theme .el-fade-in-enter-active, +.custom-theme .el-fade-in-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-fade-in-enter, +.custom-theme .el-fade-in-leave-active { + opacity: 0; +} + +.custom-theme .el-zoom-in-center-enter-active, +.custom-theme .el-zoom-in-center-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-zoom-in-center-enter, +.custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + transform: scaleX(0); +} + +.custom-theme .el-zoom-in-top-enter-active, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center top; +} + +.custom-theme .el-zoom-in-top-enter, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .el-zoom-in-bottom-enter-active, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center bottom; +} + +.custom-theme .el-zoom-in-bottom-enter, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .collapse-transition { + transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out; +} + +.custom-theme .list-enter-active, +.custom-theme .list-leave-active { + transition: all 1s; +} + +.custom-theme .list-enter, +.custom-theme .list-leave-active { + opacity: 0; + transform: translateY(-30px); +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; +} + +.custom-theme .el-date-editor .el-picker-panel { + position: absolute; + min-width: 180px; + box-sizing: border-box; + box-shadow: 0 2px 6px #ccc; + background: #fff; + z-index: 10; + top: 41px; +} + +.custom-theme .el-date-editor.el-input { + width: 193px; +} + + + +.custom-theme .el-date-editor--daterange.el-input { + width: 220px; +} + + + +.custom-theme .el-date-editor--datetimerange.el-input { + width: 350px; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-picker-panel { + color: rgb(72, 81, 106); + border: 1px solid rgb(209, 215, 229); + box-shadow: 0 2px 6px #ccc; + background: #fff; + border-radius: 2px; + line-height: 20px; + margin: 5px 0; +} + + + +.custom-theme .el-picker-panel__body::after, +.custom-theme .el-picker-panel__body-wrapper::after { + content: ""; + display: table; + clear: both; +} + +.custom-theme .el-picker-panel__content { + position: relative; + margin: 15px; +} + +.custom-theme .el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #fff; + position: relative; +} + +.custom-theme .el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: rgb(72, 81, 106); + padding-left: 12px; + text-align: left; + outline: none; + cursor: pointer; +} + +.custom-theme .el-picker-panel__shortcut:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #073069; +} + +.custom-theme .el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: none; + font-size: 12px; +} + +.custom-theme .el-picker-panel__btn[disabled] { + color: #cccccc; + cursor: not-allowed; +} + +.custom-theme .el-picker-panel__icon-btn { + font-size: 12px; + color: rgb(151, 161, 190); + border: 0; + background: transparent; + cursor: pointer; + outline: none; + margin-top: 3px; +} + +.custom-theme .el-picker-panel__icon-btn:hover { + color: #073069; +} + +.custom-theme .el-picker-panel__link-btn { + cursor: pointer; + color: #073069; + text-decoration: none; + padding: 15px; + font-size: 12px; +} + +.custom-theme .el-picker-panel *[slot=sidebar], +.custom-theme .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + box-sizing: border-box; + padding-top: 6px; + background-color: rgb(250, 251, 252); +} + +.custom-theme .el-picker-panel *[slot=sidebar] + .el-picker-panel__body, +.custom-theme .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px; +} + +.custom-theme .el-date-picker { + min-width: 254px; +} + +.custom-theme .el-date-picker .el-picker-panel__content { + min-width: 224px; +} + +.custom-theme .el-date-picker table { + table-layout: fixed; + width: 100%; +} + +.custom-theme .el-date-picker.has-sidebar.has-time { + min-width: 434px; +} + +.custom-theme .el-date-picker.has-sidebar { + min-width: 370px; +} + +.custom-theme .el-date-picker.has-time { + min-width: 324px; +} + +.custom-theme .el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px; +} + +.custom-theme .el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + box-sizing: border-box; +} + +.custom-theme .el-date-picker__header { + margin: 12px; + text-align: center; +} + +.custom-theme .el-date-picker__header-label { + font-size: 14px; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; +} + +.custom-theme .el-date-picker__header-label:hover { + color: #073069; +} + +.custom-theme .el-date-picker__header-label.active { + color: #073069; +} + +.custom-theme .el-date-picker__prev-btn { + float: left; +} + +.custom-theme .el-date-picker__next-btn { + float: right; +} + +.custom-theme .el-date-picker__time-wrap { + padding: 10px; + text-align: center; +} + +.custom-theme .el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-date-range-picker { + min-width: 520px; +} + +.custom-theme .el-date-range-picker table { + table-layout: fixed; + width: 100%; +} + +.custom-theme .el-date-range-picker .el-picker-panel__body { + min-width: 513px; +} + +.custom-theme .el-date-range-picker .el-picker-panel__content { + margin: 0; +} + +.custom-theme .el-date-range-picker.has-sidebar.has-time { + min-width: 766px; +} + +.custom-theme .el-date-range-picker.has-sidebar { + min-width: 620px; +} + +.custom-theme .el-date-range-picker.has-time { + min-width: 660px; +} + +.custom-theme .el-date-range-picker__header { + position: relative; + text-align: center; + height: 28px; +} + +.custom-theme .el-date-range-picker__header button { + float: left; +} + +.custom-theme .el-date-range-picker__header div { + font-size: 14px; + margin-right: 50px; +} + +.custom-theme .el-date-range-picker__content { + float: left; + width: 50%; + box-sizing: border-box; + margin: 0; + padding: 16px; +} + +.custom-theme .el-date-range-picker__content.is-right .el-date-range-picker__header button { + float: right; +} + +.custom-theme .el-date-range-picker__content.is-right .el-date-range-picker__header div { + margin-left: 50px; + margin-right: 50px; +} + +.custom-theme .el-date-range-picker__content.is-left { + border-right: 1px solid #e4e4e4; +} + +.custom-theme .el-date-range-picker__editors-wrap { + box-sizing: border-box; + display: table-cell; +} + +.custom-theme .el-date-range-picker__editors-wrap.is-right { + text-align: right; +} + +.custom-theme .el-date-range-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + box-sizing: border-box; +} + +.custom-theme .el-date-range-picker__time-header > .el-icon-arrow-right { + font-size: 20px; + vertical-align: middle; + display: table-cell; + color: rgb(151, 161, 190); +} + +.custom-theme .el-date-range-picker__time-picker-wrap { + position: relative; + display: table-cell; + padding: 0 5px; +} + +.custom-theme .el-date-range-picker__time-picker-wrap .el-picker-panel { + position: absolute; + top: 13px; + right: 0; + z-index: 1; + background: #fff; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-time-range-picker { + min-width: 354px; + overflow: visible; +} + +.custom-theme .el-time-range-picker__content { + position: relative; + text-align: center; + padding: 10px; +} + +.custom-theme .el-time-range-picker__cell { + box-sizing: border-box; + margin: 0; + padding: 4px 7px 7px; + width: 50%; + display: inline-block; +} + +.custom-theme .el-time-range-picker__header { + margin-bottom: 5px; + text-align: center; + font-size: 14px; +} + +.custom-theme .el-time-range-picker__body { + border-radius: 2px; + border: 1px solid rgb(209, 215, 229); +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-time-panel { + margin: 5px 0; + border: solid 1px rgb(209, 215, 229); + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-theme .el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden; +} + +.custom-theme .el-time-panel__content::after, +.custom-theme .el-time-panel__content::before { + content: ":"; + top: 50%; + color: #fff; + position: absolute; + font-size: 14px; + margin-top: -15px; + line-height: 16px; + background-color: #073069; + height: 32px; + z-index: -1; + left: 0; + right: 0; + box-sizing: border-box; + padding-top: 6px; + text-align: left; +} + +.custom-theme .el-time-panel__content::after { + left: 50%; + margin-left: -2px; +} + +.custom-theme .el-time-panel__content::before { + padding-left: 50%; + margin-right: -2px; +} + + + +.custom-theme .el-time-panel__content.has-seconds::after { + left: 66.66667%; +} + +.custom-theme .el-time-panel__content.has-seconds::before { + padding-left: 33.33333%; +} + +.custom-theme .el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + box-sizing: border-box; +} + +.custom-theme .el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: none; + font-size: 12px; + color: rgb(131, 139, 165); +} + +.custom-theme .el-time-panel__btn.confirm { + font-weight: 800; + color: #073069; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative; +} + +.custom-theme .el-scrollbar:hover .el-scrollbar__bar, +.custom-theme .el-scrollbar:active .el-scrollbar__bar, +.custom-theme .el-scrollbar:focus .el-scrollbar__bar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; +} + + + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0; +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(151, 161, 190, 0.3); + transition: .3s background-color; +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(151, 161, 190, 0.5); +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + transition: opacity 120ms ease-out; +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px; +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100%; +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px; +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100%; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .fade-in-linear-enter-active, +.custom-theme .fade-in-linear-leave-active { + transition: opacity 200ms linear; +} + +.custom-theme .fade-in-linear-enter, +.custom-theme .fade-in-linear-leave, +.custom-theme .fade-in-linear-leave-active { + opacity: 0; +} + +.custom-theme .el-fade-in-enter-active, +.custom-theme .el-fade-in-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-fade-in-enter, +.custom-theme .el-fade-in-leave-active { + opacity: 0; +} + +.custom-theme .el-zoom-in-center-enter-active, +.custom-theme .el-zoom-in-center-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-zoom-in-center-enter, +.custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + transform: scaleX(0); +} + +.custom-theme .el-zoom-in-top-enter-active, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center top; +} + +.custom-theme .el-zoom-in-top-enter, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .el-zoom-in-bottom-enter-active, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center bottom; +} + +.custom-theme .el-zoom-in-bottom-enter, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .collapse-transition { + transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out; +} + +.custom-theme .list-enter-active, +.custom-theme .list-leave-active { + transition: all 1s; +} + +.custom-theme .list-enter, +.custom-theme .list-leave-active { + opacity: 0; + transform: translateY(-30px); +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; +} + +.custom-theme .el-date-editor .el-picker-panel { + position: absolute; + min-width: 180px; + box-sizing: border-box; + box-shadow: 0 2px 6px #ccc; + background: #fff; + z-index: 10; + top: 41px; +} + +.custom-theme .el-date-editor.el-input { + width: 193px; +} + + + +.custom-theme .el-date-editor--daterange.el-input { + width: 220px; +} + + + +.custom-theme .el-date-editor--datetimerange.el-input { + width: 350px; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-picker-panel { + color: rgb(72, 81, 106); + border: 1px solid rgb(209, 215, 229); + box-shadow: 0 2px 6px #ccc; + background: #fff; + border-radius: 2px; + line-height: 20px; + margin: 5px 0; +} + + + +.custom-theme .el-picker-panel__body::after, +.custom-theme .el-picker-panel__body-wrapper::after { + content: ""; + display: table; + clear: both; +} + +.custom-theme .el-picker-panel__content { + position: relative; + margin: 15px; +} + +.custom-theme .el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #fff; + position: relative; +} + +.custom-theme .el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: rgb(72, 81, 106); + padding-left: 12px; + text-align: left; + outline: none; + cursor: pointer; +} + +.custom-theme .el-picker-panel__shortcut:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #073069; +} + +.custom-theme .el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: none; + font-size: 12px; +} + +.custom-theme .el-picker-panel__btn[disabled] { + color: #cccccc; + cursor: not-allowed; +} + +.custom-theme .el-picker-panel__icon-btn { + font-size: 12px; + color: rgb(151, 161, 190); + border: 0; + background: transparent; + cursor: pointer; + outline: none; + margin-top: 3px; +} + +.custom-theme .el-picker-panel__icon-btn:hover { + color: #073069; +} + +.custom-theme .el-picker-panel__link-btn { + cursor: pointer; + color: #073069; + text-decoration: none; + padding: 15px; + font-size: 12px; +} + +.custom-theme .el-picker-panel *[slot=sidebar], +.custom-theme .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + box-sizing: border-box; + padding-top: 6px; + background-color: rgb(250, 251, 252); +} + +.custom-theme .el-picker-panel *[slot=sidebar] + .el-picker-panel__body, +.custom-theme .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px; +} + +.custom-theme .el-date-picker { + min-width: 254px; +} + +.custom-theme .el-date-picker .el-picker-panel__content { + min-width: 224px; +} + +.custom-theme .el-date-picker table { + table-layout: fixed; + width: 100%; +} + +.custom-theme .el-date-picker.has-sidebar.has-time { + min-width: 434px; +} + +.custom-theme .el-date-picker.has-sidebar { + min-width: 370px; +} + +.custom-theme .el-date-picker.has-time { + min-width: 324px; +} + +.custom-theme .el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px; +} + +.custom-theme .el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + box-sizing: border-box; +} + +.custom-theme .el-date-picker__header { + margin: 12px; + text-align: center; +} + +.custom-theme .el-date-picker__header-label { + font-size: 14px; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; +} + +.custom-theme .el-date-picker__header-label:hover { + color: #073069; +} + +.custom-theme .el-date-picker__header-label.active { + color: #073069; +} + +.custom-theme .el-date-picker__prev-btn { + float: left; +} + +.custom-theme .el-date-picker__next-btn { + float: right; +} + +.custom-theme .el-date-picker__time-wrap { + padding: 10px; + text-align: center; +} + +.custom-theme .el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative; +} + +.custom-theme .el-scrollbar:hover .el-scrollbar__bar, +.custom-theme .el-scrollbar:active .el-scrollbar__bar, +.custom-theme .el-scrollbar:focus .el-scrollbar__bar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; +} + + + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0; +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(151, 161, 190, 0.3); + transition: .3s background-color; +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(151, 161, 190, 0.5); +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + transition: opacity 120ms ease-out; +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px; +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100%; +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px; +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100%; +} + +.custom-theme .time-select { + margin: 5px 0; + min-width: 0; +} + +.custom-theme .time-select .el-picker-panel__content { + max-height: 200px; + margin: 0; +} + +.custom-theme .time-select-item { + padding: 8px 10px; + font-size: 14px; +} + +.custom-theme .time-select-item.selected:not(.disabled) { + background-color: #073069; + color: #fff; +} + +.custom-theme .time-select-item.selected:not(.disabled):hover { + background-color: #073069; +} + +.custom-theme .time-select-item.disabled { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .time-select-item:hover { + background-color: rgb(228, 230, 241); + cursor: pointer; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .fade-in-linear-enter-active, +.custom-theme .fade-in-linear-leave-active { + transition: opacity 200ms linear; +} + +.custom-theme .fade-in-linear-enter, +.custom-theme .fade-in-linear-leave, +.custom-theme .fade-in-linear-leave-active { + opacity: 0; +} + +.custom-theme .el-fade-in-enter-active, +.custom-theme .el-fade-in-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-fade-in-enter, +.custom-theme .el-fade-in-leave-active { + opacity: 0; +} + +.custom-theme .el-zoom-in-center-enter-active, +.custom-theme .el-zoom-in-center-leave-active { + transition: all .3s cubic-bezier(.55,0,.1,1); +} + +.custom-theme .el-zoom-in-center-enter, +.custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + transform: scaleX(0); +} + +.custom-theme .el-zoom-in-top-enter-active, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center top; +} + +.custom-theme .el-zoom-in-top-enter, +.custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .el-zoom-in-bottom-enter-active, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + transform: scaleY(1); + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + transform-origin: center bottom; +} + +.custom-theme .el-zoom-in-bottom-enter, +.custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + transform: scaleY(0); +} + +.custom-theme .collapse-transition { + transition: 0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out; +} + +.custom-theme .list-enter-active, +.custom-theme .list-leave-active { + transition: all 1s; +} + +.custom-theme .list-enter, +.custom-theme .list-leave-active { + opacity: 0; + transform: translateY(-30px); +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; +} + +.custom-theme .el-date-editor .el-picker-panel { + position: absolute; + min-width: 180px; + box-sizing: border-box; + box-shadow: 0 2px 6px #ccc; + background: #fff; + z-index: 10; + top: 41px; +} + +.custom-theme .el-date-editor.el-input { + width: 193px; +} + + + +.custom-theme .el-date-editor--daterange.el-input { + width: 220px; +} + + + +.custom-theme .el-date-editor--datetimerange.el-input { + width: 350px; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33%; +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px; +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2) { + margin-left: 1%; +} + +.custom-theme .el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative; +} + +.custom-theme .el-time-spinner__list { + padding: 0; + margin: 0; + list-style: none; + text-align: center; +} + +.custom-theme .el-time-spinner__list::after, +.custom-theme .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px; +} + +.custom-theme .el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; +} + +.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: rgb(228, 230, 241); + cursor: pointer; +} + +.custom-theme .el-time-spinner__item.active:not(.disabled) { + color: #fff; +} + +.custom-theme .el-time-spinner__item.disabled { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-time-panel { + margin: 5px 0; + border: solid 1px rgb(209, 215, 229); + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-theme .el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden; +} + +.custom-theme .el-time-panel__content::after, +.custom-theme .el-time-panel__content::before { + content: ":"; + top: 50%; + color: #fff; + position: absolute; + font-size: 14px; + margin-top: -15px; + line-height: 16px; + background-color: #073069; + height: 32px; + z-index: -1; + left: 0; + right: 0; + box-sizing: border-box; + padding-top: 6px; + text-align: left; +} + +.custom-theme .el-time-panel__content::after { + left: 50%; + margin-left: -2px; +} + +.custom-theme .el-time-panel__content::before { + padding-left: 50%; + margin-right: -2px; +} + + + +.custom-theme .el-time-panel__content.has-seconds::after { + left: 66.66667%; +} + +.custom-theme .el-time-panel__content.has-seconds::before { + padding-left: 33.33333%; +} + +.custom-theme .el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + box-sizing: border-box; +} + +.custom-theme .el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: none; + font-size: 12px; + color: rgb(131, 139, 165); +} + +.custom-theme .el-time-panel__btn.confirm { + font-weight: 800; + color: #073069; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative; +} + +.custom-theme .el-scrollbar:hover .el-scrollbar__bar, +.custom-theme .el-scrollbar:active .el-scrollbar__bar, +.custom-theme .el-scrollbar:focus .el-scrollbar__bar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; +} + + + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0; +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(151, 161, 190, 0.3); + transition: .3s background-color; +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(151, 161, 190, 0.5); +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + transition: opacity 120ms ease-out; +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px; +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100%; +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px; +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100%; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-popover { + position: absolute; + background: #fff; + min-width: 150px; + border-radius: 2px; + border: 1px solid rgb(209, 215, 229); + padding: 10px; + z-index: 2000; + font-size: 12px; + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, .12), + 0px 0px 6px 0px rgba(0, 0, 0, .04); +} + +.custom-theme .el-popover .popper__arrow, +.custom-theme .el-popover .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.custom-theme .el-popover .popper__arrow { + border-width: 6px; +} + +.custom-theme .el-popover .popper__arrow::after { + content: " "; + border-width: 6px; +} + +.custom-theme .el-popover[x-placement^="top"] { + margin-bottom: 12px; +} + +.custom-theme .el-popover[x-placement^="top"] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: rgb(209, 215, 229); + border-bottom-width: 0; +} + +.custom-theme .el-popover[x-placement^="top"] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0; +} + +.custom-theme .el-popover[x-placement^="bottom"] { + margin-top: 12px; +} + +.custom-theme .el-popover[x-placement^="bottom"] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: rgb(209, 215, 229); +} + +.custom-theme .el-popover[x-placement^="bottom"] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff; +} + +.custom-theme .el-popover[x-placement^="right"] { + margin-left: 12px; +} + +.custom-theme .el-popover[x-placement^="right"] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: rgb(209, 215, 229); + border-left-width: 0; +} + +.custom-theme .el-popover[x-placement^="right"] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0; +} + +.custom-theme .el-popover[x-placement^="left"] { + margin-right: 12px; +} + +.custom-theme .el-popover[x-placement^="left"] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: rgb(209, 215, 229); +} + +.custom-theme .el-popover[x-placement^="left"] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff; +} + +.custom-theme .el-popover__title { + color: rgb(31, 40, 61); + font-size: 13px; + line-height: 1; + margin-bottom: 9px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2; +} + +.custom-theme .el-tooltip__popper .popper__arrow, +.custom-theme .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.custom-theme .el-tooltip__popper .popper__arrow { + border-width: 6px; +} + +.custom-theme .el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px; +} + +.custom-theme .el-tooltip__popper[x-placement^="top"] { + margin-bottom: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="top"] .popper__arrow { + bottom: -6px; + border-top-color: rgb(31, 40, 61); + border-bottom-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="top"] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: rgb(31, 40, 61); + border-bottom-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="bottom"] { + margin-top: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="bottom"] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper[x-placement^="bottom"] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper[x-placement^="right"] { + margin-left: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="right"] .popper__arrow { + left: -6px; + border-right-color: rgb(31, 40, 61); + border-left-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="right"] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: rgb(31, 40, 61); + border-left-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="left"] { + margin-right: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="left"] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper[x-placement^="left"] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light { + background: #fff; + border: 1px solid rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="top"] .popper__arrow { + border-top-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="top"] .popper__arrow::after { + border-top-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="bottom"] .popper__arrow { + border-bottom-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="bottom"] .popper__arrow::after { + border-bottom-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="left"] .popper__arrow { + border-left-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="left"] .popper__arrow::after { + border-left-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="right"] .popper__arrow { + border-right-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="right"] .popper__arrow::after { + border-right-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-dark { + background: rgb(31, 40, 61); + color: #fff; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .v-modal-enter { + animation: v-modal-in .2s ease; +} + +.custom-theme .v-modal-leave { + animation: v-modal-out .2s ease forwards; +} + +@keyframes v-modal-in { + 0% { + opacity: 0; + } + + 100% { + + } +} + +@keyframes v-modal-out { + 0% { + + } + + 100% { + opacity: 0; + } +} + +.custom-theme .v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.5; + background: #000; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: none; + margin: 0; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} + +.custom-theme .el-button + .el-button { + margin-left: 10px; +} + +.custom-theme .el-button:hover, +.custom-theme .el-button:focus { + color: #073069; + border-color: #073069; +} + +.custom-theme .el-button:active { + color: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0; +} + + + +.custom-theme .el-button [class*="el-icon-"] + span { + margin-left: 5px; +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none; +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255,255,255,.35); +} + + + +.custom-theme .el-button.is-disabled, +.custom-theme .el-button.is-disabled:hover, +.custom-theme .el-button.is-disabled:focus { + color: rgb(191, 199, 217); + cursor: not-allowed; + background-image: none; + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent; +} + + + +.custom-theme .el-button.is-disabled.is-plain, +.custom-theme .el-button.is-disabled.is-plain:hover, +.custom-theme .el-button.is-disabled.is-plain:focus { + background-color: #fff; + border-color: rgb(209, 215, 229); + color: rgb(191, 199, 217); +} + +.custom-theme .el-button.is-active { + color: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); +} + + + +.custom-theme .el-button.is-plain:hover, +.custom-theme .el-button.is-plain:focus { + background: #fff; + border-color: #073069; + color: #073069; +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: rgb(6, 43, 95); + color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #073069; + border-color: #073069; +} + +.custom-theme .el-button--primary:hover, +.custom-theme .el-button--primary:focus { + background: rgb(57, 89, 135); + border-color: rgb(57, 89, 135); + color: #fff; +} + +.custom-theme .el-button--primary:active { + background: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + color: #fff; + outline: none; +} + +.custom-theme .el-button--primary.is-active { + background: rgb(6, 43, 95); + border-color: rgb(6, 43, 95); + color: #fff; +} + +.custom-theme .el-button--primary.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--primary.is-plain:hover, +.custom-theme .el-button--primary.is-plain:focus { + background: #fff; + border-color: #073069; + color: #073069; +} + +.custom-theme .el-button--primary.is-plain:active { + background: #fff; + border-color: rgb(6, 43, 95); + color: rgb(6, 43, 95); + outline: none; +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #00643b; + border-color: #00643b; +} + +.custom-theme .el-button--success:hover, +.custom-theme .el-button--success:focus { + background: rgb(51, 131, 98); + border-color: rgb(51, 131, 98); + color: #fff; +} + +.custom-theme .el-button--success:active { + background: rgb(0, 90, 53); + border-color: rgb(0, 90, 53); + color: #fff; + outline: none; +} + +.custom-theme .el-button--success.is-active { + background: rgb(0, 90, 53); + border-color: rgb(0, 90, 53); + color: #fff; +} + +.custom-theme .el-button--success.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--success.is-plain:hover, +.custom-theme .el-button--success.is-plain:focus { + background: #fff; + border-color: #00643b; + color: #00643b; +} + +.custom-theme .el-button--success.is-plain:active { + background: #fff; + border-color: rgb(0, 90, 53); + color: rgb(0, 90, 53); + outline: none; +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #f56a00; + border-color: #f56a00; +} + +.custom-theme .el-button--warning:hover, +.custom-theme .el-button--warning:focus { + background: rgb(247, 136, 51); + border-color: rgb(247, 136, 51); + color: #fff; +} + +.custom-theme .el-button--warning:active { + background: rgb(221, 95, 0); + border-color: rgb(221, 95, 0); + color: #fff; + outline: none; +} + +.custom-theme .el-button--warning.is-active { + background: rgb(221, 95, 0); + border-color: rgb(221, 95, 0); + color: #fff; +} + +.custom-theme .el-button--warning.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--warning.is-plain:hover, +.custom-theme .el-button--warning.is-plain:focus { + background: #fff; + border-color: #f56a00; + color: #f56a00; +} + +.custom-theme .el-button--warning.is-plain:active { + background: #fff; + border-color: rgb(221, 95, 0); + color: rgb(221, 95, 0); + outline: none; +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #ffbf00; + border-color: #ffbf00; +} + +.custom-theme .el-button--danger:hover, +.custom-theme .el-button--danger:focus { + background: rgb(255, 204, 51); + border-color: rgb(255, 204, 51); + color: #fff; +} + +.custom-theme .el-button--danger:active { + background: rgb(230, 172, 0); + border-color: rgb(230, 172, 0); + color: #fff; + outline: none; +} + +.custom-theme .el-button--danger.is-active { + background: rgb(230, 172, 0); + border-color: rgb(230, 172, 0); + color: #fff; +} + +.custom-theme .el-button--danger.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--danger.is-plain:hover, +.custom-theme .el-button--danger.is-plain:focus { + background: #fff; + border-color: #ffbf00; + color: #ffbf00; +} + +.custom-theme .el-button--danger.is-plain:active { + background: #fff; + border-color: rgb(230, 172, 0); + color: rgb(230, 172, 0); + outline: none; +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #00a2ae; + border-color: #00a2ae; +} + +.custom-theme .el-button--info:hover, +.custom-theme .el-button--info:focus { + background: rgb(51, 181, 190); + border-color: rgb(51, 181, 190); + color: #fff; +} + +.custom-theme .el-button--info:active { + background: rgb(0, 146, 157); + border-color: rgb(0, 146, 157); + color: #fff; + outline: none; +} + +.custom-theme .el-button--info.is-active { + background: rgb(0, 146, 157); + border-color: rgb(0, 146, 157); + color: #fff; +} + +.custom-theme .el-button--info.is-plain { + background: #fff; + border: 1px solid rgb(191, 199, 217); + color: rgb(31, 40, 61); +} + +.custom-theme .el-button--info.is-plain:hover, +.custom-theme .el-button--info.is-plain:focus { + background: #fff; + border-color: #00a2ae; + color: #00a2ae; +} + +.custom-theme .el-button--info.is-plain:active { + background: #fff; + border-color: rgb(0, 146, 157); + color: rgb(0, 146, 157); + outline: none; +} + +.custom-theme .el-button--large { + padding: 11px 19px; + font-size: 16px; + border-radius: 4px; +} + +.custom-theme .el-button--small { + padding: 7px 9px; + font-size: 12px; + border-radius: 4px; +} + +.custom-theme .el-button--mini { + padding: 4px 4px; + font-size: 12px; + border-radius: 4px; +} + +.custom-theme .el-button--text { + border: none; + color: #073069; + background: transparent; + padding-left: 0; + padding-right: 0; +} + +.custom-theme .el-button--text:hover, +.custom-theme .el-button--text:focus { + color: rgb(57, 89, 135); +} + +.custom-theme .el-button--text:active { + color: rgb(6, 43, 95); +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle; +} + + + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + + + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, 0.5); + border-right-color: rgba(255, 255, 255, 0.5); +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative; +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0; +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0; +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px; +} + +.custom-theme .el-button-group .el-button:hover, +.custom-theme .el-button-group .el-button:focus, +.custom-theme .el-button-group .el-button:active { + z-index: 1; +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-message-box { + text-align: left; + display: inline-block; + vertical-align: middle; + background-color: #fff; + width: 420px; + border-radius: 3px; + font-size: 16px; + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} + +.custom-theme .el-message-box__wrapper { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center; +} + +.custom-theme .el-message-box__wrapper::after { + content: ""; + display: inline-block; + height: 100%; + width: 0; + vertical-align: middle; +} + +.custom-theme .el-message-box__header { + position: relative; + padding: 20px 20px 0; +} + +.custom-theme .el-message-box__content { + padding: 30px 20px; + color: rgb(72, 81, 106); + font-size: 14px; + position: relative; +} + +.custom-theme .el-message-box__close { + display: inline-block; + position: absolute; + top: 19px; + right: 20px; + color: #999; + cursor: pointer; + line-height: 20px; + text-align: center; +} + +.custom-theme .el-message-box__close:hover { + color: #073069; +} + +.custom-theme .el-message-box__input { + padding-top: 15px; +} + +.custom-theme .el-message-box__input input.invalid { + border-color: #ffbf00; +} + +.custom-theme .el-message-box__input input.invalid:focus { + border-color: #ffbf00; +} + +.custom-theme .el-message-box__errormsg { + color: #ffbf00; + font-size: 12px; + min-height: 18px; + margin-top: 2px; +} + +.custom-theme .el-message-box__title { + padding-left: 0; + margin-bottom: 0; + font-size: 16px; + font-weight: 700; + height: 18px; + color: #333; +} + +.custom-theme .el-message-box__message { + margin: 0; +} + +.custom-theme .el-message-box__message p { + margin: 0; + line-height: 1.4; +} + +.custom-theme .el-message-box__btns { + padding: 10px 20px 15px; + text-align: right; +} + +.custom-theme .el-message-box__btns button:nth-child(2) { + margin-left: 10px; +} + +.custom-theme .el-message-box__btns-reverse { + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; +} + +.custom-theme .el-message-box__status { + position: absolute; + top: 50%; + transform: translateY(-50%); + font-size: 36px !important; +} + +.custom-theme .el-message-box__status.el-icon-circle-check { + color: #00643b; +} + +.custom-theme .el-message-box__status.el-icon-information { + color: #00a2ae; +} + +.custom-theme .el-message-box__status.el-icon-warning { + color: #f56a00; +} + +.custom-theme .el-message-box__status.el-icon-circle-cross { + color: #ffbf00; +} + +.custom-theme .msgbox-fade-enter-active { + animation: msgbox-fade-in .3s; +} + +.custom-theme .msgbox-fade-leave-active { + animation: msgbox-fade-out .3s; +} + +@keyframes msgbox-fade-in { + 0% { + transform: translate3d(0, -20px, 0); + opacity: 0; + } + + 100% { + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@keyframes msgbox-fade-out { + 0% { + transform: translate3d(0, 0, 0); + opacity: 1; + } + + 100% { + transform: translate3d(0, -20px, 0); + opacity: 0; + } +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-breadcrumb { + font-size: 13px; + line-height: 1; +} + +.custom-theme .el-breadcrumb__separator { + margin: 0 8px; + color: rgb(191, 199, 217); +} + +.custom-theme .el-breadcrumb__item { + float: left; +} + + + +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__item__inner, +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover, +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__item__inner a, +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover { + color: rgb(151, 161, 190); + cursor: text; +} + +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__separator { + display: none; +} + + + +.custom-theme .el-breadcrumb__item__inner, +.custom-theme .el-breadcrumb__item__inner a { + transition: color .15s linear; + color: rgb(72, 81, 106); +} + +.custom-theme .el-breadcrumb__item__inner:hover, +.custom-theme .el-breadcrumb__item__inner a:hover { + color: #073069; + cursor: pointer; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + + + +.custom-theme .el-form--label-left .el-form-item__label { + text-align: left; +} + + + +.custom-theme .el-form--label-top .el-form-item__label { + float: none; + display: inline-block; + padding: 0 0 10px 0; +} + + + +.custom-theme .el-form--inline .el-form-item { + display: inline-block; + margin-right: 10px; + vertical-align: top; +} + +.custom-theme .el-form--inline .el-form-item__label { + float: none; + display: inline-block; +} + +.custom-theme .el-form--inline .el-form-item__content { + display: inline-block; + vertical-align: top; +} + +.custom-theme .el-form--inline.el-form--label-top .el-form-item__content { + display: block; +} + +.custom-theme .el-form-item { + margin-bottom: 22px; +} + +.custom-theme .el-form-item .el-form-item { + margin-bottom: 0; +} + +.custom-theme .el-form-item .el-form-item .el-form-item__content { + margin-left: 0 !important; +} + + + +.custom-theme .el-form-item.is-error .el-input-group__append .el-input__inner, +.custom-theme .el-form-item.is-error .el-input-group__prepend .el-input__inner, +.custom-theme .el-form-item.is-error .el-input__inner { + border-color: transparent; +} + +.custom-theme .el-form-item.is-error .el-input__inner, +.custom-theme .el-form-item.is-error .el-textarea__inner { + border-color: #ffbf00; +} + +.custom-theme .el-form-item.is-required .el-form-item__label:before { + content: '*'; + color: #ffbf00; + margin-right: 4px; +} + +.custom-theme .el-form-item__label { + text-align: right; + vertical-align: middle; + float: left; + font-size: 14px; + color: rgb(72, 81, 106); + line-height: 1; + padding: 11px 12px 11px 0; + box-sizing: border-box; +} + +.custom-theme .el-form-item__content { + line-height: 36px; + position: relative; + font-size: 14px; +} + +.custom-theme .el-form-item__error { + color: #ffbf00; + font-size: 12px; + line-height: 1; + padding-top: 4px; + position: absolute; + top: 100%; + left: 0; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-tabs__header { + border-bottom: 1px solid rgb(209, 215, 229); + padding: 0; + position: relative; + margin: 0 0 15px; +} + +.custom-theme .el-tabs__active-bar { + position: absolute; + bottom: 0; + left: 0; + height: 3px; + background-color: #073069; + z-index: 1; + transition: transform .3s cubic-bezier(.645,.045,.355,1); + list-style: none; +} + +.custom-theme .el-tabs__new-tab { + float: right; + border: 1px solid #d3dce6; + height: 18px; + width: 18px; + line-height: 18px; + margin: 12px 0 9px 10px; + border-radius: 3px; + text-align: center; + font-size: 12px; + color: #d3dce6; + cursor: pointer; + transition: all .15s; +} + +.custom-theme .el-tabs__new-tab .el-icon-plus { + transform: scale(0.8, 0.8); +} + +.custom-theme .el-tabs__new-tab:hover { + color: #073069; +} + +.custom-theme .el-tabs__nav-wrap { + overflow: hidden; + margin-bottom: -1px; + position: relative; +} + +.custom-theme .el-tabs__nav-wrap.is-scrollable { + padding: 0 15px; +} + +.custom-theme .el-tabs__nav-scroll { + overflow: hidden; +} + +.custom-theme .el-tabs__nav-next, +.custom-theme .el-tabs__nav-prev { + position: absolute; + cursor: pointer; + line-height: 44px; + font-size: 12px; + color: rgb(131, 139, 165); +} + +.custom-theme .el-tabs__nav-next { + right: 0; +} + +.custom-theme .el-tabs__nav-prev { + left: 0; +} + +.custom-theme .el-tabs__nav { + white-space: nowrap; + position: relative; + transition: transform .3s; + float: left; +} + +.custom-theme .el-tabs__item { + padding: 0 16px; + height: 42px; + box-sizing: border-box; + line-height: 42px; + display: inline-block; + list-style: none; + font-size: 14px; + color: rgb(131, 139, 165); + position: relative; +} + +.custom-theme .el-tabs__item .el-icon-close { + border-radius: 50%; + text-align: center; + transition: all .3s cubic-bezier(.645,.045,.355,1); + margin-left: 5px; +} + +.custom-theme .el-tabs__item .el-icon-close:before { + transform: scale(.7, .7); + display: inline-block; +} + +.custom-theme .el-tabs__item .el-icon-close:hover { + background-color: rgb(151, 161, 190); + color: #fff; +} + +.custom-theme .el-tabs__item:hover { + color: rgb(31, 40, 61); + cursor: pointer; +} + +.custom-theme .el-tabs__item.is-disabled { + color: #bbb; + cursor: default; +} + +.custom-theme .el-tabs__item.is-active { + color: #073069; +} + +.custom-theme .el-tabs__content { + overflow: hidden; + position: relative; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__active-bar { + display: none; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item .el-icon-close { + position: relative; + font-size: 12px; + width: 0; + height: 14px; + vertical-align: middle; + line-height: 15px; + overflow: hidden; + top: -1px; + right: -2px; + transform-origin: 100% 50%; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item { + border: 1px solid transparent; + transition: all .3s cubic-bezier(.645,.045,.355,1); +} + + + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover { + padding-right: 9px; + padding-left: 9px; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close { + width: 14px; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active { + border: 1px solid rgb(209, 215, 229); + border-bottom-color: #fff; + border-radius: 4px 4px 0 0; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable { + padding-right: 16px; + padding-left: 16px; +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close { + width: 14px; +} + +.custom-theme .el-tabs--border-card { + background: #fff; + border: 1px solid rgb(209, 215, 229); + box-shadow: 0px 2px 4px 0px rgba(0,0,0,0.12), 0px 0px 6px 0px rgba(0,0,0,0.04); +} + +.custom-theme .el-tabs--border-card >.el-tabs__content { + padding: 15px; +} + +.custom-theme .el-tabs--border-card >.el-tabs__header { + background-color: rgb(238, 240, 246); + margin: 0; +} + +.custom-theme .el-tabs--border-card >.el-tabs__header .el-tabs__item { + transition: all .3s cubic-bezier(.645,.045,.355,1); + border: 1px solid transparent; + border-top: 0; + margin-right: -1px; + margin-left: -1px; +} + +.custom-theme .el-tabs--border-card >.el-tabs__header .el-tabs__item.is-active { + background-color: #fff; + border-right-color: rgb(209, 215, 229); + border-left-color: rgb(209, 215, 229); +} + +.custom-theme .el-tabs--border-card >.el-tabs__header .el-tabs__item.is-active:first-child { + border-left-color: rgb(209, 215, 229); +} + +.custom-theme .el-tabs--border-card >.el-tabs__header .el-tabs__item.is-active:last-child { + border-right-color: rgb(209, 215, 229); +} + +.custom-theme .slideInRight-transition, +.custom-theme .slideInLeft-transition { + display: inline-block; +} + +.custom-theme .slideInRight-enter { + animation: slideInRight-enter .3s; +} + +.custom-theme .slideInRight-leave { + position: absolute; + left: 0; + right: 0; + animation: slideInRight-leave .3s; +} + +.custom-theme .slideInLeft-enter { + animation: slideInLeft-enter .3s; +} + +.custom-theme .slideInLeft-leave { + position: absolute; + left: 0; + right: 0; + animation: slideInLeft-leave .3s; +} + +@keyframes slideInRight-enter { + 0% { + opacity: 0; + transform-origin: 0 0; + transform: translateX(100%); + } + + to { + opacity: 1; + transform-origin: 0 0; + transform: translateX(0); + } +} + +@keyframes slideInRight-leave { + 0% { + transform-origin: 0 0; + transform: translateX(0); + opacity: 1; + } + + 100% { + transform-origin: 0 0; + transform: translateX(100%); + opacity: 0; + } +} + +@keyframes slideInLeft-enter { + 0% { + opacity: 0; + transform-origin: 0 0; + transform: translateX(-100%); + } + + to { + opacity: 1; + transform-origin: 0 0; + transform: translateX(0); + } +} + +@keyframes slideInLeft-leave { + 0% { + transform-origin: 0 0; + transform: translateX(0); + opacity: 1; + } + + 100% { + transform-origin: 0 0; + transform: translateX(-100%); + opacity: 0; + } +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-tag { + background-color: rgb(131, 139, 165); + display: inline-block; + padding: 0 5px; + height: 24px; + line-height: 22px; + font-size: 12px; + color: #fff; + border-radius: 4px; + box-sizing: border-box; + border: 1px solid transparent; + white-space: nowrap; +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + transform: scale(.75, .75); + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -2px; +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #fff; + color: rgb(131, 139, 165); +} + +.custom-theme .el-tag--gray { + background-color: rgb(228, 230, 241); + border-color: rgb(228, 230, 241); + color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--gray .el-tag__close:hover { + background-color: rgb(72, 81, 106); + color: #fff; +} + +.custom-theme .el-tag--gray.is-hit { + border-color: rgb(72, 81, 106); +} + +.custom-theme .el-tag--primary { + background-color: rgba(7, 48, 105, 0.1); + border-color: rgba(7, 48, 105, 0.2); + color: #073069; +} + +.custom-theme .el-tag--primary .el-tag__close:hover { + background-color: #073069; + color: #fff; +} + +.custom-theme .el-tag--primary.is-hit { + border-color: #073069; +} + +.custom-theme .el-tag--success { + background-color: rgba(18,206,102,0.10); + border-color: rgba(18,206,102,0.20); + color: #00643b; +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #00643b; + color: #fff; +} + +.custom-theme .el-tag--success.is-hit { + border-color: #00643b; +} + +.custom-theme .el-tag--warning { + background-color: rgba(247,186,41,0.10); + border-color: rgba(247,186,41,0.20); + color: #f56a00; +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #f56a00; + color: #fff; +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #f56a00; +} + +.custom-theme .el-tag--danger { + background-color: rgba(255,73,73,0.10); + border-color: rgba(255,73,73,0.20); + color: #ffbf00; +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #ffbf00; + color: #fff; +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #ffbf00; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-tree { + cursor: default; + background: #fff; + border: 1px solid rgb(209, 215, 229); +} + +.custom-theme .el-tree__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100%; +} + +.custom-theme .el-tree__empty-text { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + color: rgb(94, 109, 130); +} + +.custom-theme .el-tree-node { + white-space: nowrap; +} + +.custom-theme .el-tree-node > .el-tree-node__children { + overflow: hidden; + background-color: transparent; +} + +.custom-theme .el-tree-node.is-expanded > .el-tree-node__children { + display: block; +} + +.custom-theme .el-tree-node__content { + line-height: 36px; + height: 36px; + cursor: pointer; +} + +.custom-theme .el-tree-node__content > .el-checkbox, +.custom-theme .el-tree-node__content > .el-tree-node__expand-icon { + margin-right: 8px; +} + +.custom-theme .el-tree-node__content > .el-checkbox { + vertical-align: middle; +} + +.custom-theme .el-tree-node__content:hover { + background: rgb(228, 230, 241); +} + +.custom-theme .el-tree-node__expand-icon { + display: inline-block; + cursor: pointer; + width: 0; + height: 0; + vertical-align: middle; + margin-left: 10px; + border: 6px solid transparent; + border-right-width: 0; + border-left-color: rgb(151, 161, 190); + border-left-width: 7px; + transform: rotate(0deg); + transition: transform 0.3s ease-in-out; +} + +.custom-theme .el-tree-node__expand-icon:hover { + border-left-color: #999; +} + +.custom-theme .el-tree-node__expand-icon.expanded { + transform: rotate(90deg); +} + +.custom-theme .el-tree-node__expand-icon.is-leaf { + border-color: transparent; + cursor: default; +} + +.custom-theme .el-tree-node__label { + font-size: 14px; + vertical-align: middle; + display: inline-block; +} + +.custom-theme .el-tree-node__loading-icon { + display: inline-block; + vertical-align: middle; + margin-right: 4px; + font-size: 14px; + color: rgb(151, 161, 190); +} + +.custom-theme .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: rgb(235, 238, 243); +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-alert { + width: 100%; + padding: 8px 16px; + margin: 0; + box-sizing: border-box; + border-radius: 4px; + position: relative; + background-color: #fff; + overflow: hidden; + color: #fff; + opacity: 1; + display: table; + transition: opacity .2s; +} + +.custom-theme .el-alert .el-alert__description { + color: #fff; + font-size: 12px; + margin: 5px 0 0 0; +} + +.custom-theme .el-alert--success { + background-color: #00643b; +} + +.custom-theme .el-alert--info { + background-color: #00a2ae; +} + +.custom-theme .el-alert--warning { + background-color: #f56a00; +} + +.custom-theme .el-alert--error { + background-color: #ffbf00; +} + +.custom-theme .el-alert__content { + display: table-cell; + padding: 0 8px; +} + +.custom-theme .el-alert__icon { + font-size: 16px; + width: 16px; + display: table-cell; + color: #fff; + vertical-align: middle; +} + +.custom-theme .el-alert__icon.is-big { + font-size: 28px; + width: 28px; +} + +.custom-theme .el-alert__title { + font-size: 13px; + line-height: 18px; +} + +.custom-theme .el-alert__title.is-bold { + font-weight: 700; +} + +.custom-theme .el-alert__closebtn { + font-size: 12px; + color: #fff; + opacity: 1; + top: 12px; + right: 15px; + position: absolute; + cursor: pointer; +} + +.custom-theme .el-alert__closebtn.is-customed { + font-style: normal; + font-size: 13px; + top: 9px; +} + +.custom-theme .el-alert-fade-enter, +.custom-theme .el-alert-fade-leave-active { + opacity: 0; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-notification { + width: 330px; + padding: 20px; + box-sizing: border-box; + border-radius: 2px; + position: fixed; + right: 16px; + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); + transition: opacity 0.3s, transform .3s, right .3s, top 0.4s; + overflow: hidden; +} + +.custom-theme .el-notification .el-icon-circle-check { + color: #00643b; +} + +.custom-theme .el-notification .el-icon-circle-cross { + color: #ffbf00; +} + +.custom-theme .el-notification .el-icon-information { + color: #00a2ae; +} + +.custom-theme .el-notification .el-icon-warning { + color: #f56a00; +} + +.custom-theme .el-notification__group { + margin-left: 0; +} + +.custom-theme .el-notification__group.is-with-icon { + margin-left: 55px; +} + +.custom-theme .el-notification__title { + font-weight: 400; + font-size: 16px; + color: rgb(31, 40, 61); + margin: 0; +} + +.custom-theme .el-notification__content { + font-size: 14px; + line-height: 21px; + margin: 10px 0 0 0; + color: rgb(131, 139, 165); + text-align: justify; +} + +.custom-theme .el-notification__icon { + width: 40px; + height: 40px; + font-size: 40px; + float: left; + position: relative; + top: 3px; +} + +.custom-theme .el-notification__closeBtn { + top: 20px; + right: 20px; + position: absolute; + cursor: pointer; + color: rgb(191, 199, 217); + font-size: 14px; +} + +.custom-theme .el-notification__closeBtn:hover { + color: rgb(151, 161, 190); +} + +.custom-theme .el-notification-fade-enter { + transform: translateX(100%); + right: 0; +} + +.custom-theme .el-notification-fade-leave-active { + opacity: 0; +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input-number { + display: inline-block; + overflow: hidden; + width: 180px; + position: relative; +} + +.custom-theme .el-input-number .el-input { + display: block; +} + +.custom-theme .el-input-number .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding-right: 82px; +} + + + +.custom-theme .el-input-number.is-without-controls .el-input__inner { + padding-right: 10px; +} + +.custom-theme .el-input-number.is-disabled .el-input-number__increase, +.custom-theme .el-input-number.is-disabled .el-input-number__decrease { + border-color: rgb(209, 215, 229); + color: rgb(209, 215, 229); +} + +.custom-theme .el-input-number.is-disabled .el-input-number__increase:hover, +.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-input-number__increase, +.custom-theme .el-input-number__decrease { + height: auto; + border-left: 1px solid rgb(191, 199, 217); + width: 36px; + line-height: 34px; + top: 1px; + text-align: center; + color: rgb(151, 161, 190); + cursor: pointer; + position: absolute; + z-index: 1; +} + +.custom-theme .el-input-number__increase:hover, +.custom-theme .el-input-number__decrease:hover { + color: #073069; +} + +.custom-theme .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), +.custom-theme .el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #073069; +} + +.custom-theme .el-input-number__increase.is-disabled, +.custom-theme .el-input-number__decrease.is-disabled { + color: rgb(209, 215, 229); + cursor: not-allowed; +} + +.custom-theme .el-input-number__increase { + right: 0; +} + +.custom-theme .el-input-number__decrease { + right: 37px; +} + +.custom-theme .el-input-number--large { + width: 200px; +} + +.custom-theme .el-input-number--large .el-input-number__increase, +.custom-theme .el-input-number--large .el-input-number__decrease { + line-height: 42px; + width: 42px; + font-size: 16px; +} + +.custom-theme .el-input-number--large .el-input-number__decrease { + right: 43px; +} + +.custom-theme .el-input-number--large .el-input__inner { + padding-right: 94px; +} + +.custom-theme .el-input-number--small { + width: 130px; +} + +.custom-theme .el-input-number--small .el-input-number__increase, +.custom-theme .el-input-number--small .el-input-number__decrease { + line-height: 30px; + width: 30px; + font-size: 13px; +} + +.custom-theme .el-input-number--small .el-input-number__decrease { + right: 31px; +} + +.custom-theme .el-input-number--small .el-input__inner { + padding-right: 70px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2; +} + +.custom-theme .el-tooltip__popper .popper__arrow, +.custom-theme .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.custom-theme .el-tooltip__popper .popper__arrow { + border-width: 6px; +} + +.custom-theme .el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px; +} + +.custom-theme .el-tooltip__popper[x-placement^="top"] { + margin-bottom: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="top"] .popper__arrow { + bottom: -6px; + border-top-color: rgb(31, 40, 61); + border-bottom-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="top"] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: rgb(31, 40, 61); + border-bottom-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="bottom"] { + margin-top: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="bottom"] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper[x-placement^="bottom"] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper[x-placement^="right"] { + margin-left: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="right"] .popper__arrow { + left: -6px; + border-right-color: rgb(31, 40, 61); + border-left-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="right"] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: rgb(31, 40, 61); + border-left-width: 0; +} + +.custom-theme .el-tooltip__popper[x-placement^="left"] { + margin-right: 12px; +} + +.custom-theme .el-tooltip__popper[x-placement^="left"] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper[x-placement^="left"] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light { + background: #fff; + border: 1px solid rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="top"] .popper__arrow { + border-top-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="top"] .popper__arrow::after { + border-top-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="bottom"] .popper__arrow { + border-bottom-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="bottom"] .popper__arrow::after { + border-bottom-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="left"] .popper__arrow { + border-left-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="left"] .popper__arrow::after { + border-left-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="right"] .popper__arrow { + border-right-color: rgb(31, 40, 61); +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^="right"] .popper__arrow::after { + border-right-color: #fff; +} + +.custom-theme .el-tooltip__popper.is-dark { + background: rgb(31, 40, 61); + color: #fff; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-slider:before, +.custom-theme .el-slider:after { + display: table; + content: ""; +} + +.custom-theme .el-slider:after { + clear: both; +} + +.custom-theme .el-slider__runway { + width: 100%; + height: 4px; + margin: 16px 0; + background-color: rgb(228, 230, 241); + border-radius: 3px; + position: relative; + cursor: pointer; + vertical-align: middle; +} + +.custom-theme .el-slider__runway.show-input { + margin-right: 160px; + width: auto; +} + +.custom-theme .el-slider__runway.disabled { + cursor: default; +} + +.custom-theme .el-slider__runway.disabled .el-slider__bar, +.custom-theme .el-slider__runway.disabled .el-slider__button { + background-color: rgb(191, 199, 217); +} + + + +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper:hover, +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.hover { + cursor: not-allowed; +} + +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.dragging { + cursor: not-allowed; +} + + + +.custom-theme .el-slider__runway.disabled .el-slider__button:hover, +.custom-theme .el-slider__runway.disabled .el-slider__button.hover, +.custom-theme .el-slider__runway.disabled .el-slider__button.dragging { + transform: scale(1); +} + +.custom-theme .el-slider__runway.disabled .el-slider__button:hover, +.custom-theme .el-slider__runway.disabled .el-slider__button.hover { + cursor: not-allowed; +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.dragging { + cursor: not-allowed; +} + +.custom-theme .el-slider__input { + float: right; + margin-top: 3px; +} + +.custom-theme .el-slider__bar { + height: 4px; + background-color: #073069; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + position: absolute; +} + +.custom-theme .el-slider__button-wrapper { + width: 36px; + height: 36px; + position: absolute; + z-index: 1001; + top: -16px; + transform: translateX(-50%); + background-color: transparent; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-theme .el-slider__button-wrapper:after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; +} + +.custom-theme .el-slider__button-wrapper .el-tooltip { + vertical-align: middle; + display: inline-block; +} + +.custom-theme .el-slider__button-wrapper:hover, +.custom-theme .el-slider__button-wrapper.hover { + cursor: -webkit-grab; + cursor: grab; +} + +.custom-theme .el-slider__button-wrapper.dragging { + cursor: -webkit-grabbing; + cursor: grabbing; +} + +.custom-theme .el-slider__button { + width: 12px; + height: 12px; + background-color: #073069; + border-radius: 50%; + transition: .2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.custom-theme .el-slider__button:hover, +.custom-theme .el-slider__button.hover, +.custom-theme .el-slider__button.dragging { + transform: scale(1.5); + background-color: rgb(6, 42, 92); +} + +.custom-theme .el-slider__button:hover, +.custom-theme .el-slider__button.hover { + cursor: -webkit-grab; + cursor: grab; +} + +.custom-theme .el-slider__button.dragging { + cursor: -webkit-grabbing; + cursor: grabbing; +} + +.custom-theme .el-slider__stop { + position: absolute; + width: 4px; + height: 4px; + border-radius: 100%; + background-color: rgb(191, 199, 217); + transform: translateX(-50%); +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-loading-mask { + position: absolute; + z-index: 10000; + background-color: rgba(255, 255, 255, .9); + margin: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + transition: opacity 0.3s; +} + +.custom-theme .el-loading-mask.is-fullscreen { + position: fixed; +} + +.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner { + margin-top: -25px; +} + +.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner .circular { + width: 50px; + height: 50px; +} + +.custom-theme .el-loading-spinner { + top: 50%; + margin-top: -21px; + width: 100%; + text-align: center; + position: absolute; +} + +.custom-theme .el-loading-spinner .el-loading-text { + color: #073069; + margin: 3px 0; + font-size: 14px; +} + +.custom-theme .el-loading-spinner .circular { + width: 42px; + height: 42px; + animation: loading-rotate 2s linear infinite; +} + +.custom-theme .el-loading-spinner .path { + animation: loading-dash 1.5s ease-in-out infinite; + stroke-dasharray: 90, 150; + stroke-dashoffset: 0; + stroke-width: 2; + stroke: #073069; + stroke-linecap: round; +} + +.custom-theme .el-loading-fade-enter, +.custom-theme .el-loading-fade-leave-active { + opacity: 0; +} + +@keyframes loading-rotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes loading-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -40px; + } + + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -120px; + } +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-row { + position: relative; + box-sizing: border-box; +} + +.custom-theme .el-row:before, +.custom-theme .el-row:after { + display: table; + content: ""; +} + +.custom-theme .el-row:after { + clear: both; +} + +.custom-theme .el-row--flex { + display: -ms-flexbox; + display: flex; +} + +.custom-theme .el-row--flex:before, +.custom-theme .el-row--flex:after { + display: none; +} + +.custom-theme .el-row--flex.is-align-bottom { + -ms-flex-align: end; + align-items: flex-end; +} + +.custom-theme .el-row--flex.is-align-middle { + -ms-flex-align: center; + align-items: center; +} + +.custom-theme .el-row--flex.is-justify-space-around { + -ms-flex-pack: distribute; + justify-content: space-around; +} + +.custom-theme .el-row--flex.is-justify-space-between { + -ms-flex-pack: justify; + justify-content: space-between; +} + +.custom-theme .el-row--flex.is-justify-end { + -ms-flex-pack: end; + justify-content: flex-end; +} + +.custom-theme .el-row--flex.is-justify-center { + -ms-flex-pack: center; + justify-content: center; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-col-1, +.custom-theme .el-col-2, +.custom-theme .el-col-3, +.custom-theme .el-col-4, +.custom-theme .el-col-5, +.custom-theme .el-col-6, +.custom-theme .el-col-7, +.custom-theme .el-col-8, +.custom-theme .el-col-9, +.custom-theme .el-col-10, +.custom-theme .el-col-11, +.custom-theme .el-col-12, +.custom-theme .el-col-13, +.custom-theme .el-col-14, +.custom-theme .el-col-15, +.custom-theme .el-col-16, +.custom-theme .el-col-17, +.custom-theme .el-col-18, +.custom-theme .el-col-19, +.custom-theme .el-col-20, +.custom-theme .el-col-21, +.custom-theme .el-col-22, +.custom-theme .el-col-23, +.custom-theme .el-col-24 { + float: left; + box-sizing: border-box; +} + +.custom-theme .el-col-0 { + display: none; +} + +.custom-theme .el-col-1 { + width: 4.16667%; +} + +.custom-theme .el-col-offset-1 { + margin-left: 4.16667%; +} + +.custom-theme .el-col-pull-1 { + position: relative; + right: 4.16667%; +} + +.custom-theme .el-col-push-1 { + position: relative; + left: 4.16667%; +} + +.custom-theme .el-col-2 { + width: 8.33333%; +} + +.custom-theme .el-col-offset-2 { + margin-left: 8.33333%; +} + +.custom-theme .el-col-pull-2 { + position: relative; + right: 8.33333%; +} + +.custom-theme .el-col-push-2 { + position: relative; + left: 8.33333%; +} + +.custom-theme .el-col-3 { + width: 12.5%; +} + +.custom-theme .el-col-offset-3 { + margin-left: 12.5%; +} + +.custom-theme .el-col-pull-3 { + position: relative; + right: 12.5%; +} + +.custom-theme .el-col-push-3 { + position: relative; + left: 12.5%; +} + +.custom-theme .el-col-4 { + width: 16.66667%; +} + +.custom-theme .el-col-offset-4 { + margin-left: 16.66667%; +} + +.custom-theme .el-col-pull-4 { + position: relative; + right: 16.66667%; +} + +.custom-theme .el-col-push-4 { + position: relative; + left: 16.66667%; +} + +.custom-theme .el-col-5 { + width: 20.83333%; +} + +.custom-theme .el-col-offset-5 { + margin-left: 20.83333%; +} + +.custom-theme .el-col-pull-5 { + position: relative; + right: 20.83333%; +} + +.custom-theme .el-col-push-5 { + position: relative; + left: 20.83333%; +} + +.custom-theme .el-col-6 { + width: 25%; +} + +.custom-theme .el-col-offset-6 { + margin-left: 25%; +} + +.custom-theme .el-col-pull-6 { + position: relative; + right: 25%; +} + +.custom-theme .el-col-push-6 { + position: relative; + left: 25%; +} + +.custom-theme .el-col-7 { + width: 29.16667%; +} + +.custom-theme .el-col-offset-7 { + margin-left: 29.16667%; +} + +.custom-theme .el-col-pull-7 { + position: relative; + right: 29.16667%; +} + +.custom-theme .el-col-push-7 { + position: relative; + left: 29.16667%; +} + +.custom-theme .el-col-8 { + width: 33.33333%; +} + +.custom-theme .el-col-offset-8 { + margin-left: 33.33333%; +} + +.custom-theme .el-col-pull-8 { + position: relative; + right: 33.33333%; +} + +.custom-theme .el-col-push-8 { + position: relative; + left: 33.33333%; +} + +.custom-theme .el-col-9 { + width: 37.5%; +} + +.custom-theme .el-col-offset-9 { + margin-left: 37.5%; +} + +.custom-theme .el-col-pull-9 { + position: relative; + right: 37.5%; +} + +.custom-theme .el-col-push-9 { + position: relative; + left: 37.5%; +} + +.custom-theme .el-col-10 { + width: 41.66667%; +} + +.custom-theme .el-col-offset-10 { + margin-left: 41.66667%; +} + +.custom-theme .el-col-pull-10 { + position: relative; + right: 41.66667%; +} + +.custom-theme .el-col-push-10 { + position: relative; + left: 41.66667%; +} + +.custom-theme .el-col-11 { + width: 45.83333%; +} + +.custom-theme .el-col-offset-11 { + margin-left: 45.83333%; +} + +.custom-theme .el-col-pull-11 { + position: relative; + right: 45.83333%; +} + +.custom-theme .el-col-push-11 { + position: relative; + left: 45.83333%; +} + +.custom-theme .el-col-12 { + width: 50%; +} + +.custom-theme .el-col-offset-12 { + margin-left: 50%; +} + +.custom-theme .el-col-pull-12 { + position: relative; + right: 50%; +} + +.custom-theme .el-col-push-12 { + position: relative; + left: 50%; +} + +.custom-theme .el-col-13 { + width: 54.16667%; +} + +.custom-theme .el-col-offset-13 { + margin-left: 54.16667%; +} + +.custom-theme .el-col-pull-13 { + position: relative; + right: 54.16667%; +} + +.custom-theme .el-col-push-13 { + position: relative; + left: 54.16667%; +} + +.custom-theme .el-col-14 { + width: 58.33333%; +} + +.custom-theme .el-col-offset-14 { + margin-left: 58.33333%; +} + +.custom-theme .el-col-pull-14 { + position: relative; + right: 58.33333%; +} + +.custom-theme .el-col-push-14 { + position: relative; + left: 58.33333%; +} + +.custom-theme .el-col-15 { + width: 62.5%; +} + +.custom-theme .el-col-offset-15 { + margin-left: 62.5%; +} + +.custom-theme .el-col-pull-15 { + position: relative; + right: 62.5%; +} + +.custom-theme .el-col-push-15 { + position: relative; + left: 62.5%; +} + +.custom-theme .el-col-16 { + width: 66.66667%; +} + +.custom-theme .el-col-offset-16 { + margin-left: 66.66667%; +} + +.custom-theme .el-col-pull-16 { + position: relative; + right: 66.66667%; +} + +.custom-theme .el-col-push-16 { + position: relative; + left: 66.66667%; +} + +.custom-theme .el-col-17 { + width: 70.83333%; +} + +.custom-theme .el-col-offset-17 { + margin-left: 70.83333%; +} + +.custom-theme .el-col-pull-17 { + position: relative; + right: 70.83333%; +} + +.custom-theme .el-col-push-17 { + position: relative; + left: 70.83333%; +} + +.custom-theme .el-col-18 { + width: 75%; +} + +.custom-theme .el-col-offset-18 { + margin-left: 75%; +} + +.custom-theme .el-col-pull-18 { + position: relative; + right: 75%; +} + +.custom-theme .el-col-push-18 { + position: relative; + left: 75%; +} + +.custom-theme .el-col-19 { + width: 79.16667%; +} + +.custom-theme .el-col-offset-19 { + margin-left: 79.16667%; +} + +.custom-theme .el-col-pull-19 { + position: relative; + right: 79.16667%; +} + +.custom-theme .el-col-push-19 { + position: relative; + left: 79.16667%; +} + +.custom-theme .el-col-20 { + width: 83.33333%; +} + +.custom-theme .el-col-offset-20 { + margin-left: 83.33333%; +} + +.custom-theme .el-col-pull-20 { + position: relative; + right: 83.33333%; +} + +.custom-theme .el-col-push-20 { + position: relative; + left: 83.33333%; +} + +.custom-theme .el-col-21 { + width: 87.5%; +} + +.custom-theme .el-col-offset-21 { + margin-left: 87.5%; +} + +.custom-theme .el-col-pull-21 { + position: relative; + right: 87.5%; +} + +.custom-theme .el-col-push-21 { + position: relative; + left: 87.5%; +} + +.custom-theme .el-col-22 { + width: 91.66667%; +} + +.custom-theme .el-col-offset-22 { + margin-left: 91.66667%; +} + +.custom-theme .el-col-pull-22 { + position: relative; + right: 91.66667%; +} + +.custom-theme .el-col-push-22 { + position: relative; + left: 91.66667%; +} + +.custom-theme .el-col-23 { + width: 95.83333%; +} + +.custom-theme .el-col-offset-23 { + margin-left: 95.83333%; +} + +.custom-theme .el-col-pull-23 { + position: relative; + right: 95.83333%; +} + +.custom-theme .el-col-push-23 { + position: relative; + left: 95.83333%; +} + +.custom-theme .el-col-24 { + width: 100%; +} + +.custom-theme .el-col-offset-24 { + margin-left: 100%; +} + +.custom-theme .el-col-pull-24 { + position: relative; + right: 100%; +} + +.custom-theme .el-col-push-24 { + position: relative; + left: 100%; +} + +@media (max-width: 768px) { + .custom-theme .el-col-xs-1 { + width: 4.16667%; + } + + .custom-theme .el-col-xs-offset-1 { + margin-left: 4.16667%; + } + + .custom-theme .el-col-xs-pull-1 { + position: relative; + right: 4.16667%; + } + + .custom-theme .el-col-xs-push-1 { + position: relative; + left: 4.16667%; + } + + .custom-theme .el-col-xs-2 { + width: 8.33333%; + } + + .custom-theme .el-col-xs-offset-2 { + margin-left: 8.33333%; + } + + .custom-theme .el-col-xs-pull-2 { + position: relative; + right: 8.33333%; + } + + .custom-theme .el-col-xs-push-2 { + position: relative; + left: 8.33333%; + } + + .custom-theme .el-col-xs-3 { + width: 12.5%; + } + + .custom-theme .el-col-xs-offset-3 { + margin-left: 12.5%; + } + + .custom-theme .el-col-xs-pull-3 { + position: relative; + right: 12.5%; + } + + .custom-theme .el-col-xs-push-3 { + position: relative; + left: 12.5%; + } + + .custom-theme .el-col-xs-4 { + width: 16.66667%; + } + + .custom-theme .el-col-xs-offset-4 { + margin-left: 16.66667%; + } + + .custom-theme .el-col-xs-pull-4 { + position: relative; + right: 16.66667%; + } + + .custom-theme .el-col-xs-push-4 { + position: relative; + left: 16.66667%; + } + + .custom-theme .el-col-xs-5 { + width: 20.83333%; + } + + .custom-theme .el-col-xs-offset-5 { + margin-left: 20.83333%; + } + + .custom-theme .el-col-xs-pull-5 { + position: relative; + right: 20.83333%; + } + + .custom-theme .el-col-xs-push-5 { + position: relative; + left: 20.83333%; + } + + .custom-theme .el-col-xs-6 { + width: 25%; + } + + .custom-theme .el-col-xs-offset-6 { + margin-left: 25%; + } + + .custom-theme .el-col-xs-pull-6 { + position: relative; + right: 25%; + } + + .custom-theme .el-col-xs-push-6 { + position: relative; + left: 25%; + } + + .custom-theme .el-col-xs-7 { + width: 29.16667%; + } + + .custom-theme .el-col-xs-offset-7 { + margin-left: 29.16667%; + } + + .custom-theme .el-col-xs-pull-7 { + position: relative; + right: 29.16667%; + } + + .custom-theme .el-col-xs-push-7 { + position: relative; + left: 29.16667%; + } + + .custom-theme .el-col-xs-8 { + width: 33.33333%; + } + + .custom-theme .el-col-xs-offset-8 { + margin-left: 33.33333%; + } + + .custom-theme .el-col-xs-pull-8 { + position: relative; + right: 33.33333%; + } + + .custom-theme .el-col-xs-push-8 { + position: relative; + left: 33.33333%; + } + + .custom-theme .el-col-xs-9 { + width: 37.5%; + } + + .custom-theme .el-col-xs-offset-9 { + margin-left: 37.5%; + } + + .custom-theme .el-col-xs-pull-9 { + position: relative; + right: 37.5%; + } + + .custom-theme .el-col-xs-push-9 { + position: relative; + left: 37.5%; + } + + .custom-theme .el-col-xs-10 { + width: 41.66667%; + } + + .custom-theme .el-col-xs-offset-10 { + margin-left: 41.66667%; + } + + .custom-theme .el-col-xs-pull-10 { + position: relative; + right: 41.66667%; + } + + .custom-theme .el-col-xs-push-10 { + position: relative; + left: 41.66667%; + } + + .custom-theme .el-col-xs-11 { + width: 45.83333%; + } + + .custom-theme .el-col-xs-offset-11 { + margin-left: 45.83333%; + } + + .custom-theme .el-col-xs-pull-11 { + position: relative; + right: 45.83333%; + } + + .custom-theme .el-col-xs-push-11 { + position: relative; + left: 45.83333%; + } + + .custom-theme .el-col-xs-12 { + width: 50%; + } + + .custom-theme .el-col-xs-offset-12 { + margin-left: 50%; + } + + .custom-theme .el-col-xs-pull-12 { + position: relative; + right: 50%; + } + + .custom-theme .el-col-xs-push-12 { + position: relative; + left: 50%; + } + + .custom-theme .el-col-xs-13 { + width: 54.16667%; + } + + .custom-theme .el-col-xs-offset-13 { + margin-left: 54.16667%; + } + + .custom-theme .el-col-xs-pull-13 { + position: relative; + right: 54.16667%; + } + + .custom-theme .el-col-xs-push-13 { + position: relative; + left: 54.16667%; + } + + .custom-theme .el-col-xs-14 { + width: 58.33333%; + } + + .custom-theme .el-col-xs-offset-14 { + margin-left: 58.33333%; + } + + .custom-theme .el-col-xs-pull-14 { + position: relative; + right: 58.33333%; + } + + .custom-theme .el-col-xs-push-14 { + position: relative; + left: 58.33333%; + } + + .custom-theme .el-col-xs-15 { + width: 62.5%; + } + + .custom-theme .el-col-xs-offset-15 { + margin-left: 62.5%; + } + + .custom-theme .el-col-xs-pull-15 { + position: relative; + right: 62.5%; + } + + .custom-theme .el-col-xs-push-15 { + position: relative; + left: 62.5%; + } + + .custom-theme .el-col-xs-16 { + width: 66.66667%; + } + + .custom-theme .el-col-xs-offset-16 { + margin-left: 66.66667%; + } + + .custom-theme .el-col-xs-pull-16 { + position: relative; + right: 66.66667%; + } + + .custom-theme .el-col-xs-push-16 { + position: relative; + left: 66.66667%; + } + + .custom-theme .el-col-xs-17 { + width: 70.83333%; + } + + .custom-theme .el-col-xs-offset-17 { + margin-left: 70.83333%; + } + + .custom-theme .el-col-xs-pull-17 { + position: relative; + right: 70.83333%; + } + + .custom-theme .el-col-xs-push-17 { + position: relative; + left: 70.83333%; + } + + .custom-theme .el-col-xs-18 { + width: 75%; + } + + .custom-theme .el-col-xs-offset-18 { + margin-left: 75%; + } + + .custom-theme .el-col-xs-pull-18 { + position: relative; + right: 75%; + } + + .custom-theme .el-col-xs-push-18 { + position: relative; + left: 75%; + } + + .custom-theme .el-col-xs-19 { + width: 79.16667%; + } + + .custom-theme .el-col-xs-offset-19 { + margin-left: 79.16667%; + } + + .custom-theme .el-col-xs-pull-19 { + position: relative; + right: 79.16667%; + } + + .custom-theme .el-col-xs-push-19 { + position: relative; + left: 79.16667%; + } + + .custom-theme .el-col-xs-20 { + width: 83.33333%; + } + + .custom-theme .el-col-xs-offset-20 { + margin-left: 83.33333%; + } + + .custom-theme .el-col-xs-pull-20 { + position: relative; + right: 83.33333%; + } + + .custom-theme .el-col-xs-push-20 { + position: relative; + left: 83.33333%; + } + + .custom-theme .el-col-xs-21 { + width: 87.5%; + } + + .custom-theme .el-col-xs-offset-21 { + margin-left: 87.5%; + } + + .custom-theme .el-col-xs-pull-21 { + position: relative; + right: 87.5%; + } + + .custom-theme .el-col-xs-push-21 { + position: relative; + left: 87.5%; + } + + .custom-theme .el-col-xs-22 { + width: 91.66667%; + } + + .custom-theme .el-col-xs-offset-22 { + margin-left: 91.66667%; + } + + .custom-theme .el-col-xs-pull-22 { + position: relative; + right: 91.66667%; + } + + .custom-theme .el-col-xs-push-22 { + position: relative; + left: 91.66667%; + } + + .custom-theme .el-col-xs-23 { + width: 95.83333%; + } + + .custom-theme .el-col-xs-offset-23 { + margin-left: 95.83333%; + } + + .custom-theme .el-col-xs-pull-23 { + position: relative; + right: 95.83333%; + } + + .custom-theme .el-col-xs-push-23 { + position: relative; + left: 95.83333%; + } + + .custom-theme .el-col-xs-24 { + width: 100%; + } + + .custom-theme .el-col-xs-offset-24 { + margin-left: 100%; + } + + .custom-theme .el-col-xs-pull-24 { + position: relative; + right: 100%; + } + + .custom-theme .el-col-xs-push-24 { + position: relative; + left: 100%; + } +} + +@media (min-width: 768px) { + .custom-theme .el-col-sm-1 { + width: 4.16667%; + } + + .custom-theme .el-col-sm-offset-1 { + margin-left: 4.16667%; + } + + .custom-theme .el-col-sm-pull-1 { + position: relative; + right: 4.16667%; + } + + .custom-theme .el-col-sm-push-1 { + position: relative; + left: 4.16667%; + } + + .custom-theme .el-col-sm-2 { + width: 8.33333%; + } + + .custom-theme .el-col-sm-offset-2 { + margin-left: 8.33333%; + } + + .custom-theme .el-col-sm-pull-2 { + position: relative; + right: 8.33333%; + } + + .custom-theme .el-col-sm-push-2 { + position: relative; + left: 8.33333%; + } + + .custom-theme .el-col-sm-3 { + width: 12.5%; + } + + .custom-theme .el-col-sm-offset-3 { + margin-left: 12.5%; + } + + .custom-theme .el-col-sm-pull-3 { + position: relative; + right: 12.5%; + } + + .custom-theme .el-col-sm-push-3 { + position: relative; + left: 12.5%; + } + + .custom-theme .el-col-sm-4 { + width: 16.66667%; + } + + .custom-theme .el-col-sm-offset-4 { + margin-left: 16.66667%; + } + + .custom-theme .el-col-sm-pull-4 { + position: relative; + right: 16.66667%; + } + + .custom-theme .el-col-sm-push-4 { + position: relative; + left: 16.66667%; + } + + .custom-theme .el-col-sm-5 { + width: 20.83333%; + } + + .custom-theme .el-col-sm-offset-5 { + margin-left: 20.83333%; + } + + .custom-theme .el-col-sm-pull-5 { + position: relative; + right: 20.83333%; + } + + .custom-theme .el-col-sm-push-5 { + position: relative; + left: 20.83333%; + } + + .custom-theme .el-col-sm-6 { + width: 25%; + } + + .custom-theme .el-col-sm-offset-6 { + margin-left: 25%; + } + + .custom-theme .el-col-sm-pull-6 { + position: relative; + right: 25%; + } + + .custom-theme .el-col-sm-push-6 { + position: relative; + left: 25%; + } + + .custom-theme .el-col-sm-7 { + width: 29.16667%; + } + + .custom-theme .el-col-sm-offset-7 { + margin-left: 29.16667%; + } + + .custom-theme .el-col-sm-pull-7 { + position: relative; + right: 29.16667%; + } + + .custom-theme .el-col-sm-push-7 { + position: relative; + left: 29.16667%; + } + + .custom-theme .el-col-sm-8 { + width: 33.33333%; + } + + .custom-theme .el-col-sm-offset-8 { + margin-left: 33.33333%; + } + + .custom-theme .el-col-sm-pull-8 { + position: relative; + right: 33.33333%; + } + + .custom-theme .el-col-sm-push-8 { + position: relative; + left: 33.33333%; + } + + .custom-theme .el-col-sm-9 { + width: 37.5%; + } + + .custom-theme .el-col-sm-offset-9 { + margin-left: 37.5%; + } + + .custom-theme .el-col-sm-pull-9 { + position: relative; + right: 37.5%; + } + + .custom-theme .el-col-sm-push-9 { + position: relative; + left: 37.5%; + } + + .custom-theme .el-col-sm-10 { + width: 41.66667%; + } + + .custom-theme .el-col-sm-offset-10 { + margin-left: 41.66667%; + } + + .custom-theme .el-col-sm-pull-10 { + position: relative; + right: 41.66667%; + } + + .custom-theme .el-col-sm-push-10 { + position: relative; + left: 41.66667%; + } + + .custom-theme .el-col-sm-11 { + width: 45.83333%; + } + + .custom-theme .el-col-sm-offset-11 { + margin-left: 45.83333%; + } + + .custom-theme .el-col-sm-pull-11 { + position: relative; + right: 45.83333%; + } + + .custom-theme .el-col-sm-push-11 { + position: relative; + left: 45.83333%; + } + + .custom-theme .el-col-sm-12 { + width: 50%; + } + + .custom-theme .el-col-sm-offset-12 { + margin-left: 50%; + } + + .custom-theme .el-col-sm-pull-12 { + position: relative; + right: 50%; + } + + .custom-theme .el-col-sm-push-12 { + position: relative; + left: 50%; + } + + .custom-theme .el-col-sm-13 { + width: 54.16667%; + } + + .custom-theme .el-col-sm-offset-13 { + margin-left: 54.16667%; + } + + .custom-theme .el-col-sm-pull-13 { + position: relative; + right: 54.16667%; + } + + .custom-theme .el-col-sm-push-13 { + position: relative; + left: 54.16667%; + } + + .custom-theme .el-col-sm-14 { + width: 58.33333%; + } + + .custom-theme .el-col-sm-offset-14 { + margin-left: 58.33333%; + } + + .custom-theme .el-col-sm-pull-14 { + position: relative; + right: 58.33333%; + } + + .custom-theme .el-col-sm-push-14 { + position: relative; + left: 58.33333%; + } + + .custom-theme .el-col-sm-15 { + width: 62.5%; + } + + .custom-theme .el-col-sm-offset-15 { + margin-left: 62.5%; + } + + .custom-theme .el-col-sm-pull-15 { + position: relative; + right: 62.5%; + } + + .custom-theme .el-col-sm-push-15 { + position: relative; + left: 62.5%; + } + + .custom-theme .el-col-sm-16 { + width: 66.66667%; + } + + .custom-theme .el-col-sm-offset-16 { + margin-left: 66.66667%; + } + + .custom-theme .el-col-sm-pull-16 { + position: relative; + right: 66.66667%; + } + + .custom-theme .el-col-sm-push-16 { + position: relative; + left: 66.66667%; + } + + .custom-theme .el-col-sm-17 { + width: 70.83333%; + } + + .custom-theme .el-col-sm-offset-17 { + margin-left: 70.83333%; + } + + .custom-theme .el-col-sm-pull-17 { + position: relative; + right: 70.83333%; + } + + .custom-theme .el-col-sm-push-17 { + position: relative; + left: 70.83333%; + } + + .custom-theme .el-col-sm-18 { + width: 75%; + } + + .custom-theme .el-col-sm-offset-18 { + margin-left: 75%; + } + + .custom-theme .el-col-sm-pull-18 { + position: relative; + right: 75%; + } + + .custom-theme .el-col-sm-push-18 { + position: relative; + left: 75%; + } + + .custom-theme .el-col-sm-19 { + width: 79.16667%; + } + + .custom-theme .el-col-sm-offset-19 { + margin-left: 79.16667%; + } + + .custom-theme .el-col-sm-pull-19 { + position: relative; + right: 79.16667%; + } + + .custom-theme .el-col-sm-push-19 { + position: relative; + left: 79.16667%; + } + + .custom-theme .el-col-sm-20 { + width: 83.33333%; + } + + .custom-theme .el-col-sm-offset-20 { + margin-left: 83.33333%; + } + + .custom-theme .el-col-sm-pull-20 { + position: relative; + right: 83.33333%; + } + + .custom-theme .el-col-sm-push-20 { + position: relative; + left: 83.33333%; + } + + .custom-theme .el-col-sm-21 { + width: 87.5%; + } + + .custom-theme .el-col-sm-offset-21 { + margin-left: 87.5%; + } + + .custom-theme .el-col-sm-pull-21 { + position: relative; + right: 87.5%; + } + + .custom-theme .el-col-sm-push-21 { + position: relative; + left: 87.5%; + } + + .custom-theme .el-col-sm-22 { + width: 91.66667%; + } + + .custom-theme .el-col-sm-offset-22 { + margin-left: 91.66667%; + } + + .custom-theme .el-col-sm-pull-22 { + position: relative; + right: 91.66667%; + } + + .custom-theme .el-col-sm-push-22 { + position: relative; + left: 91.66667%; + } + + .custom-theme .el-col-sm-23 { + width: 95.83333%; + } + + .custom-theme .el-col-sm-offset-23 { + margin-left: 95.83333%; + } + + .custom-theme .el-col-sm-pull-23 { + position: relative; + right: 95.83333%; + } + + .custom-theme .el-col-sm-push-23 { + position: relative; + left: 95.83333%; + } + + .custom-theme .el-col-sm-24 { + width: 100%; + } + + .custom-theme .el-col-sm-offset-24 { + margin-left: 100%; + } + + .custom-theme .el-col-sm-pull-24 { + position: relative; + right: 100%; + } + + .custom-theme .el-col-sm-push-24 { + position: relative; + left: 100%; + } +} + +@media (min-width: 992px) { + .custom-theme .el-col-md-1 { + width: 4.16667%; + } + + .custom-theme .el-col-md-offset-1 { + margin-left: 4.16667%; + } + + .custom-theme .el-col-md-pull-1 { + position: relative; + right: 4.16667%; + } + + .custom-theme .el-col-md-push-1 { + position: relative; + left: 4.16667%; + } + + .custom-theme .el-col-md-2 { + width: 8.33333%; + } + + .custom-theme .el-col-md-offset-2 { + margin-left: 8.33333%; + } + + .custom-theme .el-col-md-pull-2 { + position: relative; + right: 8.33333%; + } + + .custom-theme .el-col-md-push-2 { + position: relative; + left: 8.33333%; + } + + .custom-theme .el-col-md-3 { + width: 12.5%; + } + + .custom-theme .el-col-md-offset-3 { + margin-left: 12.5%; + } + + .custom-theme .el-col-md-pull-3 { + position: relative; + right: 12.5%; + } + + .custom-theme .el-col-md-push-3 { + position: relative; + left: 12.5%; + } + + .custom-theme .el-col-md-4 { + width: 16.66667%; + } + + .custom-theme .el-col-md-offset-4 { + margin-left: 16.66667%; + } + + .custom-theme .el-col-md-pull-4 { + position: relative; + right: 16.66667%; + } + + .custom-theme .el-col-md-push-4 { + position: relative; + left: 16.66667%; + } + + .custom-theme .el-col-md-5 { + width: 20.83333%; + } + + .custom-theme .el-col-md-offset-5 { + margin-left: 20.83333%; + } + + .custom-theme .el-col-md-pull-5 { + position: relative; + right: 20.83333%; + } + + .custom-theme .el-col-md-push-5 { + position: relative; + left: 20.83333%; + } + + .custom-theme .el-col-md-6 { + width: 25%; + } + + .custom-theme .el-col-md-offset-6 { + margin-left: 25%; + } + + .custom-theme .el-col-md-pull-6 { + position: relative; + right: 25%; + } + + .custom-theme .el-col-md-push-6 { + position: relative; + left: 25%; + } + + .custom-theme .el-col-md-7 { + width: 29.16667%; + } + + .custom-theme .el-col-md-offset-7 { + margin-left: 29.16667%; + } + + .custom-theme .el-col-md-pull-7 { + position: relative; + right: 29.16667%; + } + + .custom-theme .el-col-md-push-7 { + position: relative; + left: 29.16667%; + } + + .custom-theme .el-col-md-8 { + width: 33.33333%; + } + + .custom-theme .el-col-md-offset-8 { + margin-left: 33.33333%; + } + + .custom-theme .el-col-md-pull-8 { + position: relative; + right: 33.33333%; + } + + .custom-theme .el-col-md-push-8 { + position: relative; + left: 33.33333%; + } + + .custom-theme .el-col-md-9 { + width: 37.5%; + } + + .custom-theme .el-col-md-offset-9 { + margin-left: 37.5%; + } + + .custom-theme .el-col-md-pull-9 { + position: relative; + right: 37.5%; + } + + .custom-theme .el-col-md-push-9 { + position: relative; + left: 37.5%; + } + + .custom-theme .el-col-md-10 { + width: 41.66667%; + } + + .custom-theme .el-col-md-offset-10 { + margin-left: 41.66667%; + } + + .custom-theme .el-col-md-pull-10 { + position: relative; + right: 41.66667%; + } + + .custom-theme .el-col-md-push-10 { + position: relative; + left: 41.66667%; + } + + .custom-theme .el-col-md-11 { + width: 45.83333%; + } + + .custom-theme .el-col-md-offset-11 { + margin-left: 45.83333%; + } + + .custom-theme .el-col-md-pull-11 { + position: relative; + right: 45.83333%; + } + + .custom-theme .el-col-md-push-11 { + position: relative; + left: 45.83333%; + } + + .custom-theme .el-col-md-12 { + width: 50%; + } + + .custom-theme .el-col-md-offset-12 { + margin-left: 50%; + } + + .custom-theme .el-col-md-pull-12 { + position: relative; + right: 50%; + } + + .custom-theme .el-col-md-push-12 { + position: relative; + left: 50%; + } + + .custom-theme .el-col-md-13 { + width: 54.16667%; + } + + .custom-theme .el-col-md-offset-13 { + margin-left: 54.16667%; + } + + .custom-theme .el-col-md-pull-13 { + position: relative; + right: 54.16667%; + } + + .custom-theme .el-col-md-push-13 { + position: relative; + left: 54.16667%; + } + + .custom-theme .el-col-md-14 { + width: 58.33333%; + } + + .custom-theme .el-col-md-offset-14 { + margin-left: 58.33333%; + } + + .custom-theme .el-col-md-pull-14 { + position: relative; + right: 58.33333%; + } + + .custom-theme .el-col-md-push-14 { + position: relative; + left: 58.33333%; + } + + .custom-theme .el-col-md-15 { + width: 62.5%; + } + + .custom-theme .el-col-md-offset-15 { + margin-left: 62.5%; + } + + .custom-theme .el-col-md-pull-15 { + position: relative; + right: 62.5%; + } + + .custom-theme .el-col-md-push-15 { + position: relative; + left: 62.5%; + } + + .custom-theme .el-col-md-16 { + width: 66.66667%; + } + + .custom-theme .el-col-md-offset-16 { + margin-left: 66.66667%; + } + + .custom-theme .el-col-md-pull-16 { + position: relative; + right: 66.66667%; + } + + .custom-theme .el-col-md-push-16 { + position: relative; + left: 66.66667%; + } + + .custom-theme .el-col-md-17 { + width: 70.83333%; + } + + .custom-theme .el-col-md-offset-17 { + margin-left: 70.83333%; + } + + .custom-theme .el-col-md-pull-17 { + position: relative; + right: 70.83333%; + } + + .custom-theme .el-col-md-push-17 { + position: relative; + left: 70.83333%; + } + + .custom-theme .el-col-md-18 { + width: 75%; + } + + .custom-theme .el-col-md-offset-18 { + margin-left: 75%; + } + + .custom-theme .el-col-md-pull-18 { + position: relative; + right: 75%; + } + + .custom-theme .el-col-md-push-18 { + position: relative; + left: 75%; + } + + .custom-theme .el-col-md-19 { + width: 79.16667%; + } + + .custom-theme .el-col-md-offset-19 { + margin-left: 79.16667%; + } + + .custom-theme .el-col-md-pull-19 { + position: relative; + right: 79.16667%; + } + + .custom-theme .el-col-md-push-19 { + position: relative; + left: 79.16667%; + } + + .custom-theme .el-col-md-20 { + width: 83.33333%; + } + + .custom-theme .el-col-md-offset-20 { + margin-left: 83.33333%; + } + + .custom-theme .el-col-md-pull-20 { + position: relative; + right: 83.33333%; + } + + .custom-theme .el-col-md-push-20 { + position: relative; + left: 83.33333%; + } + + .custom-theme .el-col-md-21 { + width: 87.5%; + } + + .custom-theme .el-col-md-offset-21 { + margin-left: 87.5%; + } + + .custom-theme .el-col-md-pull-21 { + position: relative; + right: 87.5%; + } + + .custom-theme .el-col-md-push-21 { + position: relative; + left: 87.5%; + } + + .custom-theme .el-col-md-22 { + width: 91.66667%; + } + + .custom-theme .el-col-md-offset-22 { + margin-left: 91.66667%; + } + + .custom-theme .el-col-md-pull-22 { + position: relative; + right: 91.66667%; + } + + .custom-theme .el-col-md-push-22 { + position: relative; + left: 91.66667%; + } + + .custom-theme .el-col-md-23 { + width: 95.83333%; + } + + .custom-theme .el-col-md-offset-23 { + margin-left: 95.83333%; + } + + .custom-theme .el-col-md-pull-23 { + position: relative; + right: 95.83333%; + } + + .custom-theme .el-col-md-push-23 { + position: relative; + left: 95.83333%; + } + + .custom-theme .el-col-md-24 { + width: 100%; + } + + .custom-theme .el-col-md-offset-24 { + margin-left: 100%; + } + + .custom-theme .el-col-md-pull-24 { + position: relative; + right: 100%; + } + + .custom-theme .el-col-md-push-24 { + position: relative; + left: 100%; + } +} + +@media (min-width: 1200px) { + .custom-theme .el-col-lg-1 { + width: 4.16667%; + } + + .custom-theme .el-col-lg-offset-1 { + margin-left: 4.16667%; + } + + .custom-theme .el-col-lg-pull-1 { + position: relative; + right: 4.16667%; + } + + .custom-theme .el-col-lg-push-1 { + position: relative; + left: 4.16667%; + } + + .custom-theme .el-col-lg-2 { + width: 8.33333%; + } + + .custom-theme .el-col-lg-offset-2 { + margin-left: 8.33333%; + } + + .custom-theme .el-col-lg-pull-2 { + position: relative; + right: 8.33333%; + } + + .custom-theme .el-col-lg-push-2 { + position: relative; + left: 8.33333%; + } + + .custom-theme .el-col-lg-3 { + width: 12.5%; + } + + .custom-theme .el-col-lg-offset-3 { + margin-left: 12.5%; + } + + .custom-theme .el-col-lg-pull-3 { + position: relative; + right: 12.5%; + } + + .custom-theme .el-col-lg-push-3 { + position: relative; + left: 12.5%; + } + + .custom-theme .el-col-lg-4 { + width: 16.66667%; + } + + .custom-theme .el-col-lg-offset-4 { + margin-left: 16.66667%; + } + + .custom-theme .el-col-lg-pull-4 { + position: relative; + right: 16.66667%; + } + + .custom-theme .el-col-lg-push-4 { + position: relative; + left: 16.66667%; + } + + .custom-theme .el-col-lg-5 { + width: 20.83333%; + } + + .custom-theme .el-col-lg-offset-5 { + margin-left: 20.83333%; + } + + .custom-theme .el-col-lg-pull-5 { + position: relative; + right: 20.83333%; + } + + .custom-theme .el-col-lg-push-5 { + position: relative; + left: 20.83333%; + } + + .custom-theme .el-col-lg-6 { + width: 25%; + } + + .custom-theme .el-col-lg-offset-6 { + margin-left: 25%; + } + + .custom-theme .el-col-lg-pull-6 { + position: relative; + right: 25%; + } + + .custom-theme .el-col-lg-push-6 { + position: relative; + left: 25%; + } + + .custom-theme .el-col-lg-7 { + width: 29.16667%; + } + + .custom-theme .el-col-lg-offset-7 { + margin-left: 29.16667%; + } + + .custom-theme .el-col-lg-pull-7 { + position: relative; + right: 29.16667%; + } + + .custom-theme .el-col-lg-push-7 { + position: relative; + left: 29.16667%; + } + + .custom-theme .el-col-lg-8 { + width: 33.33333%; + } + + .custom-theme .el-col-lg-offset-8 { + margin-left: 33.33333%; + } + + .custom-theme .el-col-lg-pull-8 { + position: relative; + right: 33.33333%; + } + + .custom-theme .el-col-lg-push-8 { + position: relative; + left: 33.33333%; + } + + .custom-theme .el-col-lg-9 { + width: 37.5%; + } + + .custom-theme .el-col-lg-offset-9 { + margin-left: 37.5%; + } + + .custom-theme .el-col-lg-pull-9 { + position: relative; + right: 37.5%; + } + + .custom-theme .el-col-lg-push-9 { + position: relative; + left: 37.5%; + } + + .custom-theme .el-col-lg-10 { + width: 41.66667%; + } + + .custom-theme .el-col-lg-offset-10 { + margin-left: 41.66667%; + } + + .custom-theme .el-col-lg-pull-10 { + position: relative; + right: 41.66667%; + } + + .custom-theme .el-col-lg-push-10 { + position: relative; + left: 41.66667%; + } + + .custom-theme .el-col-lg-11 { + width: 45.83333%; + } + + .custom-theme .el-col-lg-offset-11 { + margin-left: 45.83333%; + } + + .custom-theme .el-col-lg-pull-11 { + position: relative; + right: 45.83333%; + } + + .custom-theme .el-col-lg-push-11 { + position: relative; + left: 45.83333%; + } + + .custom-theme .el-col-lg-12 { + width: 50%; + } + + .custom-theme .el-col-lg-offset-12 { + margin-left: 50%; + } + + .custom-theme .el-col-lg-pull-12 { + position: relative; + right: 50%; + } + + .custom-theme .el-col-lg-push-12 { + position: relative; + left: 50%; + } + + .custom-theme .el-col-lg-13 { + width: 54.16667%; + } + + .custom-theme .el-col-lg-offset-13 { + margin-left: 54.16667%; + } + + .custom-theme .el-col-lg-pull-13 { + position: relative; + right: 54.16667%; + } + + .custom-theme .el-col-lg-push-13 { + position: relative; + left: 54.16667%; + } + + .custom-theme .el-col-lg-14 { + width: 58.33333%; + } + + .custom-theme .el-col-lg-offset-14 { + margin-left: 58.33333%; + } + + .custom-theme .el-col-lg-pull-14 { + position: relative; + right: 58.33333%; + } + + .custom-theme .el-col-lg-push-14 { + position: relative; + left: 58.33333%; + } + + .custom-theme .el-col-lg-15 { + width: 62.5%; + } + + .custom-theme .el-col-lg-offset-15 { + margin-left: 62.5%; + } + + .custom-theme .el-col-lg-pull-15 { + position: relative; + right: 62.5%; + } + + .custom-theme .el-col-lg-push-15 { + position: relative; + left: 62.5%; + } + + .custom-theme .el-col-lg-16 { + width: 66.66667%; + } + + .custom-theme .el-col-lg-offset-16 { + margin-left: 66.66667%; + } + + .custom-theme .el-col-lg-pull-16 { + position: relative; + right: 66.66667%; + } + + .custom-theme .el-col-lg-push-16 { + position: relative; + left: 66.66667%; + } + + .custom-theme .el-col-lg-17 { + width: 70.83333%; + } + + .custom-theme .el-col-lg-offset-17 { + margin-left: 70.83333%; + } + + .custom-theme .el-col-lg-pull-17 { + position: relative; + right: 70.83333%; + } + + .custom-theme .el-col-lg-push-17 { + position: relative; + left: 70.83333%; + } + + .custom-theme .el-col-lg-18 { + width: 75%; + } + + .custom-theme .el-col-lg-offset-18 { + margin-left: 75%; + } + + .custom-theme .el-col-lg-pull-18 { + position: relative; + right: 75%; + } + + .custom-theme .el-col-lg-push-18 { + position: relative; + left: 75%; + } + + .custom-theme .el-col-lg-19 { + width: 79.16667%; + } + + .custom-theme .el-col-lg-offset-19 { + margin-left: 79.16667%; + } + + .custom-theme .el-col-lg-pull-19 { + position: relative; + right: 79.16667%; + } + + .custom-theme .el-col-lg-push-19 { + position: relative; + left: 79.16667%; + } + + .custom-theme .el-col-lg-20 { + width: 83.33333%; + } + + .custom-theme .el-col-lg-offset-20 { + margin-left: 83.33333%; + } + + .custom-theme .el-col-lg-pull-20 { + position: relative; + right: 83.33333%; + } + + .custom-theme .el-col-lg-push-20 { + position: relative; + left: 83.33333%; + } + + .custom-theme .el-col-lg-21 { + width: 87.5%; + } + + .custom-theme .el-col-lg-offset-21 { + margin-left: 87.5%; + } + + .custom-theme .el-col-lg-pull-21 { + position: relative; + right: 87.5%; + } + + .custom-theme .el-col-lg-push-21 { + position: relative; + left: 87.5%; + } + + .custom-theme .el-col-lg-22 { + width: 91.66667%; + } + + .custom-theme .el-col-lg-offset-22 { + margin-left: 91.66667%; + } + + .custom-theme .el-col-lg-pull-22 { + position: relative; + right: 91.66667%; + } + + .custom-theme .el-col-lg-push-22 { + position: relative; + left: 91.66667%; + } + + .custom-theme .el-col-lg-23 { + width: 95.83333%; + } + + .custom-theme .el-col-lg-offset-23 { + margin-left: 95.83333%; + } + + .custom-theme .el-col-lg-pull-23 { + position: relative; + right: 95.83333%; + } + + .custom-theme .el-col-lg-push-23 { + position: relative; + left: 95.83333%; + } + + .custom-theme .el-col-lg-24 { + width: 100%; + } + + .custom-theme .el-col-lg-offset-24 { + margin-left: 100%; + } + + .custom-theme .el-col-lg-pull-24 { + position: relative; + right: 100%; + } + + .custom-theme .el-col-lg-push-24 { + position: relative; + left: 100%; + } +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-progress { + position: relative; + line-height: 1; +} + +.custom-theme .el-progress.is-exception .el-progress-bar__inner { + background-color: #ffbf00; +} + +.custom-theme .el-progress.is-exception .el-progress__text { + color: #ffbf00; +} + +.custom-theme .el-progress.is-success .el-progress-bar__inner { + background-color: #00643b; +} + +.custom-theme .el-progress.is-success .el-progress__text { + color: #00643b; +} + +.custom-theme .el-progress__text { + font-size: 14px; + color: rgb(72, 81, 106); + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1; +} + +.custom-theme .el-progress__text i { + vertical-align: middle; + display: block; +} + +.custom-theme .el-progress--circle { + display: inline-block; +} + +.custom-theme .el-progress--circle .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + transform: translate(0, -50%); +} + +.custom-theme .el-progress--circle .el-progress__text i { + vertical-align: middle; + display: inline-block; +} + +.custom-theme .el-progress--without-text .el-progress__text { + display: none; +} + +.custom-theme .el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block; +} + +.custom-theme .el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0; +} + +.custom-theme .el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + box-sizing: border-box; +} + +.custom-theme .el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: rgb(228, 230, 241); + overflow: hidden; + position: relative; + vertical-align: middle; +} + +.custom-theme .el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + border-radius: 2px 0 0 2px; + background-color: #073069; + text-align: right; + border-radius: 100px; + line-height: 1; +} + +.custom-theme .el-progress-bar__inner:after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; +} + +.custom-theme .el-progress-bar__inner:after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; +} + +.custom-theme .el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #fff; + font-size: 12px; + margin: 0 5px; +} + +@keyframes progress { + 0% { + background-position: 0 0; + } + + 100% { + background-position: 32px 0; + } +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-upload { + display: inline-block; + text-align: center; + cursor: pointer; + /* ç…§ç‰‡å¢™æ¨¡å¼ */ +} + +.custom-theme .el-upload iframe { + position: absolute; + z-index: -1; + top: 0; + left: 0; + opacity: 0; + filter: alpha(opacity=0); +} + +.custom-theme .el-upload__input { + display: none; +} + +.custom-theme .el-upload__tip { + font-size: 12px; + color: rgb(131, 139, 165); + margin-top: 7px; +} + +.custom-theme .el-upload--picture-card { + background-color: #fbfdff; + border: 1px dashed #c0ccda; + border-radius: 6px; + box-sizing: border-box; + width: 148px; + height: 148px; + cursor: pointer; + line-height: 146px; + vertical-align: top; +} + +.custom-theme .el-upload--picture-card i { + font-size: 28px; + color: #8c939d; +} + +.custom-theme .el-upload--picture-card:hover { + border-color: #073069; + color: #073069; +} + +.custom-theme .el-upload-dragger { + background-color: #fff; + border: 1px dashed #d9d9d9; + border-radius: 6px; + box-sizing: border-box; + width: 360px; + height: 180px; + text-align: center; + cursor: pointer; + position: relative; + overflow: hidden; +} + +.custom-theme .el-upload-dragger .el-upload__text { + color: rgb(151, 161, 190); + font-size: 14px; + text-align: center; +} + +.custom-theme .el-upload-dragger .el-upload__text em { + color: #073069; + font-style: normal; +} + +.custom-theme .el-upload-dragger .el-icon-upload { + font-size: 67px; + color: rgb(151, 161, 190); + margin: 40px 0 16px; + line-height: 50px; +} + +.custom-theme .el-upload-dragger + .el-upload__tip { + text-align: center; +} + +.custom-theme .el-upload-dragger ~ .el-upload__files { + border-top: 1px solid rgba(191, 199, 217, 0.2); + margin-top: 7px; + padding-top: 5px; +} + +.custom-theme .el-upload-dragger:hover { + border-color: #073069; +} + +.custom-theme .el-upload-dragger.is-dragover { + background-color: rgba(32, 159, 255, .06); + border: 2px dashed #073069; +} + +.custom-theme .el-upload-list { + margin: 0; + padding: 0; + list-style: none; +} + +.custom-theme .el-upload-list__item { + transition: all .5s cubic-bezier(.55,0,.1,1); + font-size: 14px; + color: rgb(72, 81, 106); + line-height: 1.8; + margin-top: 5px; + position: relative; + box-sizing: border-box; + border-radius: 4px; + width: 100%; + position: relative; +} + +.custom-theme .el-upload-list__item .el-progress-bar { + margin-right: 0; + padding-right: 0; +} + +.custom-theme .el-upload-list__item .el-progress { + position: absolute; + bottom: -3px; + width: 100%; +} + +.custom-theme .el-upload-list__item .el-progress__text { + position: absolute; + right: 0; + top: -10px; + right: 0; +} + +.custom-theme .el-upload-list__item:first-child { + margin-top: 10px; +} + +.custom-theme .el-upload-list__item:hover { + background-color: rgb(238, 240, 246); +} + +.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:hover { + color: #073069; + cursor: pointer; +} + +.custom-theme .el-upload-list__item.is-success .el-icon-close { + display: none; +} + +.custom-theme .el-upload-list__item.is-success:hover .el-icon-close { + display: inline-block; + cursor: pointer; + opacity: .75; + transform: scale(.7); + color: rgb(72, 81, 106); +} + +.custom-theme .el-upload-list__item.is-success:hover .el-icon-close:hover { + opacity: 1; +} + +.custom-theme .el-upload-list__item.is-success:hover .el-icon-circle-check, +.custom-theme .el-upload-list__item.is-success:hover .el-icon-check { + display: none; +} + +.custom-theme .el-upload-list__item-name { + color: rgb(72, 81, 106); + display: block; + margin-right: 40px; + overflow: hidden; + padding-left: 4px; + text-overflow: ellipsis; + transition: color .3s; + white-space: nowrap; +} + +.custom-theme .el-upload-list__item-name [class^="el-icon"] { + color: rgb(151, 161, 190); + margin-right: 7px; + height: 100%; + line-height: inherit; +} + +.custom-theme .el-upload-list__item-status-label { + position: absolute; + right: 10px; + top: 0; + line-height: inherit; + color: #00643b; +} + +.custom-theme .el-upload-list__item-delete { + position: absolute; + right: 10px; + top: 0; + font-size: 12px; + color: rgb(72, 81, 106); + display: none; +} + +.custom-theme .el-upload-list__item-delete:hover { + color: #073069; +} + +.custom-theme .el-upload-list--picture-card { + margin: 0; + display: inline; + vertical-align: top; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + box-sizing: border-box; + width: 148px; + height: 148px; + margin: 0 8px 8px 0; + display: inline-block; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label { + display: none; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-name { + display: none; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-thumbnail { + width: 100%; + height: 100%; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + transform: rotate(45deg); + box-shadow: 0 0 1pc 1px rgba(0,0,0,0.2); +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 11px; + transform: rotate(-45deg) scale(0.8); + color: #fff; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + transition: opacity .3s; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span { + display: none; + cursor: pointer; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span + span { + margin-left: 15px; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete { + position: static; + font-size: inherit; + color: inherit; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover { + opacity: 1; +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover span { + display: inline-block; +} + +.custom-theme .el-upload-list--picture-card .el-progress { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + bottom: auto; + width: 126px; +} + +.custom-theme .el-upload-list--picture-card .el-progress .el-progress__text { + top: 50%; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + box-sizing: border-box; + margin-top: 10px; + padding: 10px 10px 10px 90px; + height: 92px; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label { + background: transparent; + box-shadow: none; + top: -2px; + right: -12px; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label .el-icon-close { + transform: rotate(45deg) scale(.7); +} + +.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name { + line-height: 70px; + margin-top: 0; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i { + display: none; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-thumbnail { + vertical-align: middle; + display: inline-block; + width: 70px; + height: 70px; + float: left; + margin-left: -80px; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-name { + display: block; + margin-top: 20px; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-name i { + font-size: 70px; + line-height: 1; + position: absolute; + left: 9px; + top: 10px; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-status-label { + position: absolute; + right: -17px; + top: -7px; + width: 46px; + height: 26px; + background: #13ce66; + text-align: center; + transform: rotate(45deg); + box-shadow: 0 1px 1px #ccc; +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 12px; + transform: rotate(-45deg) scale(0.8); + color: #fff; +} + +.custom-theme .el-upload-list--picture .el-progress { + position: static; +} + +.custom-theme .el-upload-cover { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 10; + cursor: default; +} + +.custom-theme .el-upload-cover:after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; +} + +.custom-theme .el-upload-cover img { + display: block; + width: 100%; + height: 100%; +} + +.custom-theme .el-upload-cover + .el-upload__inner { + opacity: 0; + position: relative; + z-index: 1; +} + +.custom-theme .el-upload-cover__label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + transform: rotate(45deg); + box-shadow: 0 0 1pc 1px rgba(0,0,0,0.2); +} + +.custom-theme .el-upload-cover__label i { + font-size: 12px; + margin-top: 11px; + transform: rotate(-45deg) scale(0.8); + color: #fff; +} + +.custom-theme .el-upload-cover__progress { + display: inline-block; + vertical-align: middle; + position: static; + width: 243px; +} + +.custom-theme .el-upload-cover__progress + .el-upload__inner { + opacity: 0; +} + +.custom-theme .el-upload-cover__content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.custom-theme .el-upload-cover__interact { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.72); + text-align: center; +} + +.custom-theme .el-upload-cover__interact .btn { + display: inline-block; + color: #fff; + font-size: 14px; + cursor: pointer; + vertical-align: middle; + transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms, opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) 100ms; + margin-top: 60px; +} + +.custom-theme .el-upload-cover__interact .btn i { + margin-top: 0; +} + +.custom-theme .el-upload-cover__interact .btn span { + opacity: 0; + transition: opacity .15s linear; +} + +.custom-theme .el-upload-cover__interact .btn:not(:first-child) { + margin-left: 35px; +} + +.custom-theme .el-upload-cover__interact .btn:hover { + transform: translateY(-13px); +} + +.custom-theme .el-upload-cover__interact .btn:hover span { + opacity: 1; +} + +.custom-theme .el-upload-cover__interact .btn i { + color: #fff; + display: block; + font-size: 24px; + line-height: inherit; + margin: 0 auto 5px; +} + +.custom-theme .el-upload-cover__title { + position: absolute; + bottom: 0; + left: 0; + background-color: #fff; + height: 36px; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 400; + text-align: left; + padding: 0 10px; + margin: 0; + line-height: 36px; + font-size: 14px; + color: rgb(72, 81, 106); +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-progress { + position: relative; + line-height: 1; +} + +.custom-theme .el-progress.is-exception .el-progress-bar__inner { + background-color: #ffbf00; +} + +.custom-theme .el-progress.is-exception .el-progress__text { + color: #ffbf00; +} + +.custom-theme .el-progress.is-success .el-progress-bar__inner { + background-color: #00643b; +} + +.custom-theme .el-progress.is-success .el-progress__text { + color: #00643b; +} + +.custom-theme .el-progress__text { + font-size: 14px; + color: rgb(72, 81, 106); + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1; +} + +.custom-theme .el-progress__text i { + vertical-align: middle; + display: block; +} + +.custom-theme .el-progress--circle { + display: inline-block; +} + +.custom-theme .el-progress--circle .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + transform: translate(0, -50%); +} + +.custom-theme .el-progress--circle .el-progress__text i { + vertical-align: middle; + display: inline-block; +} + +.custom-theme .el-progress--without-text .el-progress__text { + display: none; +} + +.custom-theme .el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block; +} + +.custom-theme .el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0; +} + +.custom-theme .el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + box-sizing: border-box; +} + +.custom-theme .el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: rgb(228, 230, 241); + overflow: hidden; + position: relative; + vertical-align: middle; +} + +.custom-theme .el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + border-radius: 2px 0 0 2px; + background-color: #073069; + text-align: right; + border-radius: 100px; + line-height: 1; +} + +.custom-theme .el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #fff; + font-size: 12px; + margin: 0 5px; +} + +@keyframes progress { + 0% { + background-position: 0 0; + } + + 100% { + background-position: 32px 0; + } +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-time-spinner { + width: 100%; + white-space: nowrap; +} + +.custom-theme .el-spinner { + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-spinner-inner { + animation: rotate 2s linear infinite; + width: 50px; + height: 50px; +} + +.custom-theme .el-spinner-inner .path { + stroke: #ececec; + stroke-linecap: round; + animation: dash 1.5s ease-in-out infinite; +} + +@keyframes rotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35; + } + + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124; + } +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-message { + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); + min-width: 300px; + padding: 10px 12px; + box-sizing: border-box; + border-radius: 2px; + position: fixed; + left: 50%; + top: 20px; + transform: translateX(-50%); + background-color: #fff; + transition: opacity 0.3s, transform .4s; + overflow: hidden; +} + +.custom-theme .el-message .el-icon-circle-check { + color: #00643b; +} + +.custom-theme .el-message .el-icon-circle-cross { + color: #ffbf00; +} + +.custom-theme .el-message .el-icon-information { + color: #00a2ae; +} + +.custom-theme .el-message .el-icon-warning { + color: #f56a00; +} + +.custom-theme .el-message__group { + margin-left: 38px; + position: relative; + height: 20px; + line-height: 20px; +} + +.custom-theme .el-message__group p { + font-size: 14px; + margin: 0 34px 0 0; + white-space: nowrap; + color: rgb(131, 139, 165); + text-align: justify; +} + +.custom-theme .el-message__group.is-with-icon { + margin-left: 0; +} + +.custom-theme .el-message__img { + width: 40px; + height: 40px; + position: absolute; + left: 0; + top: 0; +} + +.custom-theme .el-message__icon { + vertical-align: middle; + margin-right: 8px; +} + +.custom-theme .el-message__closeBtn { + top: 3px; + right: 0; + position: absolute; + cursor: pointer; + color: rgb(191, 199, 217); + font-size: 14px; +} + +.custom-theme .el-message__closeBtn:hover { + color: rgb(151, 161, 190); +} + +.custom-theme .el-message-fade-enter, +.custom-theme .el-message-fade-leave-active { + opacity: 0; + transform: translate(-50%, -100%); +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-badge { + position: relative; + vertical-align: middle; + display: inline-block; +} + +.custom-theme .el-badge__content { + background-color: #ffbf00; + border-radius: 10px; + color: #fff; + display: inline-block; + font-size: 12px; + height: 18px; + line-height: 18px; + padding: 0 6px; + text-align: center; + white-space: nowrap; + border: 1px solid #fff; +} + +.custom-theme .el-badge__content.is-dot { + width: 8px; + height: 8px; + padding: 0; + right: 0; + border-radius: 50%; +} + +.custom-theme .el-badge__content.is-fixed { + top: 0; + right: 10px; + position: absolute; + transform: translateY(-50%) translateX(100%); +} + +.custom-theme .el-badge__content.is-fixed.is-dot { + right: 5px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-card { + border: 1px solid rgb(209, 215, 229); + border-radius: 4px; + background-color: #fff; + overflow: hidden; + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, .12), + 0px 0px 6px 0px rgba(0, 0, 0, .04); +} + +.custom-theme .el-card__header { + padding: 18px 20px; + border-bottom: 1px solid rgb(209, 215, 229); + box-sizing: border-box; +} + +.custom-theme .el-card__body { + padding: 20px; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-rate { + height: 20px; + line-height: 1; +} + +.custom-theme .el-rate__item { + display: inline-block; + position: relative; + font-size: 0; + vertical-align: middle; +} + +.custom-theme .el-rate__icon { + position: relative; + display: inline-block; + font-size: 18px; + margin-right: 6px; + color: rgb(191, 199, 217); + transition: .3s; +} + +.custom-theme .el-rate__icon .path2 { + position: absolute; + left: 0; + top: 0; +} + +.custom-theme .el-rate__icon.hover { + transform: scale(1.15); +} + +.custom-theme .el-rate__decimal { + position: absolute; + top: 0; + left: 0; + display: inline-block; + overflow: hidden; +} + +.custom-theme .el-rate__text { + font-size: 14px; + vertical-align: middle; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-steps { + font-size: 0; +} + +.custom-theme .el-steps > :last-child .el-step__line { + display: none; +} + +.custom-theme .el-steps.is-horizontal { + white-space: nowrap; +} + +.custom-theme .el-steps.is-horizontal.is-center { + text-align: center; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-step { + position: relative; + vertical-align: top; +} + + + +.custom-theme .el-step.is-vertical .el-step__head, +.custom-theme .el-step.is-vertical .el-step__main { + display: inline-block; +} + +.custom-theme .el-step.is-vertical .el-step__main { + padding-left: 10px; +} + +.custom-theme .el-step.is-horizontal { + display: inline-block; +} + +.custom-theme .el-step__line { + display: inline-block; + position: absolute; + border-color: inherit; + background-color: rgb(191, 199, 217); +} + +.custom-theme .el-step__line.is-vertical { + width: 2px; + box-sizing: border-box; + top: 32px; + bottom: 0; + left: 15px; +} + +.custom-theme .el-step__line.is-horizontal { + top: 15px; + height: 2px; + left: 32px; + right: 0; +} + + + +.custom-theme .el-step__line.is-icon.is-horizontal { + right: 4px; +} + +.custom-theme .el-step__line-inner { + display: block; + border-width: 1px; + border-style: solid; + border-color: inherit; + transition: all 150ms; + width: 0; + height: 0; +} + +.custom-theme .el-step__icon { + display: block; + line-height: 28px; +} + +.custom-theme .el-step__icon > * { + line-height: inherit; + vertical-align: middle; +} + +.custom-theme .el-step__head { + width: 28px; + height: 28px; + border-radius: 50%; + background-color: transparent; + text-align: center; + line-height: 28px; + font-size: 28px; + vertical-align: top; + transition: all 150ms; +} + +.custom-theme .el-step__head.is-finish { + color: #073069; + border-color: #073069; +} + +.custom-theme .el-step__head.is-error { + color: #ffbf00; + border-color: #ffbf00; +} + +.custom-theme .el-step__head.is-success { + color: #00643b; + border-color: #00643b; +} + +.custom-theme .el-step__head.is-wait { + color: rgb(191, 199, 217); + border-color: rgb(191, 199, 217); +} + +.custom-theme .el-step__head.is-process { + color: rgb(191, 199, 217); + border-color: rgb(191, 199, 217); +} + +.custom-theme .el-step__head.is-text { + font-size: 14px; + border-width: 2px; + border-style: solid; +} + +.custom-theme .el-step__head.is-text.is-finish { + color: #fff; + background-color: #073069; + border-color: #073069; +} + +.custom-theme .el-step__head.is-text.is-error { + color: #fff; + background-color: #ffbf00; + border-color: #ffbf00; +} + +.custom-theme .el-step__head.is-text.is-success { + color: #fff; + background-color: #00643b; + border-color: #00643b; +} + +.custom-theme .el-step__head.is-text.is-wait { + color: rgb(191, 199, 217); + background-color: #fff; + border-color: rgb(191, 199, 217); +} + +.custom-theme .el-step__head.is-text.is-process { + color: #fff; + background-color: rgb(191, 199, 217); + border-color: rgb(191, 199, 217); +} + +.custom-theme .el-step__main { + white-space: normal; + padding-right: 10px; + text-align: left; +} + +.custom-theme .el-step__title { + font-size: 14px; + line-height: 32px; + display: inline-block; +} + +.custom-theme .el-step__title.is-finish { + font-weight: 700; + color: #073069; +} + +.custom-theme .el-step__title.is-error { + font-weight: 700; + color: #ffbf00; +} + +.custom-theme .el-step__title.is-success { + font-weight: 700; + color: #00643b; +} + +.custom-theme .el-step__title.is-wait { + font-weight: 400; + color: rgb(151, 161, 190); +} + +.custom-theme .el-step__title.is-process { + font-weight: 700; + color: rgb(72, 81, 106); +} + +.custom-theme .el-step__description { + font-size: 12px; + font-weight: 400; + line-height: 14px; +} + +.custom-theme .el-step__description.is-finish { + color: #073069; +} + +.custom-theme .el-step__description.is-error { + color: #ffbf00; +} + +.custom-theme .el-step__description.is-success { + color: #00643b; +} + +.custom-theme .el-step__description.is-wait { + color: rgb(191, 199, 217); +} + +.custom-theme .el-step__description.is-process { + color: rgb(131, 139, 165); +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-carousel { + overflow-x: hidden; + position: relative; +} + +.custom-theme .el-carousel__container { + position: relative; + height: 300px; +} + +.custom-theme .el-carousel__arrow { + border: none; + outline: none; + padding: 0; + margin: 0; + width: 36px; + height: 36px; + cursor: pointer; + transition: .3s; + border-radius: 50%; + background-color: rgba(31, 45, 61, 0.11); + color: #fff; + position: absolute; + top: 50%; + z-index: 10; + transform: translateY(-50%); + text-align: center; + font-size: 12px; +} + +.custom-theme .el-carousel__arrow:hover { + background-color: rgba(31, 45, 61, 0.23); +} + +.custom-theme .el-carousel__arrow i { + cursor: pointer; +} + +.custom-theme .el-carousel__arrow--left { + left: 16px; +} + +.custom-theme .el-carousel__arrow--right { + right: 16px; +} + +.custom-theme .el-carousel__indicators { + position: absolute; + list-style: none; + bottom: 0; + left: 50%; + transform: translateX(-50%); + margin: 0; + padding: 0; + z-index: 2; +} + +.custom-theme .el-carousel__indicators--outside { + bottom: 26px; + text-align: center; + position: static; + transform: none; +} + +.custom-theme .el-carousel__indicators--outside .el-carousel__indicator:hover button { + opacity: 0.64; +} + +.custom-theme .el-carousel__indicators--outside button { + background-color: rgb(131, 139, 165); + opacity: 0.24; +} + +.custom-theme .el-carousel__indicator { + display: inline-block; + background-color: transparent; + padding: 12px 4px; + cursor: pointer; +} + +.custom-theme .el-carousel__indicator:hover button { + opacity: 0.72; +} + +.custom-theme .el-carousel__indicator.is-active button { + opacity: 1; +} + +.custom-theme .el-carousel__button { + display: block; + opacity: 0.48; + width: 30px; + height: 2px; + background-color: #fff; + border: none; + outline: none; + padding: 0; + margin: 0; + cursor: pointer; + transition: .3s; +} + +.custom-theme .carousel-arrow-left-enter, +.custom-theme .carousel-arrow-left-leave-active { + transform: translateY(-50%) translateX(-10px); + opacity: 0; +} + +.custom-theme .carousel-arrow-right-enter, +.custom-theme .carousel-arrow-right-leave-active { + transform: translateY(-50%) translateX(10px); + opacity: 0; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative; +} + +.custom-theme .el-scrollbar:hover .el-scrollbar__bar, +.custom-theme .el-scrollbar:active .el-scrollbar__bar, +.custom-theme .el-scrollbar:focus .el-scrollbar__bar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; +} + + + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0; +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(151, 161, 190, 0.3); + transition: .3s background-color; +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(151, 161, 190, 0.5); +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + transition: opacity 120ms ease-out; +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px; +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100%; +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px; +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100%; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + + + +.custom-theme .el-carousel__item { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: inline-block; + transition: .4s ease-in-out; + overflow: hidden; + z-index: 0; +} + +.custom-theme .el-carousel__item.is-active { + z-index: 2; +} + +.custom-theme .el-carousel__item--card { + width: 50%; +} + +.custom-theme .el-carousel__item--card.is-in-stage { + cursor: pointer; + z-index: 1; +} + +.custom-theme .el-carousel__item--card.is-in-stage:hover .el-carousel__mask, +.custom-theme .el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask { + opacity: 0.12; +} + +.custom-theme .el-carousel__item--card.is-active { + z-index: 2; +} + +.custom-theme .el-carousel__mask { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: #fff; + opacity: 0.24; + transition: .2s; +} + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-collapse { + border: 1px solid rgb(223, 227, 236); + border-radius: 0; +} + + + +.custom-theme .el-collapse-item:last-child { + margin-bottom: -1px; +} + +.custom-theme .el-collapse-item.is-active > .el-collapse-item__header .el-collapse-item__header__arrow { + transform: rotate(90deg); +} + +.custom-theme .el-collapse-item__header { + height: 43px; + line-height: 43px; + padding-left: 15px; + background-color: #fff; + color: rgb(72, 81, 106); + cursor: pointer; + border-bottom: 1px solid rgb(223, 227, 236); + font-size: 13px; +} + +.custom-theme .el-collapse-item__header__arrow { + margin-right: 8px; + transition: transform .3s; +} + +.custom-theme .el-collapse-item__wrap { + will-change: height; + background-color: rgb(250, 251, 252); + overflow: hidden; + box-sizing: border-box; + border-bottom: 1px solid rgb(223, 227, 236); +} + +.custom-theme .el-collapse-item__content { + padding: 10px 15px; + font-size: 13px; + color: rgb(31, 40, 61); + line-height: 1.769230769230769; +} + +@charset "UTF-8"; + +@charset "UTF-8"; + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100%; +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid rgb(191, 199, 217); + box-sizing: border-box; + color: rgb(31, 40, 61); + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + outline: none; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); + width: 100%; +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-input__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme .el-input__icon { + position: absolute; + width: 35px; + height: 100%; + right: 0; + top: 0; + text-align: center; + color: rgb(191, 199, 217); + transition: all .3s; +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle; +} + +.custom-theme .el-input__icon + .el-input__inner { + padding-right: 35px; +} + + + +.custom-theme .el-input__icon.is-clickable:hover { + cursor: pointer; + color: rgb(131, 139, 165); +} + +.custom-theme .el-input__icon.is-clickable:hover + .el-input__inner { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-input--large { + font-size: 16px; +} + +.custom-theme .el-input--large .el-input__inner { + height: 42px; +} + +.custom-theme .el-input--small { + font-size: 13px; +} + +.custom-theme .el-input--small .el-input__inner { + height: 30px; +} + +.custom-theme .el-input--mini { + font-size: 12px; +} + +.custom-theme .el-input--mini .el-input__inner { + height: 22px; +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate; +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell; +} + +.custom-theme .el-input-group__append, +.custom-theme .el-input-group__prepend { + background-color: rgb(250, 251, 252); + color: rgb(151, 161, 190); + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + padding: 0 10px; + width: 1%; + white-space: nowrap; +} + +.custom-theme .el-input-group__append .el-select, +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__prepend .el-select, +.custom-theme .el-input-group__prepend .el-button { + display: block; + margin: -10px; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-select .el-input__inner, +.custom-theme .el-input-group__append .el-select:hover .el-input__inner, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-select .el-input__inner, +.custom-theme .el-input-group__prepend .el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0; +} + +.custom-theme .el-input-group__append .el-button, +.custom-theme .el-input-group__append .el-input, +.custom-theme .el-input-group__prepend .el-button, +.custom-theme .el-input-group__prepend .el-input { + font-size: inherit; +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: rgb(238, 240, 246); + border-color: rgb(209, 215, 229); + color: #bbb; + cursor: not-allowed; +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: rgb(191, 199, 217); +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: rgb(31, 40, 61); + background-color: #fff; + background-image: none; + border: 1px solid rgb(191, 199, 217); + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645,.045,.355,1); +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner::placeholder { + color: rgb(151, 161, 190); +} + +.custom-theme .el-textarea__inner:hover { + border-color: rgb(131, 139, 165); +} + +.custom-theme .el-textarea__inner:focus { + outline: none; + border-color: #073069; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-cascader { + display: inline-block; + position: relative; + background-color: #fff; +} + +.custom-theme .el-cascader .el-input, +.custom-theme .el-cascader .el-input__inner { + cursor: pointer; + background-color: transparent; + z-index: 1; +} + +.custom-theme .el-cascader .el-input__icon { + transition: none; +} + +.custom-theme .el-cascader .el-icon-caret-bottom { + transition: transform .3s; +} + +.custom-theme .el-cascader .el-icon-caret-bottom.is-reverse { + transform: rotateZ(180deg); +} + +.custom-theme .el-cascader.is-disabled .el-cascader__label { + z-index: 2; + color: #bbb; +} + +.custom-theme .el-cascader__label { + position: absolute; + left: 0; + top: 0; + height: 100%; + line-height: 34px; + padding: 0 25px 0 10px; + color: rgb(31, 40, 61); + width: 100%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + box-sizing: border-box; + cursor: pointer; + font-size: 14px; + text-align: left; +} + +.custom-theme .el-cascader__label span { + color: rgb(151, 161, 190); +} + +.custom-theme .el-cascader--large { + font-size: 16px; +} + +.custom-theme .el-cascader--large .el-cascader__label { + line-height: 40px; +} + +.custom-theme .el-cascader--small { + font-size: 13px; +} + +.custom-theme .el-cascader--small .el-cascader__label { + line-height: 28px; +} + +.custom-theme .el-cascader-menus { + white-space: nowrap; + background: #fff; + position: absolute; + margin: 5px 0; + z-index: 2; + border: solid 1px rgb(209, 215, 229); + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04); +} + +.custom-theme .el-cascader-menu { + display: inline-block; + vertical-align: top; + height: 204px; + overflow: auto; + border-right: solid 1px rgb(209, 215, 229); + background-color: #fff; + box-sizing: border-box; + margin: 0; + padding: 6px 0; + min-width: 160px; +} + +.custom-theme .el-cascader-menu:last-child { + border-right: 0; +} + +.custom-theme .el-cascader-menu__item { + font-size: 14px; + padding: 8px 30px 8px 10px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: rgb(72, 81, 106); + height: 36px; + line-height: 1.5; + box-sizing: border-box; + cursor: pointer; +} + +.custom-theme .el-cascader-menu__item:hover { + background-color: rgb(228, 230, 241); +} + +.custom-theme .el-cascader-menu__item.selected { + color: #fff; + background-color: #073069; +} + +.custom-theme .el-cascader-menu__item.selected.hover { + background-color: rgb(6, 42, 92); +} + +.custom-theme .el-cascader-menu__item.is-active { + color: #fff; + background-color: #073069; +} + +.custom-theme .el-cascader-menu__item.is-active:hover { + background-color: rgb(6, 42, 92); +} + +.custom-theme .el-cascader-menu__item.is-disabled { + color: rgb(191, 199, 217); + background-color: #fff; + cursor: not-allowed; +} + +.custom-theme .el-cascader-menu__item.is-disabled:hover { + background-color: #fff; +} + +.custom-theme .el-cascader-menu__item__keyword { + font-weight: 700; +} + + + +.custom-theme .el-cascader-menu__item--extensible:after { + font-family: 'element-icons'; + content: "\e606"; + font-size: 12px; + transform: scale(0.8); + color: rgb(191, 203, 217); + position: absolute; + right: 10px; + margin-top: 1px; +} + +.custom-theme .el-cascader-menu--flexible { + height: auto; + max-height: 180px; + overflow: auto; +} + +.custom-theme .el-cascader-menu--flexible .el-cascader-menu__item { + overflow: visible; +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} + +.custom-theme .el-color-hue-slider { + position: relative; + box-sizing: border-box; + width: 280px; + height: 12px; + background-color: #f00; + padding: 0 2px; +} + +.custom-theme .el-color-hue-slider.is-vertical { + width: 12px; + height: 180px; + padding: 2px 0; +} + +.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__bar { + background: linear-gradient( + to bottom, #f00 0%, + #ff0 17%, #0f0 33%, + #0ff 50%, #00f 67%, + #f0f 83%, #f00 100%); +} + +.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px; +} + +.custom-theme .el-color-hue-slider__bar { + position: relative; + background: linear-gradient( + to right, #f00 0%, + #ff0 17%, #0f0 33%, + #0ff 50%, #00f 67%, + #f0f 83%, #f00 100%); + height: 100%; +} + +.custom-theme .el-color-hue-slider__thumb { + position: absolute; + cursor: pointer; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + box-shadow: 0 0 2px rgba(0, 0, 0, 0.6); + z-index: 1; +} + +.custom-theme .el-color-svpanel { + position: relative; + width: 280px; + height: 180px; +} + +.custom-theme .el-color-svpanel__white, +.custom-theme .el-color-svpanel__black { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.custom-theme .el-color-svpanel__white { + background: linear-gradient(to right, #fff, rgba(255,255,255,0)); +} + +.custom-theme .el-color-svpanel__black { + background: linear-gradient(to top, #000, rgba(0,0,0,0)); +} + +.custom-theme .el-color-svpanel__cursor { + position: absolute; +} + +.custom-theme .el-color-svpanel__cursor > div { + cursor: head; + width: 4px; + height: 4px; + box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,0.3), 0 0 1px 2px rgba(0,0,0,0.4); + border-radius: 50%; + transform: translate(-2px, -2px); +} + +.custom-theme .el-color-alpha-slider { + position: relative; + box-sizing: border-box; + width: 280px; + height: 12px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); +} + +.custom-theme .el-color-alpha-slider.is-vertical { + width: 20px; + height: 180px; +} + +.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar { + background: linear-gradient( + to bottom, rgba(255, 255, 255, 0) 0%, + rgba(255, 255, 255, 1) 100%); +} + +.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px; +} + +.custom-theme .el-color-alpha-slider__bar { + position: relative; + background: linear-gradient( + to right, rgba(255, 255, 255, 0) 0%, + rgba(255, 255, 255, 1) 100%); + height: 100%; +} + +.custom-theme .el-color-alpha-slider__thumb { + position: absolute; + cursor: pointer; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + box-shadow: 0 0 2px rgba(0, 0, 0, 0.6); + z-index: 1; +} + +.custom-theme .el-color-dropdown { + width: 300px; +} + +.custom-theme .el-color-dropdown__main-wrapper { + margin-bottom: 6px; +} + +.custom-theme .el-color-dropdown__main-wrapper::after { + content: ""; + display: table; + clear: both; +} + +.custom-theme .el-color-dropdown__btns { + margin-top: 6px; + text-align: right; +} + +.custom-theme .el-color-dropdown__value { + float: left; + line-height: 26px; + font-size: 12px; + color: rgb(31, 40, 61); +} + +.custom-theme .el-color-dropdown__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: none; + font-size: 12px; +} + +.custom-theme .el-color-dropdown__btn[disabled] { + color: #cccccc; + cursor: not-allowed; +} + +.custom-theme .el-color-dropdown__btn:hover { + color: #073069; + border-color: #073069; +} + +.custom-theme .el-color-dropdown__link-btn { + cursor: pointer; + color: #073069; + text-decoration: none; + padding: 15px; + font-size: 12px; +} + +.custom-theme .el-color-dropdown__link-btn:hover { + color: rgb(57, 89, 135); +} + +.custom-theme .el-color-picker { + display: inline-block; + position: relative; +} + +.custom-theme .el-color-picker__trigger { + display: inline-block; + box-sizing: border-box; + height: 36px; + padding: 6px; + border: 1px solid #bfcbd9; + border-radius: 4px; + font-size: 0; +} + +.custom-theme .el-color-picker__color { + position: relative; + display: inline-block; + box-sizing: border-box; + vertical-align: middle; + border: 1px solid #666; + width: 22px; + height: 22px; + text-align: center; +} + +.custom-theme .el-color-picker__color.is-alpha { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); +} + +.custom-theme .el-color-picker__color-inner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} + +.custom-theme .el-color-picker__empty { + font-size: 12px; + vertical-align: middle; + margin-top: 4px; + color: #666; +} + +.custom-theme .el-color-picker__icon { + display: inline-block; + position: relative; + vertical-align: middle; + margin-left: 8px; + width: 12px; + color: #888; + font-size: 12px; +} + +.custom-theme .el-color-picker__panel { + position: absolute; + z-index: 10; + padding: 6px; + background-color: #fff; + border: 1px solid rgb(209, 215, 229); + box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12); +} + +.custom-theme :root { + /* Transition + -------------------------- */ + /* Colors + -------------------------- */ + /* Link + -------------------------- */ + /* Border + -------------------------- */ + /* Box-shadow + -------------------------- */ + /* Fill + -------------------------- */ + /* Font + -------------------------- */ + /* Size + -------------------------- */ + /* z-index + -------------------------- */ + /* Disable base + -------------------------- */ + /* Icon + -------------------------- */ + /* Checkbox + -------------------------- */ + /* Radio + -------------------------- */ + /* Select + -------------------------- */ + /* Alert + -------------------------- */ + /* Message Box + -------------------------- */ + /* Message + -------------------------- */ + /* Notification + -------------------------- */ + /* Input + -------------------------- */ + /* Cascader + -------------------------- */ + /* Group + -------------------------- */ + /* Tab + -------------------------- */ + /* Button + -------------------------- */ + /* cascader + -------------------------- */ + /* Switch + -------------------------- */ + /* Dialog + -------------------------- */ + /* Table + -------------------------- */ + /* Pagination + -------------------------- */ + /* Popover + -------------------------- */ + /* Tooltip + -------------------------- */ + /* Tag + -------------------------- */ + /* Dropdown + -------------------------- */ + /* Badge + -------------------------- */ + /* Card + --------------------------*/ + /* Slider + --------------------------*/ + /* Steps + --------------------------*/ + /* Menu + --------------------------*/ + /* Rate + --------------------------*/ + /* DatePicker + --------------------------*/ + /* Loading + --------------------------*/ + /* Scrollbar + --------------------------*/ + /* Carousel + --------------------------*/ + /* Collapse + --------------------------*/ +} \ No newline at end of file diff --git a/src/assets/iconfont/iconfont.js b/src/assets/iconfont/iconfont.js new file mode 100644 index 0000000000000000000000000000000000000000..b3394628d998f8fbd96e65d544e035487e64e848 --- /dev/null +++ b/src/assets/iconfont/iconfont.js @@ -0,0 +1,126 @@ +;(function(window) { + + var svgSprite = '<svg>' + + '' + + '<symbol id="icon-zujian" viewBox="0 0 1024 1024">' + + '' + + '<path d="M568.6 0h454.9v454.9H568.6V0z m0 568.6h454.9v454.9H568.6V568.6zM0 568.6h454.9v454.9H0V568.6zM0 0h454.9v454.9H0V0z" fill="" ></path>' + + '' + + '</symbol>' + + '' + + '</svg>' + var script = function() { + var scripts = document.getElementsByTagName('script') + return scripts[scripts.length - 1] + }() + var shouldInjectCss = script.getAttribute("data-injectcss") + + /** + * document ready + */ + var ready = function(fn) { + if (document.addEventListener) { + if (~["complete", "loaded", "interactive"].indexOf(document.readyState)) { + setTimeout(fn, 0) + } else { + var loadFn = function() { + document.removeEventListener("DOMContentLoaded", loadFn, false) + fn() + } + document.addEventListener("DOMContentLoaded", loadFn, false) + } + } else if (document.attachEvent) { + IEContentLoaded(window, fn) + } + + function IEContentLoaded(w, fn) { + var d = w.document, + done = false, + // only fire once + init = function() { + if (!done) { + done = true + fn() + } + } + // polling for no errors + var polling = function() { + try { + // throws errors until after ondocumentready + d.documentElement.doScroll('left') + } catch (e) { + setTimeout(polling, 50) + return + } + // no errors, fire + + init() + }; + + polling() + // trying to always fire before onload + d.onreadystatechange = function() { + if (d.readyState == 'complete') { + d.onreadystatechange = null + init() + } + } + } + } + + /** + * Insert el before target + * + * @param {Element} el + * @param {Element} target + */ + + var before = function(el, target) { + target.parentNode.insertBefore(el, target) + } + + /** + * Prepend el to target + * + * @param {Element} el + * @param {Element} target + */ + + var prepend = function(el, target) { + if (target.firstChild) { + before(el, target.firstChild) + } else { + target.appendChild(el) + } + } + + function appendSvg() { + var div, svg + + div = document.createElement('div') + div.innerHTML = svgSprite + svgSprite = null + svg = div.getElementsByTagName('svg')[0] + if (svg) { + svg.setAttribute('aria-hidden', 'true') + svg.style.position = 'absolute' + svg.style.width = 0 + svg.style.height = 0 + svg.style.overflow = 'hidden' + prepend(svg, document.body) + } + } + + if (shouldInjectCss && !window.__iconfont__svg__cssinject__) { + window.__iconfont__svg__cssinject__ = true + try { + document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>"); + } catch (e) { + console && console.log(e) + } + } + + ready(appendSvg) + + +})(window) \ No newline at end of file diff --git a/src/components/Charts/barPercent.vue b/src/components/Charts/barPercent.vue new file mode 100644 index 0000000000000000000000000000000000000000..bdc018743ac52dea24800f64ba21da2bdc344759 --- /dev/null +++ b/src/components/Charts/barPercent.vue @@ -0,0 +1,103 @@ +<template> + <div :class="className" :id="id" :style="{height:height,width:width}"></div> +</template> +<script> + // 引入 ECharts ä¸»æ¨¡å— + const echarts = require('echarts/lib/echarts'); + // 引入柱状图 + require('echarts/lib/chart/bar'); + // 引入æç¤ºæ¡†å’Œæ ‡é¢˜ç»„ä»¶ + require('echarts/lib/component/tooltip'); + export default { + name: 'barPercent', + props: { + className: { + type: String, + default: 'bar-percent-chart' + }, + id: { + type: String, + default: 'bar-percent-chart' + }, + width: { + type: String, + default: '100px' + }, + height: { + type: String, + default: '80px' + }, + dataNum: { + type: Number, + default: 0 + } + }, + data() { + return { + chart: null + }; + }, + watch: { + dataNum() { + this.setOptions() + } + }, + mounted() { + this.initBar(); + }, + methods: { + initBar() { + this.chart = echarts.init(document.getElementById(this.id)); + }, + setOptions() { + this.chart.setOption({ + tooltip: { + show: true, + formatter(params) { + return '已完æˆ' + params.value + '篇<br/>ç›®æ ‡90篇<br/>完æˆè¿›åº¦' + Math.round((params.value / 90) * 100) + '%' + } + }, + grid: { + left: 0, + right: 0, + bottom: 0, + top: 0, + containLabel: false + }, + xAxis: [{ + type: 'category', + data: ['æ–‡ç« å®Œæˆæ¯”例'] + }], + yAxis: [{ + type: 'value', + data: [], + show: false + }], + animationDelay: 1000, + series: [{ + type: 'bar', + name: 'åˆè¯Š', + itemStyle: { + normal: { + color: '#e5e5e5' + } + }, + silent: true, + barGap: '-100%', // Make series be overlap + data: [150] + }, { + type: 'bar', + name: 'app', + itemStyle: { + normal: { + color: '#30b08f' + } + }, + z: 10, + data: [this.dataNum] + }] + }) + } + } + } +</script> diff --git a/src/components/Charts/keyboard.vue b/src/components/Charts/keyboard.vue new file mode 100644 index 0000000000000000000000000000000000000000..2266a5462f96d957d35117b150dbcfb50549023d --- /dev/null +++ b/src/components/Charts/keyboard.vue @@ -0,0 +1,113 @@ +<template> + <div :class="className" :id="id" :style="{height:height,width:width}"></div> +</template> +<script> + // 引入 ECharts ä¸»æ¨¡å— + const echarts = require('echarts/lib/echarts'); + // 引入柱状图 + require('echarts/lib/chart/bar'); + require('echarts/lib/chart/line'); + // 引入æç¤ºæ¡†å’Œæ ‡é¢˜ç»„ä»¶ + require('echarts/lib/component/tooltip'); + require('echarts/lib/component/title'); + + require('echarts/lib/component/visualMap'); + export default { + name: 'barPercent', + props: { + className: { + type: String, + default: 'bar-percent-chart' + }, + id: { + type: String, + default: 'bar-percent-chart' + }, + width: { + type: String, + default: '200px' + }, + height: { + type: String, + default: '200px' + } + }, + data() { + return {}; + }, + mounted() { + this.initBar(); + }, + methods: { + initBar() { + this.chart = echarts.init(document.getElementById(this.id)); + + const xAxisData = []; + const data = []; + for (let i = 0; i < 30; i++) { + xAxisData.push(i + 'å·'); + data.push(Math.round(Math.random() * 2 + 3)) + } + + this.chart.setOption( + { + backgroundColor: '#08263a', + tooltip: { + trigger: 'axis' + }, + xAxis: { + show: false, + data: xAxisData + }, + visualMap: { + show: false, + min: 0, + max: 50, + dimension: 0, + inRange: { + color: ['#4a657a', '#308e92', '#b1cfa5', '#f5d69f', '#f5898b', '#ef5055'] + } + }, + yAxis: { + axisLine: { + show: false + }, + axisLabel: { + textStyle: { + color: '#4a657a' + } + }, + splitLine: { + show: true, + lineStyle: { + color: '#08263f' + } + }, + axisTick: {} + }, + series: [{ + type: 'bar', + data, + name: '撸文数', + itemStyle: { + normal: { + barBorderRadius: 5, + shadowBlur: 10, + shadowColor: '#111' + } + }, + animationEasing: 'elasticOut', + animationEasingUpdate: 'elasticOut', + animationDelay(idx) { + return idx * 20; + }, + animationDelayUpdate(idx) { + return idx * 20; + } + }] + } + ) + } + } + } +</script> diff --git a/src/components/Charts/line.vue b/src/components/Charts/line.vue new file mode 100644 index 0000000000000000000000000000000000000000..28b22a111a0e98c964fbd2e351429895a5d5b455 --- /dev/null +++ b/src/components/Charts/line.vue @@ -0,0 +1,145 @@ +<template> + <div :class="className" :id="id" :style="{height:height,width:width}"></div> +</template> +<script> + // 引入 ECharts ä¸»æ¨¡å— + const echarts = require('echarts/lib/echarts'); + // 引入图 + require('echarts/lib/chart/line'); + // 引入æç¤ºæ¡†å’Œæ ‡é¢˜ç»„ä»¶ + require('echarts/lib/component/markLine'); + require('echarts/lib/component/markPoint'); + require('echarts/lib/component/tooltip'); + export default { + name: 'lineChart', + props: { + className: { + type: String, + default: 'line-chart' + }, + id: { + type: String, + default: 'line-chart' + }, + width: { + type: String, + default: '100%' + }, + height: { + type: String, + default: '280px' + }, + listData: { + type: Array, + require: true + } + }, + data() { + return { + chart: null + }; + }, + watch: { + listData(dataList) { + this.setLine(dataList) + } + }, + mounted() { + this.chart = echarts.init(document.getElementById(this.id)); + }, + methods: { + setLine(dataList) { + const xAxisData = []; + const data = []; + for (let i = 0; i < dataList.length; i++) { + const item = dataList[i] + xAxisData.push(item.week.substring(item.week.length - 2) + '周'); + data.push(item.count) + } + const markLineData = []; + for (let i = 1; i < data.length; i++) { + markLineData.push([{ + xAxis: i - 1, + yAxis: data[i - 1], + value: data[i] - data[i - 1] + }, { + xAxis: i, + yAxis: data[i] + }]); + } + this.chart.setOption({ + title: { + text: 'Awesome Chart' + }, + grid: { + left: 0, + right: 0, + bottom: 20, + + containLabel: true + }, + tooltip: { + trigger: 'axis' + }, + animationDelay: 1000, + xAxis: { + data: xAxisData, + axisLine: { + show: false + }, + axisTick: { + show: false + } +// axisLabel:{ +// show:false +// }, + }, + + yAxis: { + splitLine: { + show: false + }, + show: false + // min: 90 + }, + series: [{ + name: '撸文数', + type: 'line', + data, + markPoint: { + data: [ + { type: 'max', name: '最大值' }, + { type: 'min', name: '最å°å€¼' } + ] + }, + itemStyle: { + normal: { + color: '#30b08f' + } + }, + markLine: { + silent: true, + smooth: true, + effect: { + show: true + }, + animationDuration(idx) { + return idx * 100; + }, + animationDelay: 1000, + animationEasing: 'quadraticInOut', + distance: 1, + label: { + normal: { + position: 'middle' + } + }, + symbol: ['none', 'none'], + data: markLineData + } + }] + }) + } + } + } +</script> diff --git a/src/components/Dropzone/index.vue b/src/components/Dropzone/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..977f5a2d6b4e5577c648428d224335b9d745df59 --- /dev/null +++ b/src/components/Dropzone/index.vue @@ -0,0 +1,291 @@ +<template> + <div :ref="id" :action="url" class="dropzone" :id="id"> + <input type="file" name="file"> + </div> +</template> +<script> + import Dropzone from 'dropzone'; + import 'dropzone/dist/dropzone.css'; + import { getToken } from 'api/qiniu'; + + Dropzone.autoDiscover = false; + + export default { + data() { + return { + dropzone: '', + initOnce: true + } + }, + mounted() { + const element = document.getElementById(this.id); + const vm = this; + this.dropzone = new Dropzone(element, { + clickable: this.clickable, + thumbnailWidth: this.thumbnailWidth, + thumbnailHeight: this.thumbnailHeight, + maxFiles: this.maxFiles, + maxFilesize: this.maxFilesize, + dictRemoveFile: 'Remove', + addRemoveLinks: this.showRemoveLink, + acceptedFiles: this.acceptedFiles, + autoProcessQueue: this.autoProcessQueue, + dictDefaultMessage: '<i style="margin-top: 3em;display: inline-block" class="material-icons">' + this.defaultMsg + '</i><br>Drop files here to upload', + dictMaxFilesExceeded: 'åªèƒ½ä¸€ä¸ªå›¾', + previewTemplate: '<div class="dz-preview dz-file-preview"> <div class="dz-image" style="width:' + this.thumbnailWidth + 'px;height:' + this.thumbnailHeight + 'px" ><img style="width:' + this.thumbnailWidth + 'px;height:' + this.thumbnailHeight + 'px" data-dz-thumbnail /></div> <div class="dz-details"><div class="dz-size"><span data-dz-size></span></div> <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div> <div class="dz-error-message"><span data-dz-errormessage></span></div> <div class="dz-success-mark"> <i class="material-icons">done</i> </div> <div class="dz-error-mark"><i class="material-icons">error</i></div></div>', + init() { + const val = vm.defaultImg; + if (!val) return; + if (Array.isArray(val)) { + if (val.length === 0) return; + val.map((v, i) => { + const mockFile = { name: 'name' + i, size: 12345, url: v }; + this.options.addedfile.call(this, mockFile); + this.options.thumbnail.call(this, mockFile, v); + mockFile.previewElement.classList.add('dz-success'); + mockFile.previewElement.classList.add('dz-complete'); + vm.initOnce = false; + return true; + }) + } else { + const mockFile = { name: 'name', size: 12345, url: val }; + this.options.addedfile.call(this, mockFile); + this.options.thumbnail.call(this, mockFile, val); + mockFile.previewElement.classList.add('dz-success'); + mockFile.previewElement.classList.add('dz-complete'); + vm.initOnce = false; + } + }, + accept: (file, done) => { + const token = this.$store.getters.token; + getToken(token).then(response => { + file.token = response.data.qiniu_token; + file.key = response.data.qiniu_key; + file.url = response.data.qiniu_url; + done(); + }) + }, + sending: (file, xhr, formData) => { + formData.append('token', file.token); + formData.append('key', file.key); + vm.initOnce = false; + } + }); + + if (this.couldPaste) { + document.addEventListener('paste', this.pasteImg) + } + + this.dropzone.on('success', file => { + vm.$emit('dropzone-success', file, vm.dropzone.element) + }); + this.dropzone.on('addedfile', file => { + vm.$emit('dropzone-fileAdded', file) + }); + this.dropzone.on('removedfile', file => { + vm.$emit('dropzone-removedFile', file) + }); + this.dropzone.on('error', (file, error, xhr) => { + vm.$emit('dropzone-error', file, error, xhr) + }); + this.dropzone.on('successmultiple', (file, error, xhr) => { + vm.$emit('dropzone-successmultiple', file, error, xhr) + }); + }, + methods: { + removeAllFiles() { + this.dropzone.removeAllFiles(true) + }, + processQueue() { + this.dropzone.processQueue() + }, + pasteImg(event) { + const items = (event.clipboardData || event.originalEvent.clipboardData).items; + if (items[0].kind === 'file') { + this.dropzone.addFile(items[0].getAsFile()) + } + }, + initImages(val) { + if (!val) return; + if (Array.isArray(val)) { + val.map((v, i) => { + const mockFile = { name: 'name' + i, size: 12345, url: v }; + this.dropzone.options.addedfile.call(this.dropzone, mockFile); + this.dropzone.options.thumbnail.call(this.dropzone, mockFile, v); + mockFile.previewElement.classList.add('dz-success'); + mockFile.previewElement.classList.add('dz-complete'); + return true + }) + } else { + const mockFile = { name: 'name', size: 12345, url: val }; + this.dropzone.options.addedfile.call(this.dropzone, mockFile); + this.dropzone.options.thumbnail.call(this.dropzone, mockFile, val); + mockFile.previewElement.classList.add('dz-success'); + mockFile.previewElement.classList.add('dz-complete'); + } + } + + }, + destroyed() { + document.removeEventListener('paste', this.pasteImg); + this.dropzone.destroy(); + }, + watch: { + defaultImg(val) { + if (val.length === 0) { + this.initOnce = false; + return; + } + if (!this.initOnce) return; + this.initImages(val); + this.initOnce = false; + } + }, + props: { + id: { + type: String, + required: true + }, + url: { + type: String, + required: true + }, + clickable: { + type: Boolean, + default: true + }, + defaultMsg: { + type: String, + default: 'ä¸Šä¼ å›¾ç‰‡' + }, + acceptedFiles: { + type: String + }, + thumbnailHeight: { + type: Number, + default: 200 + }, + thumbnailWidth: { + type: Number, + default: 200 + }, + showRemoveLink: { + type: Boolean, + default: true + }, + maxFilesize: { + type: Number, + default: 2 + }, + maxFiles: { + type: Number, + default: 3 + }, + autoProcessQueue: { + type: Boolean, + default: true + }, + useCustomDropzoneOptions: { + type: Boolean, + default: false + }, + defaultImg: { + default: false + }, + couldPaste: { + default: false + } + } + } +</script> + +<style scoped> + .dropzone { + border: 2px solid #E5E5E5; + font-family: 'Roboto', sans-serif; + color: #777; + transition: background-color .2s linear; + padding: 5px; + } + + .dropzone:hover { + background-color: #F6F6F6; + } + + i { + color: #CCC; + } + + .dropzone .dz-image img { + width: 100%; + height: 100%; + } + + .dropzone input[name='file'] { + display: none; + } + + .dropzone .dz-preview .dz-image { + border-radius: 0px; + } + + .dropzone .dz-preview:hover .dz-image img { + transform: none; + -webkit-filter: none; + width: 100%; + height: 100%; + } + + .dropzone .dz-preview .dz-details { + bottom: 0px; + top: 0px; + color: white; + background-color: rgba(33, 150, 243, 0.8); + transition: opacity .2s linear; + text-align: left; + } + + .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { + background-color: transparent; + } + + .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { + border: none; + } + + .dropzone .dz-preview .dz-details .dz-filename:hover span { + background-color: transparent; + border: none; + } + + .dropzone .dz-preview .dz-remove { + position: absolute; + z-index: 30; + color: white; + margin-left: 15px; + padding: 10px; + top: inherit; + bottom: 15px; + border: 2px white solid; + text-decoration: none; + text-transform: uppercase; + font-size: 0.8rem; + font-weight: 800; + letter-spacing: 1.1px; + opacity: 0; + } + + .dropzone .dz-preview:hover .dz-remove { + opacity: 1; + } + + .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { + margin-left: -40px; + margin-top: -50px; + } + + .dropzone .dz-preview .dz-success-mark i, .dropzone .dz-preview .dz-error-mark i { + color: white; + font-size: 5rem; + } +</style> diff --git a/src/components/ErrLog/index.vue b/src/components/ErrLog/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..8d531b9e3b9bf9498c3fc08ec63d0f7f8c16d529 --- /dev/null +++ b/src/components/ErrLog/index.vue @@ -0,0 +1,43 @@ +<template> + <div> + <el-badge :is-dot="true" style="line-height: 30px;" @click.native="dialogTableVisible=true"> + <el-button size="small" type="primary"> + <wscn-icon-svg icon-class="bug" class="meta-item__icon"/> + </el-button> + </el-badge> + <el-dialog title="bug日志" v-model="dialogTableVisible"> + <el-table :data="logsList"> + <el-table-column label="message"> + <template scope="scope"> + <div>msg:{{ scope.row.err.message }}</div> + <br/> + <div>url: {{scope.row.url}}</div> + </template> + </el-table-column> + <el-table-column label="stack"> + <template scope="scope"> + {{ scope.row.err.stack}} + </template> + </el-table-column> + + </el-table> + </el-dialog> + </div> +</template> + +<script> + export default { + name: 'errLog', + props: { + logsList: { + type: Array + } + }, + data() { + return { + dialogTableVisible: false + } + }, + methods: {} + } +</script> diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5361dd511fd657c03fa90d7dccd39224236d5c82 --- /dev/null +++ b/src/components/Hamburger/index.vue @@ -0,0 +1,38 @@ +<template> + <div> + <svg @click="toggleClick" class="wscn-icon hamburger" :class="{'is-active':isActive}" aria-hidden="true"> + <use xlink:href="#icon-hamburger"></use> + </svg> + </div> +</template> + +<script> + export default { + name: 'hamburger', + props: { + isActive: { + type: Boolean, + default: false + }, + toggleClick: { + type: Function, + default: null + } + } + } +</script> + +<style scoped> + .hamburger { + display: inline-block; + cursor: pointer; + width: 20px; + height: 20px; + transform: rotate(0deg); + transition: .38s; + transform-origin: 50% 50%; + } + .hamburger.is-active { + transform: rotate(90deg); + } +</style> diff --git a/src/components/Icon-svg/index.js b/src/components/Icon-svg/index.js new file mode 100644 index 0000000000000000000000000000000000000000..55d342a943f248d98a4b08af2805fe588cfcdf59 --- /dev/null +++ b/src/components/Icon-svg/index.js @@ -0,0 +1,11 @@ +import Vue from 'vue' + +function registerAllComponents(requireContext) { + return requireContext.keys().forEach(comp => { + const vueComp = requireContext(comp) + const compName = vueComp.name ? vueComp.name.toLowerCase() : /\/([\w-]+)\.vue$/.exec(comp)[1] + Vue.component(compName, vueComp) + }) +} + +registerAllComponents(require.context('./', false, /\.vue$/)) diff --git a/src/components/Icon-svg/wscn-icon-stack.vue b/src/components/Icon-svg/wscn-icon-stack.vue new file mode 100644 index 0000000000000000000000000000000000000000..bf7b07e125eb355ac01ffbcd61cd96c04ac1d02d --- /dev/null +++ b/src/components/Icon-svg/wscn-icon-stack.vue @@ -0,0 +1,52 @@ +<template> + <div class="icon-container" :style="containerStyle"> + <slot class="icon"></slot> + </div> +</template> + +<script> + export default { + name: 'wscn-icon-stack', + props: { + width: { + type: Number, + default: 20 + }, + shape: { + type: String, + default: 'circle', + validator: val => { + const validShapes = ['circle', 'square'] + return validShapes.indexOf(val) > -1 + } + } + }, + computed: { + containerStyle() { + return { + width: `${this.width}px`, + height: `${this.width}px`, + fontSize: `${this.width * 0.6}px`, + borderRadius: `${this.shape === 'circle' && '50%'}` + } + } + } + } +</script> + +<style lang="scss" scoped> + .icon-container { + display: inline-block; + position: relative; + overflow: hidden; + background: #1482F0; + + .icon { + position: absolute; + color: #ffffff; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } +</style> diff --git a/src/components/Icon-svg/wscn-icon-svg.vue b/src/components/Icon-svg/wscn-icon-svg.vue new file mode 100644 index 0000000000000000000000000000000000000000..04b01f4aff873d3010b83d9925061c76948ae98b --- /dev/null +++ b/src/components/Icon-svg/wscn-icon-svg.vue @@ -0,0 +1,26 @@ +<template> + <svg class="wscn-icon" aria-hidden="true"> + <use :xlink:href="iconName"></use> + </svg> +</template> + +<script> + export default { + name: 'wscn-icon-svg', + props: { + iconClass: { + type: String, + required: true + } + }, + computed: { + iconName() { + return `#icon-${this.iconClass}` + } + } + } +</script> + +<style lang="scss" scoped> + +</style> diff --git a/src/components/ImageCropper/index.vue b/src/components/ImageCropper/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..d0e94ab260e2a529d2be47418031461d85715eaf --- /dev/null +++ b/src/components/ImageCropper/index.vue @@ -0,0 +1,676 @@ +<template> + <div class="vue-image-crop-upload" v-show="show"> + <div class="vicp-wrap"> + <div class="vicp-close" @click="off"> + <i class="vicp-icon4"></i> + </div> + + <div class="vicp-step1" v-show="step == 1"> + <div class="vicp-drop-area" + @dragleave="preventDefault" + @dragover="preventDefault" + @dragenter="preventDefault" + @click="handleClick" + @drop="handleChange"> + <i class="vicp-icon1" v-show="loading != 1"> + <i class="vicp-icon1-arrow"></i> + <i class="vicp-icon1-body"></i> + <i class="vicp-icon1-bottom"></i> + </i> + <span class="vicp-hint" v-show="loading !== 1">{{ lang.hint }}</span> + <span class="vicp-no-supported-hint" v-show="!isSupported">{{ lang.noSupported }}</span> + <input type="file" v-show="false" @change="handleChange" ref="fileinput"> + </div> + <div class="vicp-error" v-show="hasError"> + <i class="vicp-icon2"></i> {{ errorMsg }} + </div> + <div class="vicp-operate"> + <a @click="off" @mousedown="ripple">{{ lang.btn.off }}</a> + </div> + </div> + + <div class="vicp-step2" v-if="step == 2"> + <div class="vicp-crop"> + <div class="vicp-crop-left" v-show="true"> + <div class="vicp-img-container"> + <img :src="sourceImgUrl" + :style="sourceImgStyle" + class="vicp-img" + draggable="false" + @drag="preventDefault" + @dragstart="preventDefault" + @dragend="preventDefault" + @dragleave="preventDefault" + @dragover="preventDefault" + @dragenter="preventDefault" + @drop="preventDefault" + @mousedown="imgStartMove" + @mousemove="imgMove" + @mouseup="createImg" + @mouseout="createImg" + ref="img"> + <div class="vicp-img-shade vicp-img-shade-1" :style="sourceImgShadeStyle"></div> + <div class="vicp-img-shade vicp-img-shade-2" :style="sourceImgShadeStyle"></div> + </div> + <div class="vicp-range"> + <input type="range" :value="scale.range" step="1" min="0" max="100" @change="zoomChange"> + <i @mousedown="startZoomSub" @mouseout="endZoomSub" @mouseup="endZoomSub" + class="vicp-icon5"></i> + <i @mousedown="startZoomAdd" @mouseout="endZoomAdd" @mouseup="endZoomAdd" + class="vicp-icon6"></i> + </div> + </div> + <div class="vicp-crop-right" v-show="true"> + <div class="vicp-preview"> + <div class="vicp-preview-item"> + <img :src="createImgUrl" :style="previewStyle"> + <span>{{ lang.preview }}</span> + </div> + <div class="vicp-preview-item"> + <img :src="createImgUrl" :style="previewStyle" v-if="!noCircle"> + <span>{{ lang.preview }}</span> + </div> + </div> + </div> + </div> + <div class="vicp-operate"> + <a @click="setStep(1)" @mousedown="ripple">{{ lang.btn.back }}</a> + <a class="vicp-operate-btn" @click="upload" @mousedown="ripple">{{ lang.btn.save }}</a> + </div> + </div> + + <div class="vicp-step3" v-if="step == 3"> + <div class="vicp-upload"> + <span class="vicp-loading" v-show="loading === 1">{{ lang.loading }}</span> + <div class="vicp-progress-wrap"> + <span class="vicp-progress" v-show="loading === 1" :style="progressStyle"></span> + </div> + <div class="vicp-error" v-show="hasError"> + <i class="vicp-icon2"></i> {{ errorMsg }} + </div> + <div class="vicp-success" v-show="loading === 2"> + <i class="vicp-icon3"></i> {{ lang.success }} + </div> + </div> + <div class="vicp-operate"> + <a @click="setStep(2)" @mousedown="ripple">{{ lang.btn.back }}</a> + <a @click="off" @mousedown="ripple">{{ lang.btn.close }}</a> + </div> + </div> + <canvas v-show="false" :width="width" :height="height" ref="canvas"></canvas> + </div> + </div> +</template> + +<script> + /* eslint-disable */ + import {getToken, upload} from 'api/qiniu'; + import {effectRipple, data2blob} from './utils'; + import langBag from './lang'; + const mimes = { + 'jpg': 'image/jpeg', + 'png': 'image/png', + 'gif': 'image/gif', + 'svg': 'image/svg+xml', + 'psd': 'image/photoshop' + }; + + export default { + props: { + // åŸŸï¼Œä¸Šä¼ æ–‡ä»¶name,触å‘事件会带上(如果一个页é¢å¤šä¸ªå›¾ç‰‡ä¸Šä¼ 控件,å¯ä»¥åšåŒºåˆ† + field: { + type: String, + default: 'avatar' + }, + // ä¸Šä¼ åœ°å€ + url: { + type: String, + default: '' + }, + // 其他è¦ä¸Šä¼ 文件附带的数æ®ï¼Œå¯¹è±¡æ ¼å¼ + params: { + type: Object, + default: null + }, + // 剪è£å›¾ç‰‡çš„宽 + width: { + type: Number, + default: 200 + }, + // 剪è£å›¾ç‰‡çš„高 + height: { + type: Number, + default: 200 + }, + // ä¸é¢„览圆形图片 + noCircle: { + type: Boolean, + default: false + }, + // å•æ–‡ä»¶å¤§å°é™åˆ¶ + maxSize: { + type: Number, + default: 10240 + }, + // è¯è¨€ç±»åž‹ + langType: { + type: String, + 'default': 'zh' + }, + + }, + data() { + let that = this, + { + langType, + width, + height + } = that, + isSupported = true, + lang = langBag[langType] ? langBag[langType] : lang['zh']; + + if (typeof FormData != 'function') { + isSupported = false; + } + return { + show: true, + // 图片的mime + mime:mimes['jpg'], + // è¯è¨€åŒ… + lang, + // æµè§ˆå™¨æ˜¯å¦æ”¯æŒè¯¥æŽ§ä»¶ + isSupported, + // æ¥éª¤ + step: 1, //1选择文件 2å‰ªè£ 3ä¸Šä¼ + // ä¸Šä¼ çŠ¶æ€åŠè¿›åº¦ + loading: 0, //0未开始 1æ£åœ¨ 2æˆåŠŸ 3错误 + progress: 0, + // 是å¦æœ‰é”™è¯¯åŠé”™è¯¯ä¿¡æ¯ + hasError: false, + errorMsg: '', + // 需求图宽高比 + ratio: width / height, + // 原图地å€ã€ç”Ÿæˆå›¾ç‰‡åœ°å€ + sourceImg: null, + sourceImgUrl: '', + createImgUrl: '', + // 原图片拖动事件åˆå§‹å€¼ + sourceImgMouseDown: { + on: false, + mX: 0, //é¼ æ ‡æŒ‰ä¸‹çš„åæ ‡ + mY: 0, + x: 0, //scale原图åæ ‡ + y: 0 + }, + // 生æˆå›¾ç‰‡é¢„è§ˆçš„å®¹å™¨å¤§å° + previewContainer: { + width: 100, + height: 100 + }, + // 原图容器宽高 + sourceImgContainer: { // sic + width: 240, + height: 180 + }, + // 原图展示属性 + scale: { + zoomAddOn: false, //æŒ‰é’®ç¼©æ”¾äº‹ä»¶å¼€å¯ + zoomSubOn: false, //æŒ‰é’®ç¼©æ”¾äº‹ä»¶å¼€å¯ + range: 1, //最大100 + x: 0, + y: 0, + width: 0, + height: 0, + maxWidth: 0, + maxHeight: 0, + minWidth: 0, //最宽 + minHeight: 0, + naturalWidth: 0, //原宽 + naturalHeight: 0 + } + } + }, + computed: { + // 进度æ¡æ ·å¼ + progressStyle() { + let { + progress + } = this; + return { + width: progress + '%' + } + }, + // åŽŸå›¾æ ·å¼ + sourceImgStyle() { + let { + scale, + sourceImgMasking + } = this; + return { + top: scale.y + sourceImgMasking.y + 'px', + left: scale.x + sourceImgMasking.x + 'px', + width: scale.width + 'px', + height: scale.height + 'px' + } + }, + // 原图蒙版属性 + sourceImgMasking() { + let { + width, + height, + ratio, + sourceImgContainer + } = this, + sic = sourceImgContainer, + sicRatio = sic.width / sic.height, // 原图容器宽高比 + x = 0, + y = 0, + w = sic.width, + h = sic.height, + scale = 1; + if (ratio < sicRatio) { + scale = sic.height / height; + w = sic.height * ratio; + x = (sic.width - w) / 2; + } + if (ratio > sicRatio) { + scale = sic.width / width; + h = sic.width / ratio; + y = (sic.height - h) / 2; + } + return { + scale, // 蒙版相对需求宽高的缩放 + x, + y, + width: w, + height: h + }; + }, + // 原图é®ç½©æ ·å¼ + sourceImgShadeStyle() { + let sic = this.sourceImgContainer, + sim = this.sourceImgMasking, + w = sim.width == sic.width ? sim.width : (sic.width - sim.width) / 2, + h = sim.height == sic.height ? sim.height : (sic.height - sim.height) / 2; + return { + width: w + 'px', + height: h + 'px' + }; + }, + previewStyle() { + let { + width, + height, + ratio, + previewContainer + } = this, + pc = previewContainer, + w = pc.width, + h = pc.height, + pcRatio = w / h; + if (ratio < pcRatio) { + w = pc.height * ratio; + } + if (ratio > pcRatio) { + h = pc.width / ratio; + } + return { + width: w + 'px', + height: h + 'px' + }; + } + }, + methods: { + // 点击波纹效果 + ripple(e) { + effectRipple(e); + }, + // å…³é—控件 + off() { + this.show = false; + }, + // 设置æ¥éª¤ + setStep(step) { + let that = this; + setTimeout(function () { + that.step = step; + }, 200); + }, + /* 图片选择区域函数绑定 + ---------------------------------------------------------------*/ + preventDefault(e) { + e.preventDefault(); + return false; + }, + handleClick(e) { + if (this.loading !== 1) { + if (e.target !== this.$refs.fileinput) { + e.preventDefault(); + if (document.activeElement !== this.$refs) { + this.$refs.fileinput.click(); + } + } + } + }, + handleChange(e) { + e.preventDefault(); + if (this.loading !== 1) { + let files = e.target.files || e.dataTransfer.files; + this.reset(); + if (this.checkFile(files[0])) { + this.setSourceImg(files[0]); + } + } + }, + /* ---------------------------------------------------------------*/ + // 检测选择的文件是å¦åˆé€‚ + checkFile(file) { + let that = this, + { + lang, + maxSize + } = that; + // ä»…é™å›¾ç‰‡ + if (file.type.indexOf('image') === -1) { + that.hasError = true; + that.errorMsg = lang.error.onlyImg; + return false; + } + this.mime=file.type; + // è¶…å‡ºå¤§å° + if (file.size / 1024 > maxSize) { + that.hasError = true; + that.errorMsg = lang.error.outOfSize + maxSize + 'kb'; + return false; + } + return true; + }, + // é‡ç½®æŽ§ä»¶ + reset() { + let that = this; + that.step = 1; + that.loading = 0; + that.hasError = false; + that.errorMsg = ''; + that.progress = 0; + }, + // è®¾ç½®å›¾ç‰‡æº + setSourceImg(file) { + let that = this, + fr = new FileReader(); + fr.onload = function (e) { + that.sourceImgUrl = fr.result; + that.startCrop(); + }; + fr.readAsDataURL(file); + }, + // 剪è£å‰å‡†å¤‡å·¥ä½œ + startCrop() { + let that = this, + { + width, + height, + ratio, + scale, + sourceImgUrl, + sourceImgMasking, + lang + } = that, + sim = sourceImgMasking, + img = new Image(); + img.src = sourceImgUrl; + img.onload = function () { + let nWidth = img.naturalWidth, + nHeight = img.naturalHeight, + nRatio = nWidth / nHeight, + w = sim.width, + h = sim.height, + x = 0, + y = 0; + // 图片åƒç´ ä¸è¾¾æ ‡ +// if (nWidth < width || nHeight < height) { +// that.hasError = true; +// that.errorMsg = lang.error.lowestPx + width + '*' + height; +// return false; +// } + if (ratio > nRatio) { + h = w / nRatio; + y = (sim.height - h) / 2; + } + if (ratio < nRatio) { + w = h * nRatio; + x = (sim.width - w) / 2; + } + scale.range = 0; + scale.x = x; + scale.y = y; + scale.width = w; + scale.height = h; + scale.minWidth = w; + scale.minHeight = h; + scale.maxWidth = nWidth * sim.scale; + scale.maxHeight = nHeight * sim.scale; + scale.naturalWidth = nWidth; + scale.naturalHeight = nHeight; + that.sourceImg = img; + that.createImg(); + that.setStep(2); + }; + }, + // é¼ æ ‡æŒ‰ä¸‹å›¾ç‰‡å‡†å¤‡ç§»åŠ¨ + imgStartMove(e) { + let { + sourceImgMouseDown, + scale + } = this, + simd = sourceImgMouseDown; + simd.mX = e.screenX; + simd.mY = e.screenY; + simd.x = scale.x; + simd.y = scale.y; + simd.on = true; + }, + // é¼ æ ‡æŒ‰ä¸‹çŠ¶æ€ä¸‹ç§»åŠ¨ï¼Œå›¾ç‰‡ç§»åŠ¨ + imgMove(e) { + let { + sourceImgMouseDown: { + on, + mX, + mY, + x, + y + }, + scale, + sourceImgMasking + } = this, + sim = sourceImgMasking, + nX = e.screenX, + nY = e.screenY, + dX = nX - mX, + dY = nY - mY, + rX = x + dX, + rY = y + dY; + if (!on) return; + if (rX > 0) { + rX = 0; + } + if (rY > 0) { + rY = 0; + } + if (rX < sim.width - scale.width) { + rX = sim.width - scale.width; + } + if (rY < sim.height - scale.height) { + rY = sim.height - scale.height; + } + scale.x = rX; + scale.y = rY; + }, + // 按钮按下开始放大 + startZoomAdd(e) { + let that = this, + { + scale + } = that; + scale.zoomAddOn = true; + function zoom() { + if (scale.zoomAddOn) { + let range = scale.range >= 100 ? 100 : ++scale.range; + that.zoomImg(range); + setTimeout(function () { + zoom(); + }, 60); + } + } + + zoom(); + }, + // 按钮æ¾å¼€æˆ–移开å–消放大 + endZoomAdd(e) { + this.scale.zoomAddOn = false; + }, + // æŒ‰é’®æŒ‰ä¸‹å¼€å§‹ç¼©å° + startZoomSub(e) { + let that = this, + { + scale + } = that; + scale.zoomSubOn = true; + function zoom() { + if (scale.zoomSubOn) { + let range = scale.range <= 0 ? 0 : --scale.range; + that.zoomImg(range); + setTimeout(function () { + zoom(); + }, 60); + } + } + + zoom(); + }, + // 按钮æ¾å¼€æˆ–移开å–æ¶ˆç¼©å° + endZoomSub(e) { + let { + scale + } = this; + scale.zoomSubOn = false; + }, + zoomChange(e) { + this.zoomImg(e.target.value); + }, + // 缩放原图 + zoomImg(newRange) { + let that = this, + { + sourceImgMasking, + sourceImgMouseDown, + scale + } = this, + { + maxWidth, + maxHeight, + minWidth, + minHeight, + width, + height, + x, + y, + range + } = scale, + sim = sourceImgMasking, + // 蒙版宽高 + sWidth = sim.width, + sHeight = sim.height, + // 新宽高 + nWidth = minWidth + (maxWidth - minWidth) * newRange / 100, + nHeight = minHeight + (maxHeight - minHeight) * newRange / 100, + // æ–°åæ ‡ï¼ˆæ ¹æ®è’™ç‰ˆä¸å¿ƒç‚¹ç¼©æ”¾ï¼‰ + nX = sWidth / 2 - (nWidth / width) * (sWidth / 2 - x), + nY = sHeight / 2 - (nHeight / height) * (sHeight / 2 - y); + // 判æ–æ–°åæ ‡æ˜¯å¦è¶…过蒙版é™åˆ¶ + if (nX > 0) { + nX = 0; + } + if (nY > 0) { + nY = 0; + } + if (nX < sWidth - nWidth) { + nX = sWidth - nWidth; + } + if (nY < sHeight - nHeight) { + nY = sHeight - nHeight; + } + // èµ‹å€¼å¤„ç† + scale.x = nX; + scale.y = nY; + scale.width = nWidth; + scale.height = nHeight; + scale.range = newRange; + setTimeout(function () { + if (scale.range == newRange) { + that.createImg(); + } + }, 300); + }, + // 生æˆéœ€æ±‚图片 + createImg(e) { + let that = this, + { + mime, + sourceImg, + scale: { + x, + y, + width, + height + }, + sourceImgMasking: { + scale + } + } = that, + canvas = that.$refs.canvas, + ctx = canvas.getContext('2d'); + if (e) { + // å–æ¶ˆé¼ æ ‡æŒ‰ä¸‹ç§»åŠ¨çŠ¶æ€ + that.sourceImgMouseDown.on = false; + } + ctx.drawImage(sourceImg, x / scale, y / scale, width / scale, height / scale); + that.createImgUrl = canvas.toDataURL(mime); + }, + // ä¸Šä¼ å›¾ç‰‡ + upload() { + let that = this, + { + lang, + mime, + createImgUrl + } = this, + formData = new FormData(); + // ä¸Šä¼ æ–‡ä»¶ + that.loading = 1; + that.progress = 0; + that.setStep(3); + formData.append('file', data2blob(createImgUrl, mime)); + const token = this.$store.getters.token; + getToken(token).then((response)=> { + const url = response.data.qiniu_url; + formData.append('token', response.data.qiniu_token); + formData.append('key', response.data.qiniu_key); + upload(formData).then((response)=> { + that.loading = 2; + that.$emit('crop-upload-success', url); + }).catch(err => { + that.loading = 3; + that.hasError = true; + that.errorMsg = lang.fail; + that.$emit('crop-upload-fail'); + }); + }); + } + } + } +</script> + +<style scoped> + @import "./upload.css"; +</style> diff --git a/src/components/ImageCropper/lang.js b/src/components/ImageCropper/lang.js new file mode 100644 index 0000000000000000000000000000000000000000..f2fa9210e21d79be7c18f463b101fbe910ea035f --- /dev/null +++ b/src/components/ImageCropper/lang.js @@ -0,0 +1,41 @@ +const langBag = { + zh: { + hint: '点击,或拖动图片至æ¤å¤„', + loading: 'æ£åœ¨ä¸Šä¼ ……', + noSupported: 'æµè§ˆå™¨ä¸æ”¯æŒè¯¥åŠŸèƒ½ï¼Œè¯·ä½¿ç”¨IE10以上或其他现在æµè§ˆå™¨ï¼', + success: 'ä¸Šä¼ æˆåŠŸ', + fail: 'å›¾ç‰‡ä¸Šä¼ å¤±è´¥', + preview: '头åƒé¢„览', + btn: { + off: 'å–消', + close: 'å…³é—', + back: '上一æ¥', + save: 'ä¿å˜' + }, + error: { + onlyImg: 'ä»…é™å›¾ç‰‡æ ¼å¼', + outOfSize: 'å•æ–‡ä»¶å¤§å°ä¸èƒ½è¶…过 ', + lowestPx: '图片最低åƒç´ 为(宽*高):' + } + }, + en: { + hint: 'Click, or drag the file here', + loading: 'Uploading……', + noSupported: 'Browser does not support, please use IE10+ or other browsers', + success: 'Upload success', + fail: 'Upload failed', + preview: 'Preview', + btn: { + off: 'Cancel', + close: 'Close', + back: 'Back', + save: 'Save' + }, + error: { + onlyImg: 'Image only', + outOfSize: 'Image exceeds size limit: ', + lowestPx: 'The lowest pixel in the image: ' + } + } +}; +export default langBag; diff --git a/src/components/ImageCropper/upload.css b/src/components/ImageCropper/upload.css new file mode 100644 index 0000000000000000000000000000000000000000..d01dc40cac4f6484a2a277d612fcde4b5ba9d15e --- /dev/null +++ b/src/components/ImageCropper/upload.css @@ -0,0 +1,691 @@ +@charset "UTF-8"; +@-webkit-keyframes vicp_progress { + 0% { + background-position-y: 0; + } + 100% { + background-position-y: 40px; + } +} + +@keyframes vicp_progress { + 0% { + background-position-y: 0; + } + 100% { + background-position-y: 40px; + } +} + +@-webkit-keyframes vicp { + 0% { + opacity: 0; + -webkit-transform: scale(0) translatey(-60px); + transform: scale(0) translatey(-60px); + } + 100% { + opacity: 1; + -webkit-transform: scale(1) translatey(0); + transform: scale(1) translatey(0); + } +} + +@keyframes vicp { + 0% { + opacity: 0; + -webkit-transform: scale(0) translatey(-60px); + transform: scale(0) translatey(-60px); + } + 100% { + opacity: 1; + -webkit-transform: scale(1) translatey(0); + transform: scale(1) translatey(0); + } +} + +.vue-image-crop-upload { + position: fixed; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + z-index: 10000; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.65); + -webkit-tap-highlight-color: transparent; + -moz-tap-highlight-color: transparent; +} + +.vue-image-crop-upload .vicp-wrap { + -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + position: fixed; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + z-index: 10000; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 600px; + height: 330px; + padding: 25px; + background-color: #fff; + border-radius: 2px; + -webkit-animation: vicp 0.12s ease-in; + animation: vicp 0.12s ease-in; +} + +.vue-image-crop-upload .vicp-wrap .vicp-close { + position: absolute; + right: -30px; + top: -30px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4 { + position: relative; + display: block; + width: 30px; + height: 30px; + cursor: pointer; + -webkit-transition: -webkit-transform 0.18s; + transition: -webkit-transform 0.18s; + transition: transform 0.18s; + transition: transform 0.18s, -webkit-transform 0.18s; + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); +} + +.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after, .vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::before { + -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + content: ''; + position: absolute; + top: 12px; + left: 4px; + width: 20px; + height: 3px; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background-color: #fff; +} + +.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4::after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.vue-image-crop-upload .vicp-wrap .vicp-close .vicp-icon4:hover { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area { + position: relative; + padding: 35px; + height: 200px; + background-color: rgba(0, 0, 0, 0.03); + text-align: center; + border: 1px dashed rgba(0, 0, 0, 0.08); + overflow: hidden; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 { + display: block; + margin: 0 auto 6px; + width: 42px; + height: 42px; + overflow: hidden; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 .vicp-icon1-arrow { + display: block; + margin: 0 auto; + width: 0; + height: 0; + border-bottom: 14.7px solid rgba(0, 0, 0, 0.3); + border-left: 14.7px solid transparent; + border-right: 14.7px solid transparent; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 .vicp-icon1-body { + display: block; + width: 12.6px; + height: 14.7px; + margin: 0 auto; + background-color: rgba(0, 0, 0, 0.3); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-icon1 .vicp-icon1-bottom { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: block; + height: 12.6px; + border: 6px solid rgba(0, 0, 0, 0.3); + border-top: none; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-hint { + display: block; + padding: 15px; + font-size: 14px; + color: #666; + line-height: 30px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area .vicp-no-supported-hint { + display: block; + position: absolute; + top: 0; + left: 0; + padding: 30px; + width: 100%; + height: 60px; + line-height: 30px; + background-color: #eee; + text-align: center; + color: #666; + font-size: 14px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step1 .vicp-drop-area:hover { + cursor: pointer; + border-color: rgba(0, 0, 0, 0.1); + background-color: rgba(0, 0, 0, 0.05); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop { + overflow: hidden; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left { + float: left; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-img-container { + position: relative; + display: block; + width: 240px; + height: 180px; + background-color: #e5e5e0; + overflow: hidden; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-img-container .vicp-img { + position: absolute; + display: block; + cursor: move; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-img-container .vicp-img-shade { + -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); + position: absolute; + background-color: rgba(241, 242, 243, 0.8); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-img-container .vicp-img-shade.vicp-img-shade-1 { + top: 0; + left: 0; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-img-container .vicp-img-shade.vicp-img-shade-2 { + bottom: 0; + right: 0; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range { + position: relative; + margin: 30px 0; + width: 240px; + height: 18px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon5, +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon6 { + position: absolute; + top: 0; + width: 18px; + height: 18px; + border-radius: 100%; + background-color: rgba(0, 0, 0, 0.08); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon5:hover, +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon6:hover { + -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); + cursor: pointer; + background-color: rgba(0, 0, 0, 0.14); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon5 { + left: 0; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon5::before { + position: absolute; + content: ''; + display: block; + left: 3px; + top: 8px; + width: 12px; + height: 2px; + background-color: #fff; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon6 { + right: 0; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon6::before { + position: absolute; + content: ''; + display: block; + left: 3px; + top: 8px; + width: 12px; + height: 2px; + background-color: #fff; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range .vicp-icon6::after { + position: absolute; + content: ''; + display: block; + top: 3px; + left: 8px; + width: 2px; + height: 12px; + background-color: #fff; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range] { + display: block; + padding-top: 5px; + margin: 0 auto; + width: 180px; + height: 8px; + vertical-align: top; + background: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer; + /* æ»‘å— + ---------------------------------------------------------------*/ + /* è½¨é“ + ---------------------------------------------------------------*/ +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:focus { + outline: none; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-webkit-slider-thumb { + -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); + -webkit-appearance: none; + appearance: none; + margin-top: -3px; + width: 12px; + height: 12px; + background-color: #61c091; + border-radius: 100%; + border: none; + -webkit-transition: 0.2s; + transition: 0.2s; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-moz-range-thumb { + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); + -moz-appearance: none; + appearance: none; + width: 12px; + height: 12px; + background-color: #61c091; + border-radius: 100%; + border: none; + -webkit-transition: 0.2s; + transition: 0.2s; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-ms-thumb { + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.18); + appearance: none; + width: 12px; + height: 12px; + background-color: #61c091; + border: none; + border-radius: 100%; + -webkit-transition: 0.2s; + transition: 0.2s; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:active::-moz-range-thumb { + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + width: 14px; + height: 14px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:active::-ms-thumb { + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + width: 14px; + height: 14px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:active::-webkit-slider-thumb { + -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.23); + margin-top: -4px; + width: 14px; + height: 14px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-webkit-slider-runnable-track { + -webkit-box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); + width: 100%; + height: 6px; + cursor: pointer; + border-radius: 2px; + border: none; + background-color: rgba(68, 170, 119, 0.3); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-moz-range-track { + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); + width: 100%; + height: 6px; + cursor: pointer; + border-radius: 2px; + border: none; + background-color: rgba(68, 170, 119, 0.3); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-ms-track { + box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.12); + width: 100%; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; + height: 6px; + border-radius: 2px; + border: none; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-ms-fill-lower { + background-color: rgba(68, 170, 119, 0.3); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]::-ms-fill-upper { + background-color: rgba(68, 170, 119, 0.15); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:focus::-webkit-slider-runnable-track { + background-color: rgba(68, 170, 119, 0.5); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:focus::-moz-range-track { + background-color: rgba(68, 170, 119, 0.5); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:focus::-ms-fill-lower { + background-color: rgba(68, 170, 119, 0.45); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-left .vicp-range input[type=range]:focus::-ms-fill-upper { + background-color: rgba(68, 170, 119, 0.25); +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right { + float: right; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right .vicp-preview { + height: 150px; + overflow: hidden; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right .vicp-preview .vicp-preview-item { + position: relative; + padding: 5px; + width: 100px; + height: 100px; + float: left; + margin-right: 16px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right .vicp-preview .vicp-preview-item span { + position: absolute; + bottom: -30px; + width: 100%; + font-size: 14px; + color: #bbb; + display: block; + text-align: center; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right .vicp-preview .vicp-preview-item img { + position: absolute; + display: block; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + padding: 3px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.15); + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right .vicp-preview .vicp-preview-item:last-child { + margin-right: 0; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step2 .vicp-crop .vicp-crop-right .vicp-preview .vicp-preview-item:last-child img { + border-radius: 100%; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload { + position: relative; + padding: 35px; + height: 200px; + background-color: rgba(0, 0, 0, 0.03); + text-align: center; + border: 1px dashed #ddd; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-loading { + display: block; + padding: 15px; + font-size: 16px; + color: #999; + line-height: 30px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-progress-wrap { + margin-top: 12px; + background-color: rgba(0, 0, 0, 0.08); + border-radius: 3px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-progress-wrap .vicp-progress { + position: relative; + display: block; + height: 5px; + border-radius: 3px; + background-color: #4a7; + -webkit-box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3); + box-shadow: 0 2px 6px 0 rgba(68, 170, 119, 0.3); + -webkit-transition: width 0.15s linear; + transition: width 0.15s linear; + background-image: -webkit-linear-gradient(135deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%, transparent); + background-size: 40px 40px; + -webkit-animation: vicp_progress 0.5s linear infinite; + animation: vicp_progress 0.5s linear infinite; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-progress-wrap .vicp-progress::after { + content: ''; + position: absolute; + display: block; + top: -3px; + right: -3px; + width: 9px; + height: 9px; + border: 1px solid rgba(245, 246, 247, 0.7); + -webkit-box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7); + box-shadow: 0 1px 4px 0 rgba(68, 170, 119, 0.7); + border-radius: 100%; + background-color: #4a7; +} + +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-error, +.vue-image-crop-upload .vicp-wrap .vicp-step3 .vicp-upload .vicp-success { + height: 100px; + line-height: 100px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-operate { + position: absolute; + right: 20px; + bottom: 20px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-operate a { + position: relative; + float: left; + display: block; + margin-left: 10px; + width: 100px; + height: 36px; + line-height: 36px; + text-align: center; + cursor: pointer; + font-size: 14px; + color: #4a7; + border-radius: 2px; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.vue-image-crop-upload .vicp-wrap .vicp-operate a:hover { + background-color: rgba(0, 0, 0, 0.03); +} + +.vue-image-crop-upload .vicp-wrap .vicp-error, +.vue-image-crop-upload .vicp-wrap .vicp-success { + display: block; + font-size: 14px; + line-height: 24px; + height: 24px; + color: #d10; + text-align: center; + vertical-align: top; +} + +.vue-image-crop-upload .vicp-wrap .vicp-success { + color: #4a7; +} + +.vue-image-crop-upload .vicp-wrap .vicp-icon3 { + position: relative; + display: inline-block; + width: 20px; + height: 20px; + top: 4px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-icon3::after { + position: absolute; + top: 3px; + left: 6px; + width: 6px; + height: 10px; + border-width: 0 2px 2px 0; + border-color: #4a7; + border-style: solid; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + content: ''; +} + +.vue-image-crop-upload .vicp-wrap .vicp-icon2 { + position: relative; + display: inline-block; + width: 20px; + height: 20px; + top: 4px; +} + +.vue-image-crop-upload .vicp-wrap .vicp-icon2::after, .vue-image-crop-upload .vicp-wrap .vicp-icon2::before { + content: ''; + position: absolute; + top: 9px; + left: 4px; + width: 13px; + height: 2px; + background-color: #d10; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); +} + +.vue-image-crop-upload .vicp-wrap .vicp-icon2::after { + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); +} + +.e-ripple { + position: absolute; + border-radius: 100%; + background-color: rgba(0, 0, 0, 0.15); + background-clip: padding-box; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + opacity: 1; +} + +.e-ripple.z-active { + opacity: 0; + -webkit-transform: scale(2); + -ms-transform: scale(2); + transform: scale(2); + -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 1.2s ease-out, transform 0.6s ease-out; + transition: opacity 1.2s ease-out, transform 0.6s ease-out, -webkit-transform 0.6s ease-out; +} \ No newline at end of file diff --git a/src/components/ImageCropper/utils.js b/src/components/ImageCropper/utils.js new file mode 100644 index 0000000000000000000000000000000000000000..0ccd3af04cb9af99b91cb2195e593250da80849e --- /dev/null +++ b/src/components/ImageCropper/utils.js @@ -0,0 +1,58 @@ +/* eslint-disable */ + +/** + * + * @param e + * @param arg_opts + * @returns {boolean} + */ +export function effectRipple(e, arg_opts) { + let opts = Object.assign({ + ele: e.target, // æ³¢çº¹ä½œç”¨å…ƒç´ + type: 'hit', // hit点击ä½ç½®æ‰©æ•£ã€€centerä¸å¿ƒç‚¹æ‰©å±• + bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, arg_opts), + target = opts.ele; + if (target) { + let rect = target.getBoundingClientRect(), + ripple = target.querySelector('.e-ripple'); + if (!ripple) { + ripple = document.createElement('span'); + ripple.className = 'e-ripple'; + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'; + target.appendChild(ripple); + } else { + ripple.className = 'e-ripple'; + } + switch (opts.type) { + case 'center': + ripple.style.top = (rect.height / 2 - ripple.offsetHeight / 2) + 'px'; + ripple.style.left = (rect.width / 2 - ripple.offsetWidth / 2) + 'px'; + break; + default: + ripple.style.top = (e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop) + 'px'; + ripple.style.left = (e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft) + 'px'; + } + ripple.style.backgroundColor = opts.bgc; + ripple.className = 'e-ripple z-active'; + return false; + } +} +// database64æ–‡ä»¶æ ¼å¼è½¬æ¢ä¸º2进制 +/** + * + * @param data + * @param mime + * @returns {*} + */ +export function data2blob(data, mime) { + // dataURL çš„æ ¼å¼ä¸º “data:image/png;base64,****â€,逗å·ä¹‹å‰éƒ½æ˜¯ä¸€äº›è¯´æ˜Žæ€§çš„æ–‡å—,我们åªéœ€è¦é€—å·ä¹‹åŽçš„就行了 + data = data.split(',')[1]; + data = window.atob(data); + var ia = new Uint8Array(data.length); + for (var i = 0; i < data.length; i++) { + ia[i] = data.charCodeAt(i); + } + // canvas.toDataURL è¿”å›žçš„é»˜è®¤æ ¼å¼å°±æ˜¯ image/png + return new Blob([ia], {type: mime}); +}; diff --git a/src/components/MDinput/index.vue b/src/components/MDinput/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..277f2e20bd56cf1a06c7906706daaeac4c3e107b --- /dev/null +++ b/src/components/MDinput/index.vue @@ -0,0 +1,407 @@ +<template> + <div class="material-input__component" :class="computedClasses"> + <input + v-if="type === 'email'" + type="email" + class="material-input" + :name="name" + :id="id" + :placeholder="placeholder" + v-model="valueCopy" + + :readonly="readonly" + :disabled="disabled" + :autocomplete="autocomplete" + + :required="required" + + @focus="handleFocus(true)" + @blur="handleFocus(false)" + @input="handleModelInput" + > + <input + v-if="type === 'url'" + type="url" + class="material-input" + :name="name" + :id="id" + :placeholder="placeholder" + v-model="valueCopy" + + :readonly="readonly" + :disabled="disabled" + :autocomplete="autocomplete" + + :required="required" + + @focus="handleFocus(true)" + @blur="handleFocus(false)" + @input="handleModelInput" + > + <input + v-if="type === 'number'" + type="number" + class="material-input" + :name="name" + :id="id" + :placeholder="placeholder" + v-model="valueCopy" + + :readonly="readonly" + :disabled="disabled" + :autocomplete="autocomplete" + + :max="max" + :min="min" + :minlength="minlength" + :maxlength="maxlength" + :required="required" + + @focus="handleFocus(true)" + @blur="handleFocus(false)" + @input="handleModelInput" + > + <input + v-if="type === 'password'" + type="password" + class="material-input" + :name="name" + :id="id" + :placeholder="placeholder" + v-model="valueCopy" + + :readonly="readonly" + :disabled="disabled" + :autocomplete="autocomplete" + + :max="max" + :min="min" + :required="required" + + @focus="handleFocus(true)" + @blur="handleFocus(false)" + @input="handleModelInput" + > + <input + v-if="type === 'tel'" + type="tel" + class="material-input" + :name="name" + :id="id" + :placeholder="placeholder" + v-model="valueCopy" + + :readonly="readonly" + :disabled="disabled" + :autocomplete="autocomplete" + + :required="required" + + @focus="handleFocus(true)" + @blur="handleFocus(false)" + @input="handleModelInput" + > + <input + v-if="type === 'text'" + type="text" + class="material-input" + :name="name" + :id="id" + :placeholder="placeholder" + v-model="valueCopy" + + :readonly="readonly" + :disabled="disabled" + :autocomplete="autocomplete" + + :minlength="minlength" + :maxlength="maxlength" + :required="required" + + @focus="handleFocus(true)" + @blur="handleFocus(false)" + @input="handleModelInput" + > + + <span class="material-input-bar"></span> + + <label class="material-label"> + <slot></slot> + </label> + <div v-if="errorMessages" class="material-errors"> + <div v-for="error in computedErrors" class="material-error"> + {{ error }} + </div> + </div> + </div> +</template> + +<script> + export default { + name: 'material-input', + computed: { + computedErrors() { + return typeof this.errorMessages === 'string' + ? [this.errorMessages] : this.errorMessages + }, + computedClasses() { + return { + 'material--active': this.focus, + 'material--disabled': this.disabled, + 'material--has-errors': Boolean( + !this.valid || + (this.errorMessages && this.errorMessages.length)), + 'material--raised': Boolean( + this.focus || + this.valueCopy || // has value + (this.placeholder && !this.valueCopy)) // has placeholder + } + } + }, + data() { + return { + valueCopy: null, + focus: false, + valid: true + } + }, + beforeMount() { + // Here we are following the Vue2 convention on custom v-model: + // https://github.com/vuejs/vue/issues/2873#issuecomment-223759341 + this.copyValue(this.value) + }, + methods: { + handleModelInput(event) { + this.$emit('input', event.target.value, event) + this.handleValidation() + }, + handleFocus(focused) { + this.focus = focused + }, + handleValidation() { + this.valid = this.$el ? this.$el.querySelector( + '.material-input').validity.valid : this.valid + }, + copyValue(value) { + this.valueCopy = value + this.handleValidation() + } + }, + watch: { + value(newValue) { + this.copyValue(newValue) + } + }, + props: { + id: { + type: String, + default: null + }, + name: { + type: String, + default: null + }, + type: { + type: String, + default: 'text' + }, + value: { + default: null + }, + placeholder: { + type: String, + default: null + }, + readonly: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + min: { + type: String, + default: null + }, + max: { + type: String, + default: null + }, + minlength: { + type: Number, + default: null + }, + maxlength: { + type: Number, + default: null + }, + required: { + type: Boolean, + default: true + }, + autocomplete: { + type: String, + default: 'off' + }, + errorMessages: { + type: [Array, String], + default: null + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + // Fonts: + $font-size-base: 16px; + $font-size-small: 18px; + $font-size-smallest: 12px; + $font-weight-normal: normal; + // Utils + $spacer: 12px; + $transition: 0.2s ease all; + // Base clases: + %base-bar-pseudo { + content: ''; + height: 1px; + width: 0; + bottom: 0; + position: absolute; + transition: $transition; + } + + // Mixins: + @mixin slided-top() { + top: -2 * $spacer; + font-size: $font-size-small; + } + + // Component: + .material-input__component { + /*margin-top: 30px;*/ + position: relative; + * { + box-sizing: border-box; + } + .material-input { + font-size: $font-size-base; + padding: $spacer $spacer $spacer $spacer / 2; + display: block; + width: 100%; + border: none; + border-radius: 0; + &:focus { + outline: none; + border: none; + border-bottom: 1px solid transparent; // fixes the height issue + } + } + .material-label { + font-size: $font-size-base; + font-weight: $font-weight-normal; + position: absolute; + pointer-events: none; + left: 0; + top: $spacer; + transition: $transition; + } + .material-input-bar { + position: relative; + display: block; + width: 100%; + &:before { + @extend %base-bar-pseudo; + left: 50%; + } + &:after { + @extend %base-bar-pseudo; + right: 50%; + } + } + // Disabled state: + &.material--disabled { + .material-input { + border-bottom-style: dashed; + } + } + // Raised state: + &.material--raised { + .material-label { + @include slided-top(); + } + } + // Active state: + &.material--active { + .material-input-bar { + &:before, + &:after { + width: 50%; + } + } + } + // Errors: + .material-errors { + position: relative; + overflow: hidden; + .material-error { + font-size: $font-size-smallest; + line-height: $font-size-smallest + 2px; + overflow: hidden; + margin-top: 0; + padding-top: $spacer / 2; + padding-right: $spacer / 2; + padding-left: 0; + } + } + } + + // Theme: + $color-white: white; + $color-grey: #9E9E9E; + $color-grey-light: #E0E0E0; + $color-blue: #2196F3; + $color-red: #F44336; + $color-black: black; + .material-input__component { + background: $color-white; + .material-input { + background: none; + color: $color-black; + text-indent: 30px; + border-bottom: 1px solid $color-grey-light; + } + .material-label { + color: $color-grey; + } + .material-input-bar { + &:before, + &:after { + background: $color-blue; + } + } + // Active state: + &.material--active { + .material-label { + color: $color-blue; + } + } + // Errors: + &.material--has-errors { + // These styles are required + // for custom validation: + &.material--active .material-label { + color: $color-red; + } + .material-input-bar { + &:before, + &:after { + background: $color-red; + } + } + .material-errors { + color: $color-red; + } + } + } +</style> diff --git a/src/components/MdEditor/index.vue b/src/components/MdEditor/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..493f8b5ef614b30d0a19cd56ee360ff9704f833b --- /dev/null +++ b/src/components/MdEditor/index.vue @@ -0,0 +1,108 @@ +<template> + <div class='simplemde-container'> + <textarea :id='id'> + </textarea> + </div> +</template> + +<script> +import 'simplemde/dist/simplemde.min.css' +import SimpleMDE from 'simplemde' +export default { + name: 'Sticky', + props: { + value: String, + id: { + type: String, + default: 'markdown-editor' + }, + autofocus: { + type: Boolean, + default: false + }, + placeholder: { + type: String, + default: '' + }, + toolbar: { + type: Array + // default() { + // return ['bold', '|', 'link'] + // } + } + }, + data() { + return { + simplemde: null, + hasChange: false + }; + }, + watch: { + value(val) { + if (val === this.simplemde.value() && !this.hasChange) return; + this.simplemde.value(val); + } + }, + mounted() { + this.simplemde = new SimpleMDE({ + element: document.getElementById(this.id), + autofocus: this.autofocus, + toolbar: this.toolbar, + spellChecker: false, + insertTexts: { + link: ['[', ']( )'] + }, + // hideIcons: ['guide', 'heading', 'quote', 'image', 'preview', 'side-by-side', 'fullscreen'], + placeholder: this.placeholder + }); + if (this.value) { + this.simplemde.value(this.value); + } + + this.simplemde.codemirror.on('change', () => { + if (this.hasChange) { + this.hasChange = true + } + this.$emit('input', this.simplemde.value()); + }); + }, + destroyed() { + this.simplemde = null; + } +}; +</script> + +<style> + .simplemde-container .CodeMirror { + height: 150px; + min-height: 150px; + } + .simplemde-container .CodeMirror-scroll{ + min-height: 150px; + } + + .simplemde-container .CodeMirror-code{ + padding-bottom: 40px; + } + .simplemde-container .editor-statusbar { + display: none; + } + + .simplemde-container .CodeMirror .CodeMirror-code .cm-link { + color: #1482F0; + } + + .simplemde-container .CodeMirror .CodeMirror-code .cm-string.cm-url { + color: #2d3b4d; + font-weight: bold; + } + + .simplemde-container .CodeMirror .CodeMirror-code .cm-formatting-link-string.cm-url { + padding: 0 2px; + font-weight: bold; + color: #E61E1E; + } + +</style> + + diff --git a/src/components/PanThumb/index.vue b/src/components/PanThumb/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..69a832be0051d63c1016c78ffa1030f1940b5ee3 --- /dev/null +++ b/src/components/PanThumb/index.vue @@ -0,0 +1,145 @@ +<template> + <div class="pan-item" :style="{zIndex:zIndex,height:height,width:width}"> + <div class="pan-info"> + <div class="pan-info-roles-container"> + <slot>pan</slot> + </div> + </div> + <div class="pan-thumb" :style="{ backgroundImage: 'url('+ image+')' }"></div> + </div> +</template> +<script> + export default { + name: 'PanThumb', + props: { + image: { + type: String, + required: true + }, + zIndex: { + type: Number, + default: 100 + }, + width: { + type: String, + default: '150px' + }, + height: { + type: String, + default: '150px' + } + }, + data() { + return {}; + } + }; +</script> + +<style scoped> + .pan-item { + width: 200px; + height: 200px; + border-radius: 50%; + display: inline-block; + position: relative; + cursor: default; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + } + + .pan-info-roles-container { + padding: 20px; + text-align: center; + } + + .pan-thumb { + width: 100%; + height: 100%; + background-size: 100%; + border-radius: 50%; + overflow: hidden; + position: absolute; + transform-origin: 95% 40%; + transition: all 0.3s ease-in-out; + } + + .pan-thumb:after { + content: ''; + width: 8px; + height: 8px; + position: absolute; + border-radius: 50%; + top: 40%; + left: 95%; + margin: -4px 0 0 -4px; + background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%); + box-shadow: 0 0 1px rgba(255, 255, 255, 0.9); + } + + .pan-info { + position: absolute; + width: inherit; + height: inherit; + border-radius: 50%; + overflow: hidden; + box-shadow: inset 0 0 0 5px rgba(0, 0, 0, 0.05); + } + + .pan-info h3 { + color: #fff; + text-transform: uppercase; + position: relative; + letter-spacing: 2px; + font-size: 18px; + margin: 0 60px; + padding: 22px 0 0 0; + height: 85px; + font-family: 'Open Sans', Arial, sans-serif; + text-shadow: 0 0 1px #fff, + 0 1px 2px rgba(0, 0, 0, 0.3); + } + + .pan-info p { + color: #fff; + padding: 10px 5px; + font-style: italic; + margin: 0 30px; + font-size: 12px; + border-top: 1px solid rgba(255, 255, 255, 0.5); + } + + .pan-info p a { + display: block; + color: #333; + width: 80px; + height: 80px; + background: rgba(255, 255, 255, 0.3); + border-radius: 50%; + color: #fff; + font-style: normal; + font-weight: 700; + text-transform: uppercase; + font-size: 9px; + letter-spacing: 1px; + padding-top: 24px; + margin: 7px auto 0; + font-family: 'Open Sans', Arial, sans-serif; + opacity: 0; + transition: transform 0.3s ease-in-out 0.2s, + opacity 0.3s ease-in-out 0.2s, + background 0.2s linear 0s; + transform: translateX(60px) rotate(90deg); + } + + .pan-info p a:hover { + background: rgba(255, 255, 255, 0.5); + } + + .pan-item:hover .pan-thumb { + transform: rotate(-110deg); + } + + .pan-item:hover .pan-info p a { + opacity: 1; + transform: translateX(0px) rotate(0deg); + } +</style> diff --git a/src/components/SplitPane/Pane.vue b/src/components/SplitPane/Pane.vue new file mode 100644 index 0000000000000000000000000000000000000000..3e66659b2ca58c3bc28a9a0828dd95415ba082d4 --- /dev/null +++ b/src/components/SplitPane/Pane.vue @@ -0,0 +1,61 @@ +<template> + <div :class="classes"> + <slot></slot> + </div> +</template> + +<script> + export default { + name: 'Pane', + props: { +// split: { +// validator: function (value) { +// return ['vertical', 'horizontal'].indexOf(value) >= 0 +// }, +// required: true +// } + }, +// computed:{ +// classes () { +// return this.$parent.split +// }, +// }, + data() { + const classes = ['Pane', this.$parent.split, 'className']; + return { + classes: classes.join(' '), + percent: 50 + } + }, + created() { +// console.log(this.$parent.split) + }, + + methods: { + + } + } +</script> + +<style> + .splitter-pane.vertical.splitter-paneL{ + position: absolute; + left: 0px; + height: 100%; + } + .splitter-pane.vertical.splitter-paneR{ + position: absolute; + right: 0px; + height: 100%; + } + .splitter-pane.horizontal.splitter-paneL{ + position: absolute; + top: 0px; + width: 100%; + } + .splitter-pane.horizontal.splitter-paneR{ + position: absolute; + bottom: 0px; + width: 100%; + } +</style> diff --git a/src/components/SplitPane/Resizer.vue b/src/components/SplitPane/Resizer.vue new file mode 100644 index 0000000000000000000000000000000000000000..b3bdba0400883ca6f38f923678e17ac187472775 --- /dev/null +++ b/src/components/SplitPane/Resizer.vue @@ -0,0 +1,75 @@ +<template> + <div :class="classes" @mousedown="onMouseDown"></div> +</template> +<style scoped> + .Resizer { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #000; + position: absolute; + opacity: .2; + z-index: 1; + /*-moz-background-clip: padding;*/ + /*-webkit-background-clip: padding;*/ + /*background-clip: padding-box;*/ + } + + /*.Resizer:hover {*/ + /*-webkit-transition: all 2s ease;*/ + /*transition: all 2s ease;*/ + /*}*/ + + .Resizer.horizontal { + height: 11px; + margin: -5px 0; + border-top: 5px solid rgba(255, 255, 255, 0); + border-bottom: 5px solid rgba(255, 255, 255, 0); + cursor: row-resize; + width: 100%; + } + + .Resizer.horizontal:hover { + border-top: 5px solid rgba(0, 0, 0, 0.5); + border-bottom: 5px solid rgba(0, 0, 0, 0.5); + } + + .Resizer.vertical { + width: 11px; + height: 100%; + /*margin: 0 -5px;*/ + + border-left: 5px solid rgba(255, 255, 255, 0); + border-right: 5px solid rgba(255, 255, 255, 0); + cursor: col-resize; + } + + .Resizer.vertical:hover { + border-left: 5px solid rgba(0, 0, 0, 0.5); + border-right: 5px solid rgba(0, 0, 0, 0.5); + } +</style> +<script> + export default { + props: { + split: { + validator(value) { + return ['vertical', 'horizontal'].indexOf(value) >= 0 + }, + required: true + }, + onMouseDown: { + type: Function, + required: true + } + }, + data() { + const classes = ['Resizer', this.split, 'className']; + return { + classes: classes.join(' ') + } + }, + + methods: {} + } +</script> diff --git a/src/components/SplitPane/SplitPane-backup.vue b/src/components/SplitPane/SplitPane-backup.vue new file mode 100644 index 0000000000000000000000000000000000000000..8a4884d0d064df644f8fb3ff9e968afd8e072ec1 --- /dev/null +++ b/src/components/SplitPane/SplitPane-backup.vue @@ -0,0 +1,175 @@ +<!--<template>--> +<!--<div :style="{ cursor, userSelect }" class="vue-splitter-container clearfix" @mouseup="onMouseUp"--> +<!--@mousemove="onMouseMove">--> + +<!--<Pane split="vertical" :style="{ width: percent+'%' }" class="left-container splitter-pane">--> +<!--orange--> +<!--</Pane>--> + +<!--<Resizer split="vertical" :onMouseDown="onMouseDown" @click="onClick"></Resizer>--> +<!--<div class="todel" :style="{ width: 100-percent+'%'}">--> +<!--<Pane split="horizontal" class="top-container">--> +<!--<div slot>apple banana</div>--> +<!--</Pane>--> +<!--<Resizer split="horizontal" :onMouseDown="onMouseDown" @click="onClick"></Resizer>--> +<!--<Pane split="horizontal" class="bottom-container">--> +<!--<div slot>apple banana</div>--> +<!--</Pane>--> +<!--</div>--> + +<!--</div>--> + +<!--</template>--> +<style scoped> + .clearfix:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } + .vue-splitter-container { + height: inherit; + display: flex; + } +</style> + +<script> + /* eslint-disable */ + import Resizer from './Resizer'; + import vue from 'vue' + export default { + name: 'splitPane', + components: {Resizer}, + props: { + margin: { + type: Number, + default: 10 + } + }, + data () { + return { + active: false, + percent: 50, + hasMoved: false, + panes: [] + } + }, + props: { + split: { + validator: function (value) { + return ['vertical', 'horizontal'].indexOf(value) >= 0 + }, + required: true + } + }, + computed: { + userSelect () { + return this.active ? 'none' : '' + }, + cursor () { + return this.active ? 'col-resize' : '' + }, +// $paneItems () { +// return this.$children.filter(child => { +// console.log(child) +// }) +// } + }, + render(h){ + const temp = []; + this.$slots.default.map((item, i) => { + if (item.tag && item.tag.toUpperCase().indexOf('PANE') >= 0) { + temp.push(item) + } + }); + const newSlots = []; + const length = temp.length; + temp.map((item, index)=> { + newSlots.push(item) + if (index != length - 1) { + newSlots.push( + h('Resizer', { + props: { + split: this.split, + onMouseDown: this.onMouseDown + } + }) + ) + } + }) + return h('div', { + on: { + mousemove: this.onMouseMove + } + }, [ + h('div', { + 'class': { + 'vue-splitter-container': true + }, + }, newSlots) + ]) + }, +// beforeMount(){ +// this.$slots.default=this.$slots.default.map((item, i) => { +// if (item.tag&&item.tag.toUpperCase().indexOf('PANE') >= 0) { +// return item +// }else{ +// return null +// } +// }) +// +// }, + created(){ + + }, + mounted(){ + + }, + methods: { + onClick () { + if (!this.hasMoved) { + this.percent = 50; + this.$emit('resize'); + } + }, + onMouseDown () { + this.active = true; + this.hasMoved = false; + }, + onMouseUp () { + this.active = false; + }, + onMouseMove (e) { + if (e.buttons === 0 || e.which === 0) { + this.active = false; + } + if (this.active) { + + let offset = 0; + let target = e.currentTarget; + while (target) { + offset += target.offsetLeft; + target = target.offsetParent; + } + const percent = Math.floor(((e.pageX - offset) / e.currentTarget.offsetWidth) * 10000) / 100; + if (percent > this.margin && percent < 100 - this.margin) { + this.percent = percent; + } + console.log(percent) + this.$children.map((v, i)=> { + if (i == 0) { + v.percent = percent + } else { + v.percent = 100 - percent + } + + }) + this.$emit('resize'); + this.hasMoved = true; + } + } + } + } +</script> diff --git a/src/components/SplitPane/SplitPane.vue b/src/components/SplitPane/SplitPane.vue new file mode 100644 index 0000000000000000000000000000000000000000..df73ed8821a66f7c533e1815fbb55cbc384c303e --- /dev/null +++ b/src/components/SplitPane/SplitPane.vue @@ -0,0 +1,117 @@ +<template> + <div ref :style="{ cursor, userSelect}" class="vue-splitter-container clearfix" @mouseup="onMouseUp" + @mousemove="onMouseMove"> + <Pane class="splitter-pane splitter-paneL" :split="split" :style="{ [type]: percent+'%'}"> + <slot name="paneL"></slot> + </Pane> + <Resizer :style="{ [resizeType]: percent+'%'}" :split="split" :onMouseDown="onMouseDown" + @click="onClick"></Resizer> + <Pane class="splitter-pane splitter-paneR" :split="split" :style="{ [type]: 100-percent+'%'}"> + <slot name="paneR"></slot> + </Pane> + </div> +</template> +<style scoped> + .clearfix:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } + .vue-splitter-container { + height: 100%; + /*display: flex;*/ + position: relative; + } +</style> + +<script> + import Resizer from './Resizer'; + import Pane from './Pane'; + export default { + name: 'splitPane', + components: { Resizer, Pane }, + props: { + margin: { + type: Number, + default: 10 + }, + split: { + validator(value) { + return ['vertical', 'horizontal'].indexOf(value) >= 0 + }, + required: true + } + }, + data() { + return { + active: false, + hasMoved: false, + height: null, + percent: 50, + type: this.split === 'vertical' ? 'width' : 'height', + resizeType: this.split === 'vertical' ? 'left' : 'top' + } + }, + computed: { + userSelect() { + return this.active ? 'none' : '' + }, + cursor() { + return this.active ? 'col-resize' : '' + } + }, + mounted() { + const element = this.$el; + const elementOffset = element.getBoundingClientRect(); + console.log(elementOffset.height) +// this.height = elementOffset.height+'px'; + }, + methods: { + onClick() { + if (!this.hasMoved) { + this.percent = 50; + this.$emit('resize'); + } + }, + onMouseDown() { + this.active = true; + this.hasMoved = false; + }, + onMouseUp() { + this.active = false; + }, + onMouseMove(e) { + if (e.buttons === 0 || e.which === 0) { + this.active = false; + } + if (this.active) { + let offset = 0; + let target = e.currentTarget; + if (this.split === 'vertical') { + while (target) { + offset += target.offsetLeft; + target = target.offsetParent; + } + } else { + while (target) { + offset += target.offsetTop; + target = target.offsetParent; + } + } + + const currentPage = this.split === 'vertical' ? e.pageX : e.pageY; + const targetOffset = this.split === 'vertical' ? e.currentTarget.offsetWidth : e.currentTarget.offsetHeight; + const percent = Math.floor(((currentPage - offset) / targetOffset) * 10000) / 100; + if (percent > this.margin && percent < 100 - this.margin) { + this.percent = percent; + } + this.$emit('resize'); + this.hasMoved = true; + } + } + } + } +</script> diff --git a/src/components/SplitPane/index.js b/src/components/SplitPane/index.js new file mode 100644 index 0000000000000000000000000000000000000000..8e42e2bfd41a69c30854e395a820de7dae553e67 --- /dev/null +++ b/src/components/SplitPane/index.js @@ -0,0 +1,7 @@ +import SplitPane from './a.vue'; +import Pane from './Pane.vue'; + +export { + SplitPane, + Pane +} diff --git a/src/components/Sticky/index.vue b/src/components/Sticky/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..a5bf2d5ad22c5f7ca8af5106b1ecfdf98c6c1e2a --- /dev/null +++ b/src/components/Sticky/index.vue @@ -0,0 +1,73 @@ +<template> + <div :style="{height:height+'px',zIndex:zIndex}"> + <div :class="className" :style="{top:stickyTop+'px',zIndex:zIndex,position:position,width:width,height:height+'px'}"> + <slot> + <div>sticky</div> + </slot> + </div> + </div> +</template> +<script> + export default { + name: 'Sticky', + props: { + stickyTop: { + type: Number, + default: 0 + }, + zIndex: { + type: Number, + default: 1000 + }, + className: { + type: String + } + }, + data() { + return { + active: false, + position: '', + currentTop: '', + width: undefined, + height: undefined, + child: null, + stickyHeight: 0 + + }; + }, + methods: { + sticky() { + if (this.active) { + return + } + this.position = 'fixed'; + this.active = true; + this.width = this.width + 'px'; + }, + reset() { + if (!this.active) { + return + } + this.position = ''; + this.width = 'auto' + this.active = false + }, + handleScroll() { + this.width = this.$el.getBoundingClientRect().width; + const offsetTop = this.$el.getBoundingClientRect().top; + if (offsetTop <= this.stickyTop) { + this.sticky(); + return + } + this.reset() + } + }, + mounted() { + this.height = this.$el.getBoundingClientRect().height; + window.addEventListener('scroll', this.handleScroll); + }, + destroyed() { + window.removeEventListener('scroll', this.handleScroll); + } + }; +</script> diff --git a/src/components/Tinymce/components/editorAudio.vue b/src/components/Tinymce/components/editorAudio.vue new file mode 100644 index 0000000000000000000000000000000000000000..9e0799b167db7d13424cda8d83f2f206a519698d --- /dev/null +++ b/src/components/Tinymce/components/editorAudio.vue @@ -0,0 +1,119 @@ +<template> + <div class="upload-container"> + <el-button :style="{background:color,borderColor:color}" @click=" dialogVisible=true" type="primary">ä¸Šä¼ éŸ³é¢‘ + </el-button> + <el-dialog v-model="dialogVisible"> + <el-form ref="form" :model="form" :rules="rules" label-width="100px" label-position="right"> + <el-upload + class="editor-audio-upload" + action="https://upload.qbox.me" + :data="dataObj" + :show-file-list="true" + :file-list="audioList" + :on-success="handleAudioScucess" + :on-change="handleAudioChange" + :before-upload="audioBeforeUpload"> + <el-button size="small" type="primary">ä¸Šä¼ éŸ³é¢‘</el-button> + </el-upload> + <el-form-item prop="url" label="音频URL"> + <el-input v-model="form.url"></el-input> + </el-form-item> + <el-form-item prop="title" label="éŸ³é¢‘æ ‡é¢˜"> + <el-input v-model="form.title"></el-input> + </el-form-item> + <el-form-item label="音频文本"> + <el-input type="textarea" :autosize="{ minRows: 2}" v-model="form.text"></el-input> + </el-form-item> + </el-form> + <el-button @click="dialogVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="handleSubmit">ç¡® 定</el-button> + + </el-dialog> + </div> +</template> +<script> + import { getToken } from 'api/qiniu'; + + export default { + name: 'editorAudioUpload', + props: { + color: { + type: String, + default: '#20a0ff' + } + }, + data() { + return { + dialogVisible: false, + dataObj: { token: '', key: '' }, + audioList: [], + tempAudioUrl: '', + form: { + title: '', + url: '', + text: '' + }, + rules: { + title: [ + { required: true, trigger: 'blur' } + ], + url: [ + { required: true, trigger: 'blur' } + ] + } + }; + }, + methods: { + handleSubmit() { + this.$refs.form.validate(valid => { + if (valid) { + this.$emit('successCBK', this.form); + this.dialogVisible = false; + this.form = { + title: '', + url: '', + text: '' + } + } else { + this.$message('填写有误'); + return false; + } + }); + }, + handleAudioChange(file, fileList) { + this.audioList = fileList.slice(-1); + }, + handleAudioScucess() { + this.form.url = this.tempAudioUrl + }, + audioBeforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.tempAudioUrl = response.data.qiniu_url; + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .upload-container { + .editor-audio-upload { + button { + float: left; + margin-left: 30px; + margin-bottom: 20px; + } + } + } +</style> diff --git a/src/components/Tinymce/components/editorImage.vue b/src/components/Tinymce/components/editorImage.vue new file mode 100644 index 0000000000000000000000000000000000000000..f9eef65464ea3c4c1bce3791da3987c87494729d --- /dev/null +++ b/src/components/Tinymce/components/editorImage.vue @@ -0,0 +1,85 @@ +<template> + <div class="upload-container"> + <el-button icon='upload' :style="{background:color,borderColor:color}" @click=" dialogVisible=true" type="primary">ä¸Šä¼ å›¾ç‰‡ + </el-button> + <el-dialog v-model="dialogVisible"> + <el-upload + class="editor-slide-upload" + action="https://upload.qbox.me" + :data="dataObj" + :multiple="true" + :file-list="fileList" + :show-file-list="true" + list-type="picture-card" + :on-remove="handleRemove" + :before-upload="beforeUpload"> + <el-button size="small" type="primary">ç‚¹å‡»ä¸Šä¼ </el-button> + </el-upload> + <el-button @click="dialogVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="handleSubmit">ç¡® 定</el-button> + </el-dialog> + </div> +</template> +<script> + import { getToken } from 'api/qiniu'; + + export default { + name: 'editorSlideUpload', + props: { + color: { + type: String, + default: '#20a0ff' + } + }, + data() { + return { + dialogVisible: false, + dataObj: { token: '', key: '' }, + list: [], + fileList: [] + }; + }, + methods: { + handleSubmit() { + const arr = this.list.map(v => v.url); + this.$emit('successCBK', arr); + this.list = []; + this.fileList = []; + this.dialogVisible = false; + }, + handleRemove(file) { + const key = file.response.key; + for (let i = 0, len = this.list.length; i < len; i++) { + if (this.list[i].key === key) { + this.list.splice(i, 1); + return + } + } + }, + beforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.list.push({ key, url: response.data.qiniu_url }); + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .upload-container { + .editor-slide-upload { + margin-bottom: 20px; + } + } +</style> diff --git a/src/components/Tinymce/components/editorSlide.vue b/src/components/Tinymce/components/editorSlide.vue new file mode 100644 index 0000000000000000000000000000000000000000..a528cae302d24df5d753ee6ef2103e36e52a54e5 --- /dev/null +++ b/src/components/Tinymce/components/editorSlide.vue @@ -0,0 +1,82 @@ +<template> + <div class="upload-container"> + <el-button :style="{background:color,borderColor:color}" @click=" dialogVisible=true" type="primary">ä¸Šä¼ è½®æ’图 + </el-button> + <el-dialog v-model="dialogVisible"> + <el-upload + class="editor-slide-upload" + action="https://upload.qbox.me" + :data="dataObj" + :multiple="true" + :show-file-list="true" + list-type="picture-card" + :on-remove="handleRemove" + :before-upload="beforeUpload"> + <el-button size="small" type="primary">ç‚¹å‡»ä¸Šä¼ </el-button> + </el-upload> + <el-button @click="dialogVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="handleSubmit">ç¡® 定</el-button> + </el-dialog> + </div> +</template> +<script> + import { getToken } from 'api/qiniu'; + + export default { + name: 'editorSlideUpload', + props: { + color: { + type: String, + default: '#20a0ff' + } + }, + data() { + return { + dialogVisible: false, + dataObj: { token: '', key: '' }, + list: [] + }; + }, + methods: { + handleSubmit() { + const arr = this.list.map(v => v.url); + this.$emit('successCBK', arr); + this.list = []; + this.dialogVisible = false; + }, + handleRemove(file) { + const key = file.response.key; + for (let i = 0, len = this.list.length; i < len; i++) { + if (this.list[i].key === key) { + this.list.splice(i, 1); + return + } + } + }, + beforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.list.push({ key, url: response.data.qiniu_url }); + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .upload-container { + .editor-slide-upload { + margin-bottom: 20px; + } + } +</style> diff --git a/src/components/Tinymce/components/editorVideo.vue b/src/components/Tinymce/components/editorVideo.vue new file mode 100644 index 0000000000000000000000000000000000000000..544f8fce22f7d01927ef7e2fffef446341d87636 --- /dev/null +++ b/src/components/Tinymce/components/editorVideo.vue @@ -0,0 +1,167 @@ +<template> + <div class="upload-container"> + <el-button :style="{background:color,borderColor:color}" @click=" dialogVisible=true" type="primary">ä¸Šä¼ è§†é¢‘</el-button> + <el-dialog v-model="dialogVisible"> + <el-form ref="form" :model="form" :rules="rules" label-width="140px" label-position="left"> + <el-upload + class="editor-video-upload" + action="https://upload.qbox.me" + :data="dataObj" + :show-file-list="true" + :file-list="videoList" + :on-success="handleVideoScucess" + :on-change="handleVideoChange" + :before-upload="videoBeforeUpload"> + <el-button size="small" type="primary">ä¸Šä¼ è§†é¢‘</el-button> + </el-upload> + <el-form-item prop="url" label="视频URL"> + <el-input v-model="form.url"></el-input> + </el-form-item> + <el-form-item prop="title" label="è§†é¢‘æ ‡é¢˜"> + <el-input v-model="form.title"></el-input> + </el-form-item> + <el-form-item label="ä¸Šä¼ è§†é¢‘å°é¢å›¾"> + </el-form-item> + <el-upload + class="image-uploader" + action="https://upload.qbox.me" + :show-file-list="false" + :data="dataObj" + :on-success="handleImageScucess" + :before-upload="beforeImageUpload"> + <img v-if="form.image" :src="form.image" class="image-uploader-image"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + </el-form> + <el-button @click="dialogVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="handleSubmit">ç¡® 定</el-button> + + </el-dialog> + </div> +</template> +<script> + import { getToken } from 'api/qiniu'; + + export default { + name: 'editorVideoUpload', + props: { + color: { + type: String, + default: '#20a0ff' + } + }, + data() { + return { + dialogVisible: false, + dataObj: { token: '', key: '' }, + videoList: [], + tempVideoUrl: '', + tempImageUrl: '', + form: { + title: '', + url: '', + image: '' + }, + rules: { + url: [ + { required: true, trigger: 'blur' } + ], + title: [ + { required: true, trigger: 'blur' } + ] + } + }; + }, + methods: { + handleSubmit() { + this.$refs.form.validate(valid => { + if (valid) { + if (this.form.image.length > 0) { + this.$emit('successCBK', this.form); + this.dialogVisible = false; + this.form = { + title: '', + url: '', + image: '' + } + } else { + this.$message('è¯·ä¸Šä¼ å›¾ç‰‡'); + } + } else { + this.$message('填写有误'); + return false; + } + }); + }, + handleVideoChange(file, fileList) { + this.videoList = fileList.slice(-1); + }, + handleVideoScucess() { + this.form.url = this.tempVideoUrl + }, + videoBeforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.tempVideoUrl = response.data.qiniu_url; + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + }, + handleImageScucess() { + this.form.image = this.tempImageUrl + }, + beforeImageUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.tempImageUrl = response.data.qiniu_url; + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .upload-container { + .editor-video-upload { + button { + float: left; + } + } + .image-uploader { + margin: 5px auto; + width: 400px; + height: 200px; + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + overflow: hidden; + line-height: 200px; + i { + font-size: 28px; + color: #8c939d; + } + .image-uploader-image { + height: 200px; + } + } + } +</style> diff --git a/src/components/Tinymce/index.vue b/src/components/Tinymce/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..3be1ea7dc7143903f7ec5a0a8aa1f2dd5a7d0912 --- /dev/null +++ b/src/components/Tinymce/index.vue @@ -0,0 +1,251 @@ +<template> + <div class='tinymce-container editor-container'> + <textarea class='tinymce-textarea' :id="id"></textarea> + <div class="editor-custom-btn-container"> + <editorSlide v-if="customButton.indexOf('editorSlide')>=0" color="#3A71A8" class="editor-upload-btn" @successCBK="slideSuccessCBK"></editorSlide> + <editorAudio v-if="customButton.indexOf('editorAudio')>=0" color="#30B08F" class="editor-upload-btn" @successCBK="aduioSuccessCBK"></editorAudio> + <editorVideo v-if="customButton.indexOf('editorVideo')>=0" color="#E65D6E" class="editor-upload-btn" @successCBK="videoSuccessCBK"></editorVideo> + <editorImage v-if="customButton.indexOf('editorImage')>=0" color="#20a0ff" class="editor-upload-btn" @successCBK="imageSuccessCBK"></editorImage> + </div> + </div> +</template> + +<script> + import editorAudio from './components/editorAudio'; + import editorVideo from './components/editorVideo'; + import editorSlide from './components/editorSlide'; + import editorImage from './components/editorImage'; + import { getToken, upload } from 'api/qiniu'; + export default { + name: 'tinymce', + components: { editorImage, editorAudio, editorSlide, editorVideo }, + props: { + id: { + type: String, + default: 'tinymceEditor' + }, + value: { + type: String, + default: '' + }, + customButton: { + type: Array, + required: false, + default() { + return ['editorAudio', 'editorImage'] + } + }, + toolbar: { + type: Array, + required: false, + default() { + return ['removeformat undo redo | bullist numlist | outdent indent | forecolor | fullscreen code', 'bold italic blockquote | h2 p media link | alignleft aligncenter alignright'] + } + }, + data() { + return { + hasChange: false, + hasInit: false + } + }, + menubar: { + default: '' + }, + height: { + type: Number, + required: false, + default: 360 + } + }, + watch: { + value(val) { + if (!this.hasChange && this.hasInit) { + this.$nextTick(() => tinymce.get(this.id).setContent(val)) + } + } + }, + mounted() { + const _this = this; + tinymce.init({ + selector: `#${this.id}`, + height: this.height, + body_class: 'panel-body ', + object_resizing: false, + // language: 'zh_CN', + // language_url: '/static/tinymce/langs/zh_CN.js', + toolbar: this.toolbar, + menubar: this.menubar, + plugins: 'advlist,autolink,code,powerpaste,textcolor, colorpicker,fullscreen,link,lists,media,wordcount, imagetools,watermark', + end_container_on_empty_block: true, + powerpaste_word_import: 'clean', + code_dialog_height: 450, + code_dialog_width: 1000, + advlist_bullet_styles: 'square', + advlist_number_styles: 'default', + block_formats: 'æ™®é€šæ ‡ç¾=p;å°æ ‡é¢˜=h2;', + imagetools_cors_hosts: ['wpimg.wallstcn.com', 'wallstreetcn.com'], + imagetools_toolbar: 'watermark', + default_link_target: '_blank', + link_title: false, + textcolor_map: [ + '1482f0', '1482f0', + '4595e6', '4595e6'], + init_instance_callback: editor => { + if (_this.value) { + editor.setContent(_this.value) + } + _this.hasInit = true; + editor.on('Change', () => { + this.hasChange = true; + this.$emit('input', editor.getContent({ format: 'raw' })); + }); + }, + images_dataimg_filter(img) { + setTimeout(() => { + const $image = $(img); + $image.removeAttr('width'); + $image.removeAttr('height'); + if ($image[0].height && $image[0].width) { + $image.attr('data-wscntype', 'image'); + $image.attr('data-wscnh', $image[0].height); + $image.attr('data-wscnw', $image[0].width); + $image.addClass('wscnph'); + } + }, 0); + return img + }, + images_upload_handler(blobInfo, success, failure, progress) { + progress(0); + const token = _this.$store.getters.token; + getToken(token).then(response => { + const url = response.data.qiniu_url; + const formData = new FormData(); + formData.append('token', response.data.qiniu_token); + formData.append('key', response.data.qiniu_key); + formData.append('file', blobInfo.blob(), url); + upload(formData).then(() => { + success(url); + progress(100); + // setTimeout(() => { + // const doc = tinymce.activeEditor.getDoc(); + // const $$ = tinymce.dom.DomQuery; + // const $image = $$(doc).find('img[src="' + url + '"]') + // $image.addClass('wscnph'); + // $image.attr('data-wscntype', 'image'); + // $image.attr('data-wscnh', $image[0].height || 640); + // $image.attr('data-wscnw', $image[0].width || 640); + // }, 0); + }) + }).catch(err => { + failure('出现未知问题,刷新页é¢ï¼Œæˆ–者è”系程åºå‘˜') + console.log(err); + }); + }, + setup(editor) { + editor.addButton('h2', { + title: 'å°æ ‡é¢˜', // tooltip text seen on mouseover + text: 'å°æ ‡é¢˜', + onclick() { + editor.execCommand('mceToggleFormat', false, 'h2'); + }, + onPostRender() { + const btn = this; + editor.on('init', () => { + editor.formatter.formatChanged('h2', state => { + btn.active(state); + }); + }); + } + }); + editor.addButton('p', { + title: 'æ£æ–‡', // tooltip text seen on mouseover + text: 'æ£æ–‡', + onclick() { + editor.execCommand('mceToggleFormat', false, 'p'); + }, + onPostRender() { + const btn = this; + editor.on('init', () => { + editor.formatter.formatChanged('p', state => { + btn.active(state); + }); + }); + } + }); + } + }); + }, + methods: { + imageSuccessCBK(arr) { + console.log(arr) + const _this = this; + arr.forEach(v => { + const node = document.createElement('img'); + node.setAttribute('src', v); + node.onload = function() { + $(this).addClass('wscnph'); + $(this).attr('data-wscntype', 'image'); + $(this).attr('data-wscnh', this.height); + $(this).attr('data-wscnw', this.width); + tinymce.get(_this.id).insertContent(node.outerHTML) + } + }) + }, + slideSuccessCBK(arr) { + const node = document.createElement('img'); + node.setAttribute('data-wscntype', 'slide'); + node.setAttribute('data-uri', arr.toString()); + node.setAttribute('data-wscnh', '190'); + node.setAttribute('data-wscnw', '200'); + node.setAttribute('src', ' https://wdl.wallstreetcn.com/6410b47d-a54c-4826-9bc1-c3e5df31280c'); + node.className = 'wscnph editor-placeholder'; + tinymce.get(this.id).insertContent(node.outerHTML) + }, + videoSuccessCBK(form) { + const node = document.createElement('img'); + node.setAttribute('data-wscntype', 'video'); + node.setAttribute('data-uri', form.url); + node.setAttribute('data-cover-img-uri', form.image); + node.setAttribute('data-title', form.title); + node.setAttribute('src', 'https://wdl.wallstreetcn.com/07aeb3e7-f4ca-4207-befb-c987b3dc7011'); + node.className = 'wscnph editor-placeholder'; + tinymce.get(this.id).insertContent(node.outerHTML) + }, + aduioSuccessCBK(form) { + const node = document.createElement('img'); + node.setAttribute('data-wscntype', 'audio'); + node.setAttribute('data-uri', form.url); + node.setAttribute('data-title', form.title); + node.setAttribute('data-text', form.text); + node.setAttribute('src', 'https://wdl.wallstreetcn.com/2ed0c8c8-fb82-499d-b81c-3fd1de114eae'); + node.className = 'wscnph editor-placeholder'; + tinymce.get(this.id).insertContent(node.outerHTML) + } + }, + destroyed() { + tinymce.get(this.id).destroy(); + } +} +</script> + +<style scoped> +.tinymce-container { + position: relative +} + +.tinymce-textarea { + visibility: hidden; + z-index: -1; +} + +.editor-custom-btn-container { + position: absolute; + right: 15px; + /*z-index: 2005;*/ + top: 18px; +} + +.editor-upload-btn { + display: inline-block; +} +</style> diff --git a/src/components/Upload/singleImage.vue b/src/components/Upload/singleImage.vue new file mode 100644 index 0000000000000000000000000000000000000000..0169b4f2a03c6c5e3a48c8ec868a2ced5fced759 --- /dev/null +++ b/src/components/Upload/singleImage.vue @@ -0,0 +1,128 @@ +<template> + <div class="upload-container"> + <el-upload + class="image-uploader" + :data="dataObj" + drag + :multiple="false" + :show-file-list="false" + action="https://upload.qbox.me" + :before-upload="beforeUpload" + :on-success="handleImageScucess"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">将文件拖到æ¤å¤„,或<em>ç‚¹å‡»ä¸Šä¼ </em></div> + </el-upload> + <div class="image-preview"> + <div class="image-preview-wrapper" v-show="imageUrl.length>1"> + <img :src="imageUrl+'?imageView2/1/w/200/h/200'"> + <div class="image-preview-action"> + <i @click="rmImage" class="el-icon-delete"></i> + </div> + </div> + </div> + </div> +</template> +<script> + // 预览效果è§ä»˜è´¹æ–‡ç« + import { getToken } from 'api/qiniu'; + export default { + name: 'singleImageUpload', + props: { + value: String + }, + computed: { + imageUrl() { + return this.value + } + }, + data() { + return { + tempUrl: '', + dataObj: { token: '', key: '' } + }; + }, + methods: { + rmImage() { + this.emitInput(''); + }, + emitInput(val) { + this.$emit('input', val); + }, + handleImageScucess() { + this.emitInput(this.tempUrl) + }, + beforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.tempUrl = response.data.qiniu_url; + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + @import "src/styles/mixin.scss"; + .upload-container { + width: 100%; + position: relative; + @include clearfix; + .image-uploader { + width: 60%; + float: left; + } + .image-preview { + width: 200px; + height: 200px; + position: relative; + border: 1px dashed #d9d9d9; + float: left; + margin-left: 50px; + .image-preview-wrapper { + position: relative; + width: 100%; + height: 100%; + img { + width: 100%; + height: 100%; + } + } + .image-preview-action { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + transition: opacity .3s; + cursor: pointer; + text-align: center; + line-height: 200px; + .el-icon-delete { + font-size: 36px; + } + } + &:hover { + .image-preview-action { + opacity: 1; + } + } + } + } + +</style> diff --git a/src/components/Upload/singleImage2.vue b/src/components/Upload/singleImage2.vue new file mode 100644 index 0000000000000000000000000000000000000000..3d3e11beb94ed0607043cb47b44b5eae1776cd56 --- /dev/null +++ b/src/components/Upload/singleImage2.vue @@ -0,0 +1,126 @@ +<template> + <div class="singleImageUpload2 upload-container"> + <el-upload + class="image-uploader" + :data="dataObj" + drag + :multiple="false" + :show-file-list="false" + action="https://upload.qbox.me" + :before-upload="beforeUpload" + :on-success="handleImageScucess"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">Drag或<em>ç‚¹å‡»ä¸Šä¼ </em></div> + </el-upload> + <div v-show="imageUrl.length>0" class="image-preview"> + <div class="image-preview-wrapper" v-show="imageUrl.length>1"> + <img :src="imageUrl"> + <div class="image-preview-action"> + <i @click="rmImage" class="el-icon-delete"></i> + </div> + </div> + </div> + </div> +</template> +<script> + // 预览效果è§ä¸“题 + import { getToken } from 'api/qiniu'; + export default { + name: 'singleImageUpload2', + props: { + value: String + }, + computed: { + imageUrl() { + return this.value + } + }, + data() { + return { + tempUrl: '', + dataObj: { token: '', key: '' } + }; + }, + methods: { + rmImage() { + this.emitInput(''); + }, + emitInput(val) { + this.$emit('input', val); + }, + handleImageScucess() { + this.emitInput(this.tempUrl) + }, + beforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.tempUrl = response.data.qiniu_url; + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .upload-container { + width: 100%; + height: 100%; + position: relative; + .image-uploader{ + height: 100%; + } + .image-preview { + width: 100%; + height: 100%; + position: absolute; + left: 0px; + top: 0px; + border: 1px dashed #d9d9d9; + .image-preview-wrapper { + position: relative; + width: 100%; + height: 100%; + img { + width: 100%; + height: 100%; + } + } + .image-preview-action { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + transition: opacity .3s; + cursor: pointer; + text-align: center; + line-height: 200px; + .el-icon-delete { + font-size: 36px; + } + } + &:hover { + .image-preview-action { + opacity: 1; + } + } + } + } + +</style> diff --git a/src/components/Upload/singleImage3.vue b/src/components/Upload/singleImage3.vue new file mode 100644 index 0000000000000000000000000000000000000000..7404accfb3a85c1705e13a6084071a9292a5f94d --- /dev/null +++ b/src/components/Upload/singleImage3.vue @@ -0,0 +1,154 @@ +<template> + <div class="upload-container"> + <el-upload + class="image-uploader" + :data="dataObj" + drag + :multiple="false" + :show-file-list="false" + action="https://upload.qbox.me" + :before-upload="beforeUpload" + :on-success="handleImageScucess"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">将文件拖到æ¤å¤„,或<em>ç‚¹å‡»ä¸Šä¼ </em></div> + </el-upload> + <div class="image-preview image-app-preview"> + <div class="image-preview-wrapper" v-show="imageUrl.length>1"> + <div class='app-fake-conver'>  å…¨çƒ ä»˜è´¹èŠ‚ç›®å• æœ€çƒ ç»æµŽ</div> + <img :src="imageUrl+'?imageView2/1/h/180/w/320/q/100'"> + <div class="image-preview-action"> + <i @click="rmImage" class="el-icon-delete"></i> + </div> + </div> + </div> + <div class="image-preview"> + <div class="image-preview-wrapper" v-show="imageUrl.length>1"> + <img :src="imageUrl+'?imageView2/1/w/200/h/200'"> + <div class="image-preview-action"> + <i @click="rmImage" class="el-icon-delete"></i> + </div> + </div> + </div> + </div> +</template> +<script> + // 预览效果è§æ–‡ç« + import { getToken } from 'api/qiniu'; + export default { + name: 'singleImageUpload', + props: { + value: String + }, + computed: { + imageUrl() { + return this.value + } + }, + data() { + return { + tempUrl: '', + dataObj: { token: '', key: '' } + }; + }, + methods: { + rmImage() { + this.emitInput(''); + }, + emitInput(val) { + this.$emit('input', val); + }, + handleImageScucess() { + this.emitInput(this.tempUrl) + }, + beforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken().then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + this.tempUrl = response.data.qiniu_url; + resolve(true); + }).catch(err => { + console.log(err); + reject(false) + }); + }); + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + @import "src/styles/mixin.scss"; + .upload-container { + width: 100%; + position: relative; + @include clearfix; + .image-uploader { + width: 35%; + float: left; + } + .image-preview { + width: 200px; + height: 200px; + position: relative; + border: 1px dashed #d9d9d9; + float: left; + margin-left: 50px; + .image-preview-wrapper { + position: relative; + width: 100%; + height: 100%; + img { + width: 100%; + height: 100%; + } + } + .image-preview-action { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + transition: opacity .3s; + cursor: pointer; + text-align: center; + line-height: 200px; + .el-icon-delete { + font-size: 36px; + } + } + &:hover { + .image-preview-action { + opacity: 1; + } + } + } + .image-app-preview{ + width: 320px; + height: 180px; + position: relative; + border: 1px dashed #d9d9d9; + float: left; + margin-left: 50px; + .app-fake-conver{ + height: 44px; + position: absolute; + width: 100%; + // background: rgba(0, 0, 0, .1); + text-align: center; + line-height: 64px; + color: #fff; + + } + } + } +</style> diff --git a/src/components/jsonEditor/index.vue b/src/components/jsonEditor/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..c49d482f0179938a580d504a390c256344b063fe --- /dev/null +++ b/src/components/jsonEditor/index.vue @@ -0,0 +1,64 @@ +<template> + <div class='json-editor'> + <textarea ref='textarea'></textarea> + </div> +</template> + + +<script> + import CodeMirror from 'codemirror'; + import 'codemirror/addon/lint/lint.css'; + import 'codemirror/lib/codemirror.css'; + import 'codemirror/theme/rubyblue.css'; + require('script-loader!jsonlint'); + import 'codemirror/mode/javascript/javascript' + import 'codemirror/addon/lint/lint' + import 'codemirror/addon/lint/json-lint'; + + export default { + name: 'jsonEditor', + data() { + return { + jsonEditor: false + } + }, + props: ['value'], + watch: { + value(value) { + const editor_value = this.jsonEditor.getValue(); + if (value !== editor_value) { + this.jsonEditor.setValue(JSON.stringify(this.value, null, 2)); + } + } + }, + mounted() { + this.jsonEditor = CodeMirror.fromTextArea(this.$refs.textarea, { + lineNumbers: true, + mode: 'application/json', + gutters: ['CodeMirror-lint-markers'], + theme: 'rubyblue', + lint: true + }); + + this.jsonEditor.setValue(JSON.stringify(this.value, null, 2)); + this.jsonEditor.on('change', cm => { + this.$emit('changed', cm.getValue()) + this.$emit('input', cm.getValue()) + }) + }, + methods: { + getValue() { + return this.jsonEditor.getValue() + } + } + } +</script> + +<style> + .CodeMirror { + height: 100%; + } + .json-editor .cm-s-rubyblue span.cm-string{ + color: #F08047; + } +</style> diff --git a/src/components/twoDndList/index.vue b/src/components/twoDndList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..6a24f6e9b633d5faf8e3ead2d7d0a7b106e3fb0a --- /dev/null +++ b/src/components/twoDndList/index.vue @@ -0,0 +1,157 @@ +<template> + <div class="twoDndList"> + <div class="twoDndList-list" :style="{width:width1}"> + <h3>{{list1Title}}</h3> + <draggable :list="list1" class="dragArea" :options="{group:'article'}"> + <div class="list-complete-item" v-for="element in list1"> + <div class="list-complete-item-handle">[{{element.id}}] {{element.title}}</div> + <div style="position:absolute;right:0px;"> + <a style="float: left ;margin-top: -20px;margin-right:5px;" :href="'/article/edit/'+element.id" target="_blank"><i style="color:#20a0ff" class="el-icon-information"></i></a> + <span style="float: right ;margin-top: -20px;margin-right:5px;" @click="deleteEle(element)"> + <i style="color:#ff4949" class="el-icon-delete"></i> + </span> + </div> + </div> + </draggable> + </div> + + <div class="twoDndList-list" :style="{width:width2}"> + <h3>{{list2Title}}</h3> + <draggable :list="filterList2" class="dragArea" :options="{group:'article'}"> + <div class="list-complete-item" v-for="element in filterList2"> + <div class='list-complete-item-handle2' @click="pushEle(element)"> [{{element.id}}] {{element.title}}</div> + <a style="float: right ;margin-top: -20px;" :href="'/article/edit/'+element.id" target="_blank"><i style="color:#20a0ff" class="el-icon-information"></i></a> + </div> + </draggable> + </div> + </div> +</template> + +<script> + import draggable from 'vuedraggable' + export default { + name: 'twoDndList', + components: { draggable }, + computed: { + filterList2() { + return this.list2.filter(v => { + if (this.isNotInList1(v)) { + return v + } + return false; + }) + } + }, + props: { + list1: { + type: Array, + default() { + return [] + } + }, + list2: { + type: Array, + default() { + return [] + } + }, + list1Title: { + type: String, + default: 'list1' + }, + list2Title: { + type: String, + default: 'list2' + }, + width1: { + type: String, + default: '48%' + }, + width2: { + type: String, + default: '48%' + } + }, + methods: { + isNotInList1(v) { + return this.list1.every(k => v.id !== k.id) + }, + isNotInList2(v) { + return this.list2.every(k => v.id !== k.id) + }, + deleteEle(ele) { + for (const item of this.list1) { + if (item.id === ele.id) { + const index = this.list1.indexOf(item); + this.list1.splice(index, 1) + break + } + } + if (this.isNotInList2(ele)) { + this.list2.unshift(ele) + } + }, + pushEle(ele) { + this.list1.push(ele) + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .twoDndList { + background: #fff; + padding-bottom: 40px; + &:after { + content: ""; + display: table; + clear: both; + } + .twoDndList-list { + float: left; + padding-bottom: 30px; + &:first-of-type { + margin-right: 2%; + } + .dragArea { + margin-top: 15px; + min-height: 50px; + padding-bottom: 30px; + } + } + } + + .list-complete-item { + cursor: pointer; + position: relative; + padding: 5px 12px; + margin-top: 4px; + border: 1px solid #bfcbd9; + transition: all 1s; + } + + .list-complete-item-handle { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-right: 50px; + } + .list-complete-item-handle2{ + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-right: 20px; + } + + .list-complete-item.sortable-chosen { + background: #4AB7BD; + } + + .list-complete-item.sortable-ghost { + background: #30B08F; + } + + .list-complete-enter, .list-complete-leave-active { + opacity: 0; + } +</style> diff --git a/src/directive/sticky.js b/src/directive/sticky.js new file mode 100644 index 0000000000000000000000000000000000000000..db0d28e05cc5cced571f26ab949dd3ab50bf1767 --- /dev/null +++ b/src/directive/sticky.js @@ -0,0 +1,101 @@ +(function() { + const vueSticky = {}; + let listenAction; + vueSticky.install = Vue => { + Vue.directive('sticky', { + inserted(el, binding) { + const params = binding.value || {}, + stickyTop = params.stickyTop || 0, + zIndex = params.zIndex || 1000, + elStyle = el.style; + + elStyle.position = '-webkit-sticky'; + elStyle.position = 'sticky'; + + // if the browser support css sticky(Currently Safari, Firefox and Chrome Canary) + // if (~elStyle.position.indexOf('sticky')) { + // elStyle.top = `${stickyTop}px`; + // elStyle.zIndex = zIndex; + // return + // } + + const elHeight = el.getBoundingClientRect().height; + const elWidth = el.getBoundingClientRect().width; + elStyle.cssText = `top: ${stickyTop}px; z-index: ${zIndex}`; + + const parentElm = el.parentNode || document.documentElement; + const placeholder = document.createElement('div'); + placeholder.style.display = 'none'; + placeholder.style.width = `${elWidth}px`; + placeholder.style.height = `${elHeight}px`; + parentElm.insertBefore(placeholder, el) + + let active = false; + + const getScroll = (target, top) => { + const prop = top ? 'pageYOffset' : 'pageXOffset'; + const method = top ? 'scrollTop' : 'scrollLeft'; + let ret = target[prop]; + if (typeof ret !== 'number') { + ret = window.document.documentElement[method]; + } + return ret; + }; + + const sticky = () => { + if (active) { + return + } + if (!elStyle.height) { + elStyle.height = `${el.offsetHeight}px` + } + + elStyle.position = 'fixed'; + elStyle.width = `${elWidth}px`; + placeholder.style.display = 'inline-block'; + active = true + }; + + const reset = () => { + if (!active) { + return + } + + elStyle.position = ''; + placeholder.style.display = 'none'; + active = false; + }; + + const check = () => { + const scrollTop = getScroll(window, true); + const offsetTop = el.getBoundingClientRect().top; + if (offsetTop < stickyTop) { + sticky(); + } else { + if (scrollTop < elHeight + stickyTop) { + reset() + } + } + }; + listenAction = () => { + check() + }; + + window.addEventListener('scroll', listenAction) + }, + + unbind() { + window.removeEventListener('scroll', listenAction) + } + }) + }; + if (typeof exports == 'object') { + module.exports = vueSticky + } else if (typeof define == 'function' && define.amd) { + define([], () => vueSticky) + } else if (window.Vue) { + window.vueSticky = vueSticky; + Vue.use(vueSticky) + } +}()); + diff --git a/src/directive/waves.css b/src/directive/waves.css new file mode 100644 index 0000000000000000000000000000000000000000..af7a7efd9f1a0d239a34906c4a49eb2200df55c2 --- /dev/null +++ b/src/directive/waves.css @@ -0,0 +1,26 @@ +.waves-ripple { + position: absolute; + border-radius: 100%; + background-color: rgba(0, 0, 0, 0.15); + background-clip: padding-box; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + opacity: 1; +} + +.waves-ripple.z-active { + opacity: 0; + -webkit-transform: scale(2); + -ms-transform: scale(2); + transform: scale(2); + -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; + transition: opacity 1.2s ease-out, transform 0.6s ease-out; + transition: opacity 1.2s ease-out, transform 0.6s ease-out, -webkit-transform 0.6s ease-out; +} \ No newline at end of file diff --git a/src/directive/waves.js b/src/directive/waves.js new file mode 100644 index 0000000000000000000000000000000000000000..0f10bd81bc70ca9b1c449545044b625868438c24 --- /dev/null +++ b/src/directive/waves.js @@ -0,0 +1,54 @@ +import './waves.css'; +(function() { + const vueWaves = {}; + vueWaves.install = (Vue, options = {}) => { + Vue.directive('waves', { + bind(el, binding) { + el.addEventListener('click', e => { + const customOpts = Object.assign(options, binding.value); + const opts = Object.assign({ + ele: el, // æ³¢çº¹ä½œç”¨å…ƒç´ + type: 'hit', // hit点击ä½ç½®æ‰©æ•£centerä¸å¿ƒç‚¹æ‰©å±• + color: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, customOpts), + target = opts.ele; + if (target) { + target.style.position = 'relative'; + target.style.overflow = 'hidden'; + const rect = target.getBoundingClientRect(); + let ripple = target.querySelector('.waves-ripple'); + if (!ripple) { + ripple = document.createElement('span'); + ripple.className = 'waves-ripple'; + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'; + target.appendChild(ripple); + } else { + ripple.className = 'waves-ripple'; + } + switch (opts.type) { + case 'center': + ripple.style.top = (rect.height / 2 - ripple.offsetHeight / 2) + 'px'; + ripple.style.left = (rect.width / 2 - ripple.offsetWidth / 2) + 'px'; + break; + default: + ripple.style.top = (e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop) + 'px'; + ripple.style.left = (e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft) + 'px'; + } + ripple.style.backgroundColor = opts.color; + ripple.className = 'waves-ripple z-active'; + return false; + } + }, false); + } + }) + }; + if (typeof exports == 'object') { + module.exports = vueWaves + } else if (typeof define == 'function' && define.amd) { + define([], () => vueWaves) + } else if (window.Vue) { + window.vueWaves = vueWaves; + Vue.use(vueWaves) + } +}()); + diff --git a/src/filters/index.js b/src/filters/index.js new file mode 100644 index 0000000000000000000000000000000000000000..36cb3e7cdbdb3c1a9d2fc7fe04c830c62646572f --- /dev/null +++ b/src/filters/index.js @@ -0,0 +1,108 @@ +function pluralize(time, label) { + if (time === 1) { + return time + label + } + return time + label + 's' +} +export function timeAgo(time) { + const between = Date.now() / 1000 - Number(time); + if (between < 3600) { + return pluralize(~~(between / 60), ' minute') + } else if (between < 86400) { + return pluralize(~~(between / 3600), ' hour') + } else { + return pluralize(~~(between / 86400), ' day') + } +} + +export function parseTime(time, cFormat) { + if (arguments.length === 0) { + return null; + } + + if ((time + '').length === 10) { + time = +time * 1000 + } + + + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'; + let date; + if (typeof time == 'object') { + date = time; + } else { + date = new Date(parseInt(time)); + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + }; + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key]; + if (key === 'a') return ['一', '二', '三', 'å››', '五', 'å…', 'æ—¥'][value - 1]; + if (result.length > 0 && value < 10) { + value = '0' + value; + } + return value || 0; + }); + return time_str; +} + +export function formatTime(time, option) { + time = +time * 1000; + const d = new Date(time); + const now = Date.now(); + + const diff = (now - d) / 1000; + + if (diff < 30) { + return '刚刚' + } else if (diff < 3600) { // less 1 hour + return Math.ceil(diff / 60) + '分钟å‰' + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + 'å°æ—¶å‰' + } else if (diff < 3600 * 24 * 2) { + return '1天å‰' + } + if (option) { + return parseTime(time, option) + } else { + return d.getMonth() + 1 + '月' + d.getDate() + 'æ—¥' + d.getHours() + 'æ—¶' + d.getMinutes() + '分' + } +} + + + +/* æ•°å— æ ¼å¼åŒ–*/ +export function nFormatter(num, digits) { + const si = [ + { value: 1E18, symbol: 'E' }, + { value: 1E15, symbol: 'P' }, + { value: 1E12, symbol: 'T' }, + { value: 1E9, symbol: 'G' }, + { value: 1E6, symbol: 'M' }, + { value: 1E3, symbol: 'k' } + ]; + for (let i = 0; i < si.length; i++) { + if (num >= si[i].value) { + return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol; + } + } + return num.toString(); +} + + +export function html2Text(val) { + const div = document.createElement('div'); + div.innerHTML = val; + return div.textContent || div.innerText; +} + + +export function toThousandslsFilter(num) { + return (+num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000000000000000000000000000000000000..b47697f03500edadee6da6839ba4812e6ec76d40 --- /dev/null +++ b/src/main.js @@ -0,0 +1,116 @@ +// The Vue build version to load with the `import` command +// (runtime-only or standalone) has been set in webpack.base.conf with an alias. +import Vue from 'vue'; +import App from './App'; +import router from './router'; +import store from './store'; +import ElementUI from 'element-ui'; +import 'element-ui/lib/theme-default/index.css'; +import 'assets/custom-theme/index.css'; // https://github.com/PanJiaChen/custom-element-theme +import NProgress from 'nprogress'; +import 'nprogress/nprogress.css'; +import 'normalize.css/normalize.css'; +import 'styles/index.scss'; +import 'components/Icon-svg/index'; +import 'assets/iconfont/iconfont'; +import * as filters from './filters'; +import Multiselect from 'vue-multiselect'; +import Sticky from 'components/Sticky'; +import 'vue-multiselect/dist/vue-multiselect.min.css'; +import vueWaves from './directive/waves'; +import vueSticky from './directive/sticky'; +import errLog from 'store/errLog'; +// import './styles/mixin.scss'; + +// register globally +Vue.component('multiselect', Multiselect); +Vue.component('Sticky', Sticky); +Vue.use(ElementUI); +Vue.use(vueWaves); +Vue.use(vueSticky); + + +// register global utility filters. +Object.keys(filters).forEach(key => { + Vue.filter(key, filters[key]) +}); + + +function hasPermission(roles, permissionRoles) { + if (roles.indexOf('admin') >= 0) return true; + return roles.some(role => permissionRoles.indexOf(role) >= 0) +} +// register global progress. +const whiteList = ['/login', '/authredirect', '/reset', '/sendpwd'];// ä¸é‡å®šå‘白åå• +router.beforeEach((to, from, next) => { + NProgress.start(); + if (store.getters.token) { + if (to.path === '/login') { + next({ path: '/' }); + } else { + console.log('a') + if (to.meta && to.meta.role) { + if (hasPermission(store.getters.roles, to.meta.role)) { + next(); + } else { + next('/401'); + } + } else { + next(); + } + } + } else { + if (whiteList.indexOf(to.path) !== -1) { + next() + } else { + next('/login') + } + } +}); + +router.afterEach(() => { + NProgress.done(); +}); + + +// 异æ¥ç»„件 +// Vue.component('async-Editor', function (resolve) { +// require(['components/Editor'], resolve) +// }); + +// window.onunhandledrejection = e => { +// console.log('unhandled', e.reason, e.promise); +// e.preventDefault() +// }; + +// 生产环境错误日志 +if (process.env === 'production') { + Vue.config.errorHandler = function(err, vm) { + console.log(err, window.location.href); + errLog.pushLog({ + err, + url: window.location.href, + vm + }) + }; +} + +// window.onerror = function (msg, url, lineNo, columnNo, error) { +// console.log('window') +// }; +// +// console.error = (function (origin) { +// return function (errorlog) { +// // handler();//基于业务的日志记录åŠæ•°æ®æŠ¥é”™ +// console.log('console'+errorlog) +// origin.call(console, errorlog); +// } +// })(console.error); + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app'); + + diff --git a/src/mock/login.js b/src/mock/login.js new file mode 100644 index 0000000000000000000000000000000000000000..3bd1c9e02bcd89dd10e1af7facccd44e28cf8c76 --- /dev/null +++ b/src/mock/login.js @@ -0,0 +1,25 @@ +const userMap = { + admin: { + role: ['admin'], + token: 'admin', + introduction: '我是超级管ç†å‘˜', + avatar: 'https://wdl.wallstreetcn.com/48a3e1e0-ea2c-4a4e-9928-247645e3428b', + name: '超级管ç†å‘˜å°æ½˜' + }, + editor: { + role: ['editor'], + token: 'editor', + introduction: '我是编辑', + avatar: 'https://wdl.wallstreetcn.com/48a3e1e0-ea2c-4a4e-9928-247645e3428b', + name: '普通编辑å°å¼ ' + + }, + developer: { + role: ['develop'], + token: 'develop', + introduction: '我是开å‘', + avatar: 'https://wdl.wallstreetcn.com/48a3e1e0-ea2c-4a4e-9928-247645e3428b', + name: '工程师å°çŽ‹' + } +} +export default userMap diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000000000000000000000000000000000000..0768f3c4bb564669ef17f43bb36d4bcf5a1fe7cc --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,81 @@ +import Vue from 'vue'; +import Router from 'vue-router'; + +/* layout*/ +import Layout from '../views/layout/Layout'; + +// dashboard +// import dashboard from '../views/dashboard/index'; +const dashboard = resolve => require(['../views/dashboard/index'], resolve); +/* error*/ +const Err404 = resolve => require(['../views/error/404'], resolve); +const Err401 = resolve => require(['../views/error/401'], resolve); +/* login*/ +import Login from '../views/login/'; +import authRedirect from '../views/login/authredirect'; +import sendPWD from '../views/login/sendpwd'; +import reset from '../views/login/reset'; + +/* components*/ +const Tinymce = resolve => require(['../views/components/tinymce'], resolve); +const Markdown = resolve => require(['../views/components/markdown'], resolve); + +/* admin*/ +// const AdminCreateUser = resolve => require(['../views/admin/createUser'], resolve); +// const QuicklyCreateUser = resolve => require(['../views/admin/quicklycreate'], resolve); +// const UserProfile = resolve => require(['../views/admin/profile'], resolve); +// const UsersList = resolve => require(['../views/admin/usersList'], resolve); + + + + +Vue.use(Router); + +export default new Router({ + mode: 'history', + scrollBehavior: () => ({ y: 0 }), + routes: [ + { path: '/login', component: Login, hidden: true }, + { path: '/authredirect', component: authRedirect, hidden: true }, + { path: '/sendpwd', component: sendPWD, hidden: true }, + { path: '/reset', component: reset, hidden: true }, + { path: '/404', component: Err404, hidden: true }, + { path: '/401', component: Err401, hidden: true }, + { + path: '/', + component: Layout, + redirect: '/dashboard', + name: '首页', + hidden: true, + children: [ + { path: 'dashboard', component: dashboard } + ] + }, + { + path: '/admin', + component: Layout, + redirect: 'noredirect', + name: '组件', + icon: 'zujian', + children: [ + { path: 'tinymce', component: Tinymce, name: '富文本编辑器' }, + { path: 'markdown', component: Markdown, name: 'Markdown' } + + ] + }, + // { + // path: '/admin', + // component: Layout, + // redirect: 'noredirect', + // name: 'åŽå°ç®¡ç†', + // icon: 'geren1', + // children: [ + // { path: 'createuser', component: AdminCreateUser, name: '管ç†å‘˜', meta: { role: ['admin'] } }, + // { path: 'list', component: UsersList, name: 'åŽå°ç”¨æˆ·åˆ—表', meta: { role: ['super_editor', 'product', 'author_assistant'] } }, + // { path: 'qicklyCreate', component: QuicklyCreateUser, name: '一键创建账户', meta: { role: ['super_editor', 'gold_editor', 'weex_editor', 'wscn_editor', 'author_assistant', 'product'] } }, + // { path: 'profile', component: UserProfile, name: '个人' } + // ] + // }, + { path: '*', redirect: '/404', hidden: true } + ] +}); diff --git a/src/store/errLog.js b/src/store/errLog.js new file mode 100644 index 0000000000000000000000000000000000000000..4401babcab64136e89c8f5f1b0402068334fe9cf --- /dev/null +++ b/src/store/errLog.js @@ -0,0 +1,13 @@ +const errLog = { + state: { + errLog: [] + }, + pushLog(log) { + this.state.errLog.unshift(log) + }, + clearLog() { + this.state.errLog = []; + } +}; + +export default errLog; diff --git a/src/store/getters.js b/src/store/getters.js new file mode 100644 index 0000000000000000000000000000000000000000..55acbc9c8d8a87a49791d8c4042277067a2a9926 --- /dev/null +++ b/src/store/getters.js @@ -0,0 +1,15 @@ +const getters = { + sidebar: state => state.app.sidebar, + livenewsChannels: state => state.app.livenewsChannels, + token: state => state.user.token, + avatar: state => state.user.avatar, + name: state => state.user.name, + uid: state => state.user.uid, + email: state => state.user.email, + introduction: state => state.user.introduction, + auth_type: state => state.user.auth_type, + status: state => state.user.status, + roles: state => state.user.roles, + setting: state => state.user.setting +}; +export default getters diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000000000000000000000000000000000000..d3121d07dbe1cd22dbb7cda491ef29303a822169 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,17 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import app from './modules/app'; +import user from './modules/user'; +import getters from './getters'; + +Vue.use(Vuex); + +const store = new Vuex.Store({ + modules: { + app, + user + }, + getters +}); + +export default store diff --git a/src/store/modules/app.js b/src/store/modules/app.js new file mode 100644 index 0000000000000000000000000000000000000000..ae336fa8ab9eeb6b89741ef8aa7eb291e4315b12 --- /dev/null +++ b/src/store/modules/app.js @@ -0,0 +1,38 @@ +import Cookies from 'js-cookie'; + +const app = { + state: { + sidebar: { + opened: !+Cookies.get('sidebarStatus') + }, + theme: 'default', + livenewsChannels: Cookies.get('livenewsChannels') || '[]' + }, + mutations: { + TOGGLE_SIDEBAR: state => { + if (state.sidebar.opened) { + Cookies.set('sidebarStatus', 1); + } else { + Cookies.set('sidebarStatus', 0); + } + state.sidebar.opened = !state.sidebar.opened; + }, + SET_LIVENEWS_CHANNELS: (status, channels) => { + status.livenewsChannels = JSON.stringify(channels); + Cookies.set('livenewsChannels', JSON.stringify(channels)); + } + }, + actions: { + ToggleSideBar: ({ commit }) => { + commit('TOGGLE_SIDEBAR') + }, + setTheme: ({ commit }, theme) => { + commit('SET_THEME', theme) + }, + setlivenewsChannels: ({ commit }, channels) => { + commit('SET_LIVENEWS_CHANNELS', channels) + } + } +}; + +export default app; diff --git a/src/store/modules/user.js b/src/store/modules/user.js new file mode 100644 index 0000000000000000000000000000000000000000..b3f51deee2f62eb7949ce137562663d4b1a81054 --- /dev/null +++ b/src/store/modules/user.js @@ -0,0 +1,129 @@ +// import { loginByEmail, loginByThirdparty } from 'api/login'; +// import { userInfo, userLogout } from 'api/adminUser'; +import Cookies from 'js-cookie'; +import userMap from 'mock/login'; + +const user = { + state: { + user: '', + status: '', + email: '', + code: '', + uid: undefined, + auth_type: '', + token: Cookies.get('X-Ivanka-Token'), + name: '', + avatar: '', + introduction: '', + roles: [], + setting: { + articlePlatform: [] + } + }, + + mutations: { + SET_AUTH_TYPE: (state, type) => { + state.auth_type = type; + }, + SET_CODE: (state, code) => { + state.code = code; + }, + SET_TOKEN: (state, token) => { + state.token = token; + }, + SET_UID: (state, uid) => { + state.uid = uid; + }, + SET_EMAIL: (state, email) => { + state.email = email; + }, + SET_INTRODUCTION: (state, introduction) => { + state.introduction = introduction; + }, + SET_SETTING: (state, setting) => { + state.setting = setting; + }, + SET_STATUS: (state, status) => { + state.status = status; + }, + SET_NAME: (state, name) => { + state.name = name; + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar; + }, + SET_ROLES: (state, roles) => { + state.roles = roles; + }, + LOGIN_SUCCESS: () => { + console.log('login success') + }, + LOGOUT_USER: state => { + state.user = ''; + } + }, + + actions: { + // 邮箱登录 + LoginByEmail({ commit }, userInfo) { + return new Promise((resolve, reject) => { + const email = userInfo.email.split('@')[0]; + if (userMap[email]) { + commit('SET_ROLES', userMap[email].role); + commit('SET_TOKEN', userMap[email].token); + Cookies.set('X-Ivanka-Token', userMap[email].token); + resolve(); + } else { + reject('è´¦å·ä¸æ£ç¡®'); + } + }); + }, + // 第三方验è¯ç™»å½• + LoginByThirdparty({ commit, state }, code) { + return new Promise((resolve, reject) => { + commit('SET_CODE', code); + loginByThirdparty(state.status, state.email, state.code, state.auth_type).then(response => { + commit('SET_TOKEN', response.data.token); + Cookies.set('X-Ivanka-Token', response.data.token); + resolve(); + }).catch(error => { + reject(error); + }); + }); + }, + // 获å–ç”¨æˆ·ä¿¡æ¯ + GetInfo({ commit, state }) { + return new Promise(resolve => { + const token = state.token; + commit('SET_ROLES', userMap[token].role); + commit('SET_NAME', userMap[token].name); + commit('SET_AVATAR', userMap[token].avatar); + commit('SET_INTRODUCTION', userMap[token].introduction); + resolve(); + }); + }, + // 登出 + LogOut({ commit, state }) { + return new Promise((resolve, reject) => { + userLogout(state.token).then(() => { + commit('SET_TOKEN', ''); + Cookies.remove('X-Ivanka-Token'); + resolve(); + }).catch(error => { + reject(error); + }); + }); + }, + + // å‰ç«¯ 登出 + FedLogOut({ commit }) { + return new Promise(resolve => { + commit('SET_TOKEN', ''); + Cookies.remove('X-Ivanka-Token'); + resolve(); + }); + } + } +}; + +export default user; diff --git a/src/store/permission.js b/src/store/permission.js new file mode 100644 index 0000000000000000000000000000000000000000..7e14b0d23b8aae1cb9176f02713a0840546897cf --- /dev/null +++ b/src/store/permission.js @@ -0,0 +1,39 @@ +const permission = { + state: { + permissionRoutes: [] + }, + init(data) { + const roles = data.roles; + const router = data.router; + const permissionRoutes = router.filter(v => { + if (roles.indexOf('admin') >= 0) return true; + if (this.hasPermission(roles, v)) { + if (v.children && v.children.length > 0) { + v.children = v.children.filter(child => { + if (this.hasPermission(roles, child)) { + return child + } + return false; + }); + return v + } else { + return v + } + } + return false; + }); + this.permissionRoutes = permissionRoutes; + }, + get() { + return this.permissionRoutes + }, + hasPermission(roles, route) { + if (route.meta && route.meta.role) { + return roles.some(role => route.meta.role.indexOf(role) >= 0) + } else { + return true + } + } +}; + +export default permission; diff --git a/src/styles/btn.scss b/src/styles/btn.scss new file mode 100644 index 0000000000000000000000000000000000000000..edd2f3182cfebb257d1f6f5b502adfa95c854d62 --- /dev/null +++ b/src/styles/btn.scss @@ -0,0 +1,103 @@ +$blue:#324157; +$light-blue:#3A71A8; +$red:#C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow:#FEC171; + +$panGreen: #30B08F; + +@mixin colorBtn($color) { + background: $color; + &:hover { + color: $color; + &:before, &:after { + background: $color; + } + } +} + + +.blue-btn { + @include colorBtn($blue) +} + +.light-blue-btn{ + @include colorBtn($light-blue) +} + + +.red-btn { + @include colorBtn($red) +} + +.pink-btn { + @include colorBtn($pink) +} + +.green-btn { + @include colorBtn($green) +} + + +.tiffany-btn { + @include colorBtn($tiffany) +} + + +.yellow-btn { + @include colorBtn($yellow) +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + margin-right: 25px; + transition: 600ms ease all; + position: relative; + display: inline-block; + &:hover { + background: #fff; + &:before, &:after { + width: 100%; + transition: 600ms ease all; + } + } + &:before, &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button{ + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/src/styles/editor.scss b/src/styles/editor.scss new file mode 100644 index 0000000000000000000000000000000000000000..de696c2d59ae421dfc5253cc89599617a51d3989 --- /dev/null +++ b/src/styles/editor.scss @@ -0,0 +1,348 @@ +//富文本 +//移除 至static/tinymce/skins/lightgray.content.min.css + .small-size { + width: 800px; + margin: 0 auto; + } + img{ + max-height: 300px; + } + .note-color .dropdown-menu li .btn-group{ + &:first-child{ + display: none; + } + } + //ç¦æ¢å›¾ç‰‡ç¼©æ”¾ + .note-control-sizing { + display: none; + } + .panel-body { + $blue: #1478F0; + font-size: 16px; + line-height: 1.4em; + & > :last-child { + margin-bottom: 0; + } + img { + max-width: 100%; + display: block; + margin: 0 auto; + } + table { + width: 100% !important; + } + embed { + max-width: 100%; + margin-bottom: 30px; + } + p { + // margin-bottom: 1em; + text-align: justify; + word-break: break-all; + } + ul { + margin-bottom: 30px; + } + li { + margin-left: 20px; + margin-bottom: 30px; + } + a { + color: $blue; + } + hr { + margin: 1em auto; + border: none; + padding: 0; + width: 100%; + height: 1px; + background: #DCDCDC; + } + //add type.css start + blockquote p { + font-size: 16px; + letter-spacing: 1px; + line-height: 28px; + color: #333; + } + blockquote p:last-of-type { + margin-bottom: 0; + } + /* HTML5 媒体文件跟 img ä¿æŒä¸€è‡´ */ + audio, + canvas, + video { + display: inline-block; + *display: inline; + *zoom: 1; + } + /* è¦æ³¨æ„表å•å…ƒç´ 并ä¸ç»§æ‰¿çˆ¶çº§ font 的问题 */ + button, + input, + select, + textarea { + font: 500 14px/1.8 'Hiragino Sans GB', Microsoft YaHei, sans-serif; + } + /* 去掉å„Table cell çš„è¾¹è·å¹¶è®©å…¶è¾¹é‡åˆ */ + table { + border-collapse: collapse; + border-spacing: 0; + } + /* IE bug fixed: th ä¸ç»§æ‰¿ text-align*/ + th { + text-align: inherit; + } + /* 去除默认边框 */ + fieldset, + img { + border: 0; + } + /* 解决 IE6-7 图片缩放锯齿问题 */ + img { + -ms-interpolation-mode: bicubic; + } + /* ie6 7 8(q) bug 显示为行内表现 */ + iframe { + display: block; + } + /* å—/段è½å¼•ç”¨ */ + blockquote { + position: relative; + font-size: 16px; + letter-spacing: 1px; + line-height: 28px; + margin-bottom: 40px; + padding: 20px; + background: #f0f2f5; + &:before{ + position: absolute; + content: " \300D"; + top: 10px; + left: 2px; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + color: #333; + } + &:after{ + position: absolute; + content: " \300D"; + right: 6px; + bottom: 12px; + color: #333; + } + } + blockquote blockquote { + padding: 0 0 0 1em; + margin-left: 2em; + border-left: 3px solid $blue; + } + /* Firefox ä»¥å¤–ï¼Œå…ƒç´ æ²¡æœ‰ä¸‹åˆ’çº¿ï¼Œéœ€æ·»åŠ */ + acronym, + abbr { + border-bottom: 1px dotted; + font-variant: normal; + } + /* æ·»åŠ é¼ æ ‡é—®å·ï¼Œè¿›ä¸€æ¥ç¡®ä¿åº”用的è¯ä¹‰æ˜¯æ£ç¡®çš„(è¦çŸ¥é“,交互他们也有æ´ç™–ï¼Œå¦‚æžœä½ ä¸åŽ»æŽ‰ï¼Œé‚£å¾—多花点å£èˆŒï¼‰ */ + abbr { + cursor: help; + } + /* 一致的 del æ ·å¼ */ + del { + text-decoration: line-through; + } + address, + caption, + cite, + code, + del, + em, + th, + var { + font-style: normal; + font-weight: 500; + } + em { + font-style: normal; + font-family: sans-serif; + font-weight: bold; + } + /* 对é½æ˜¯æŽ’版最é‡è¦çš„å› ç´ , åˆ«è®©ä»€ä¹ˆéƒ½å±…ä¸ */ + caption, + th { + text-align: left; + } + q:before, + q:after { + content: ''; + } + /* ç»Ÿä¸€ä¸Šæ ‡å’Œä¸‹æ ‡ */ + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: text-top; + } + :root sub, + :root sup { + vertical-align: baseline; + /* for ie9 and other mordern browsers */ + } + sup { + top: -0.5em; + } + sub { + bottom: -0.25em; + } + /* 让链接在 hover 状æ€ä¸‹æ˜¾ç¤ºä¸‹åˆ’线 */ + a:hover { + text-decoration: underline; + } + /* 默认ä¸æ˜¾ç¤ºä¸‹åˆ’线,ä¿æŒé¡µé¢ç®€æ´ */ + ins, + a { + text-decoration: none; + } + u, + .typo-u { + text-decoration: underline; + } + /* æ ‡è®°ï¼Œç±»ä¼¼äºŽæ‰‹å†™çš„è§å…‰ç¬”的作用 */ + mark { + background: #fffdd1; + } + /* 代ç ç‰‡æ– */ + pre, + code { + font-family: "Courier New", Courier, monospace; + } + pre { + border: 1px solid #ddd; + border-left-width: 0.4em; + background: #fbfbfb; + padding: 10px; + } + /* 底部å°åˆ·ä½“ã€ç‰ˆæœ¬ç‰æ ‡è®° */ + small { + font-size: 12px; + color: #888; + } + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: 18px; + font-weight: 700; + color: #1478f0; + border-left: 5px solid #1478f0; + padding-left: 10px; + margin: 30px 0; + } + h2 { + font-size: 1.2em; + } + /* ä¿è¯å—/段è½ä¹‹é—´çš„空白隔行 */ + .typo p, + .typo pre, + .typo ul, + .typo ol, + .typo dl, + .typo form, + .typo hr, + .typo table, + .typo-p, + .typo-pre, + .typo-ul, + .typo-ol, + .typo-dl, + .typo-form, + .typo-hr, + .typo-table { + margin-bottom: 15px; + line-height: 25px; + } + /* æ ‡é¢˜åº”è¯¥æ›´è´´ç´§å†…å®¹ï¼Œå¹¶ä¸Žå…¶ä»–å—区分,margin 值è¦ç›¸åº”åšä¼˜åŒ– */ + .typo h1, + .typo h2, + .typo h3, + .typo h4, + .typo h5, + .typo h6, + .typo-h1, + .typo-h2, + .typo-h3, + .typo-h4, + .typo-h5, + .typo-h6 { + margin-bottom: 0.4em; + line-height: 1.5; + } + .typo h1, + .typo-h1 { + font-size: 1.8em; + } + .typo h2, + .typo-h2 { + font-size: 1.6em; + } + .typo h3, + .typo-h3 { + font-size: 1.4em; + } + .typo h4, + .typo-h0 { + font-size: 1.2em; + } + .typo h5, + .typo h6, + .typo-h5, + .typo-h6 { + font-size: 1em; + } + /* åœ¨æ–‡ç« ä¸ï¼Œåº”该还原 ul å’Œ ol çš„æ ·å¼ */ + .typo ul, + .typo-ul { + margin-left: 1.3em; + list-style: disc; + } + .typo ol, + .typo-ol { + list-style: decimal; + margin-left: 1.9em; + } + .typo li ul, + .typo li ol, + .typo-ul ul, + .typo-ul ol, + .typo-ol ul, + .typo-ol ol { + margin-top: 0; + margin-bottom: 0; + margin-left: 2em; + } + .typo li ul, + .typo-ul ul, + .typo-ol ul { + list-style: circle; + } + /* åŒ ul/olï¼Œåœ¨æ–‡ç« ä¸åº”用 table åŸºæœ¬æ ¼å¼ */ + .typo table th, + .typo table td, + .typo-table th, + .typo-table td { + border: 1px solid #ddd; + padding: 5px 10px; + } + .typo table th, + .typo-table th { + background: #fbfbfb; + } + .typo table thead th, + .typo-table thead th { + background: #f1f1f1; + } + } + + diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000000000000000000000000000000000000..c6beb1d314201afebc2ce5ce4a2037a224ddf8fc --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,392 @@ +@import './btn.scss'; +// @import './editor.scss'; +@import "./mixin.scss"; + +body { + //height: 100%; + //overflow-y: scroll; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif; + //@include scrollBar; +} +label{ + font-weight: 700; +} + +html { + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +.no-padding { + padding: 0px !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.inlineBlock { + display: block; +} + +.components-container{ + margin: 30px 50px; +} + +code{ + background: #eef1f6; + padding: 20px 10px; + margin-bottom: 20px; + display: block; +} +.fade-enter-active, .fade-leave-active { + transition: all .2s ease +} + +.fade-enter, .fade-leave-active { + opacity: 0; +} + +//editor +//.editor-placeholder { +// margin: 0 auto; +// display: block; +// .editor-placeholder-title { +// text-align: center; +// font-size: 20px; +// padding-bottom: 5px; +// } +// .editor-placeholder-image { +// display: block; +// max-height: 100px; +// margin: 0 auto; +// } +//} + +//main-containerå…¨å±€æ ·å¼ +.app-container { + padding: 20px; + //min-height: 100%; +} + +//element ui upload +.upload-container { + .el-upload { + width: 100%; + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +.singleImageUpload2.upload-container { + .el-upload { + width: 100%; + height: 100%; + .el-upload-dragger { + width: 100%; + height: 100%; + .el-icon-upload { + margin: 30% 0 16px; + } + } + } +} + +.editor-video-upload { + @include clearfix; + margin-bottom: 10px; + .el-upload { + float: left; + width: 100px; + + } + .el-upload-list { + float: left; + .el-upload-list__item:first-child { + margin-top: 0px; + } + } +} + +.el-upload-list--picture-card { + float: left; +} + +.pagination-container { + margin-top: 30px; +} + +.pointer { + cursor: pointer; +} + +.wscn-icon { + width: 1em; + height: 1em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; +} + +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); + .subtitle { + font-size: 20px; + color: #fff; + } + &.draft { + background: #d0d0d0; + } + &.deleted { + background: #d0d0d0; + } +} + +.link-type,.link-type:focus { + color: #337ab7; + cursor: pointer; + &:hover{ + color: rgb(32, 160, 255); + } +} + +.publishedTag, .draftTag, .deletedTag { + color: #fff; + background-color: $panGreen; + line-height: 1; + text-align: center; + margin: 0; + padding: 8px 12px; + font-size: 14px; + border-radius: 4px; + position: absolute; + left: 20px; + top: 10px; +} + +.draftTag { + background-color: $yellow; +} + +.deletedTag { + background-color: $red; +} + +.input-label { + font-size: 14px; + color: #48576a; + line-height: 1; + padding: 11px 5px 11px 0; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +.no-marginLeft { + .el-checkbox { + margin: 0 20px 15px 0; + } + .el-checkbox + .el-checkbox { + margin-left: 0px; + } +} + +.filter-container { + padding-bottom: 10px; + .filter-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + } +} + +//æ–‡ç« é¡µtextareaä¿®æ”¹æ ·å¼ +.article-textarea { + textarea { + padding-right: 40px; + resize: none; + border: none; + border-radius: 0px; + border-bottom: 1px solid #bfcbd9; + } +} + +//å®žæ—¶æ–°é—»åˆ›å»ºé¡µç‰¹æ®Šå¤„ç† +.recentNews-container { + p { + display: inline-block; + } + .el-collapse-item__content{ + padding-right:0px; + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} + +//reset element ui +.block-checkbox { + display: block; +} + +//ä¸Šä¼ é¡µé¢ä¸æ˜¾ç¤ºåˆ 除icon +.mediaUpload-container { + .el-upload__btn-delete { + display: none !important; + } +} + +.operation-container { + .cell { + padding: 10px !important; + } + .el-button { + &:nth-child(3) { + margin-top: 10px; + margin-left: 0px; + } + &:nth-child(4) { + margin-top: 10px; + } + } +} + +.el-upload { + input[type="file"] { + display: none !important; + } +} + +.el-upload__input { + display: none; +} + +.cell { + .el-tag { + margin-right: 8px; + } +} +.small-padding{ + .cell{ + padding-left: 8px; + padding-right: 8px; + } +} +.status-col { + .cell { + padding: 0 10px; + text-align: center; + .el-tag { + margin-right: 0px; + } + } +} + +//.el-form-item__content{ +// margin-left: 0px!important; +//} +.no-border { + .el-input-group__prepend, .el-input__inner, .el-date-editor__editor, .multiselect__tags { + border: none; + } +} + +.el-select__tags { + max-width: 100% !important; +} + +.small-space .el-form-item { + margin-bottom: 10px; +} + +.no-padding { + .el-dropdown-menu__item { + padding: 0px; + } + .el-dropdown-menu { + padding: 0px; + } +} + +.no-hover { + .el-dropdown-menu__item:not(.is-disabled):hover { + background-color: #fff; + } +} + +.el-tooltip-fullwidth { + width: 100%; + .el-tooltip__rel { + width: 100%; + } +} + +//暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461 +.el-dialog{ + transform: none; + left: 0; + position: relative; + margin: 0 auto; +} diff --git a/src/styles/mixin.scss b/src/styles/mixin.scss new file mode 100644 index 0000000000000000000000000000000000000000..fc61542b94943a71a6efec14b975f92b8ff4127a --- /dev/null +++ b/src/styles/mixin.scss @@ -0,0 +1,57 @@ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + &::-webkit-scrollbar { + width: 6px; + } + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} + +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + @if $direction == up { + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } @else if $direction == right { + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } @else if $direction == down { + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } @else if $direction == left { + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} \ No newline at end of file diff --git a/src/utils/createUniqueString.js b/src/utils/createUniqueString.js new file mode 100644 index 0000000000000000000000000000000000000000..2e6e357ea27fc76833a598964e1d7da5d80b53de --- /dev/null +++ b/src/utils/createUniqueString.js @@ -0,0 +1,8 @@ +/** + * Created by jiachenpan on 17/3/8. + */ +export default function createUniqueString() { + const timestamp = +new Date() + ''; + const randomNum = parseInt((1 + Math.random()) * 65536) + ''; + return (+(randomNum + timestamp)).toString(32); +} diff --git a/src/utils/fetch.js b/src/utils/fetch.js new file mode 100644 index 0000000000000000000000000000000000000000..7b07bd6d4b0a3284315d133d26fe203d75743ee9 --- /dev/null +++ b/src/utils/fetch.js @@ -0,0 +1,72 @@ +import axios from 'axios'; +import { Message } from 'element-ui'; +import store from '../store'; +import router from '../router'; + +export default function fetch(options) { + return new Promise((resolve, reject) => { + const instance = axios.create({ + baseURL: process.env.BASE_API, + // timeout: 2000, + headers: { 'X-Ivanka-Token': store.getters.token } + }); + instance(options) + .then(response => { + const res = response.data; + if (res.code !== 20000) { + console.log(options); // for debug + Message({ + message: res.message, + type: 'error', + duration: 5 * 1000 + }); + // 50014:Token 过期了 50012:其他客户端登录了 50008:éžæ³•çš„token + if (res.code === 50008 || res.code === 50014 || res.code === 50012) { + Message({ + message: res.message, + type: 'error', + duration: 5 * 1000 + }); + // router.push({path: '/'}) + // TODO + store.dispatch('FedLogOut').then(() => { + router.push({ path: '/login' }) + }); + } + reject(res); + } + resolve(res); + }) + .catch(error => { + Message({ + message: 'å‘生异常错误,请刷新页é¢é‡è¯•,或è”系程åºå‘˜', + type: 'error', + duration: 5 * 1000 + }); + console.log(error); // for debug + reject(error); + }); + }); +} + +export function tpFetch(options) { + return new Promise((resolve, reject) => { + const instance = axios.create({ + // timeout: 2000, + }); + instance(options) + .then(response => { + const res = response.data; + resolve(res); + }) + .catch(error => { + Message({ + message: 'å‘生异常错误,请刷新页é¢é‡è¯•,或è”系程åºå‘˜', + type: 'error', + duration: 5 * 1000 + }); + console.log(error); // for debug + reject(error); + }); + }); +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000000000000000000000000000000000000..054795965d0dab5dc5be004620c485f29b646fb5 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,221 @@ +/** + * Created by jiachenpan on 16/11/18. + */ + + import showdown from 'showdown' // markdown转化 + const converter = new showdown.Converter(); + + export function parseTime(time, cFormat) { + if (arguments.length === 0) { + return null; + } + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'; + let date; + if (typeof time == 'object') { + date = time; + } else { + if (('' + time).length === 10) time = parseInt(time) * 1000; + date = new Date(time); + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + }; + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key]; + if (key === 'a') return ['一', '二', '三', 'å››', '五', 'å…', 'æ—¥'][value - 1]; + if (result.length > 0 && value < 10) { + value = '0' + value; + } + return value || 0; + }); + return time_str; + } + + export function formatTime(time, option) { + time = +time * 1000; + const d = new Date(time); + const now = Date.now(); + + const diff = (now - d) / 1000; + + if (diff < 30) { + return '刚刚' + } else if (diff < 3600) { // less 1 hour + return Math.ceil(diff / 60) + '分钟å‰' + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + 'å°æ—¶å‰' + } else if (diff < 3600 * 24 * 2) { + return '1天å‰' + } + if (option) { + return parseTime(time, option) + } else { + return d.getMonth() + 1 + '月' + d.getDate() + 'æ—¥' + d.getHours() + 'æ—¶' + d.getMinutes() + '分' + } + } + +// æ ¼å¼åŒ–时间 + + + export function getQueryObject(url) { + url = url == null ? window.location.href : url; + const search = url.substring(url.lastIndexOf('?') + 1); + const obj = {}; + const reg = /([^?&=]+)=([^?&=]*)/g; + search.replace(reg, (rs, $1, $2) => { + const name = decodeURIComponent($1); + let val = decodeURIComponent($2); + val = String(val); + obj[name] = val; + return rs; + }); + return obj; + } + + + + +/** + *get getByteLen + * @param {Sting} val input value + * @returns {number} output value + */ + export function getByteLen(val) { + let len = 0; + for (let i = 0; i < val.length; i++) { + if (val[i].match(/[^\x00-\xff]/ig) != null) { + len += 1; + } else { len += 0.5; } + } + return Math.floor(len); + } + + export function cleanArray(actual) { + const newArray = []; + for (let i = 0; i < actual.length; i++) { + if (actual[i]) { + newArray.push(actual[i]); + } + } + return newArray; + } + + export function param(json) { + if (!json) return ''; + return cleanArray(Object.keys(json).map(key => { + if (json[key] === undefined) return ''; + return encodeURIComponent(key) + '=' + + encodeURIComponent(json[key]); + })).join('&'); + } + + export function html2Text(val) { + const div = document.createElement('div'); + div.innerHTML = val; + return div.textContent || div.innerText; + } + + export function objectMerge(target, source) { + /* Merges two objects, + giving the last one precedence */ + + if (typeof target !== 'object') { + target = {}; + } + if (Array.isArray(source)) { + return source.slice(); + } + for (const property in source) { + if (source.hasOwnProperty(property)) { + const sourceProperty = source[property]; + if (typeof sourceProperty === 'object') { + target[property] = objectMerge(target[property], sourceProperty); + continue; + } + target[property] = sourceProperty; + } + } + return target; + } + + + export function scrollTo(element, to, duration) { + if (duration <= 0) return; + const difference = to - element.scrollTop; + const perTick = difference / duration * 10; + + setTimeout(() => { + console.log(new Date()) + element.scrollTop = element.scrollTop + perTick; + if (element.scrollTop === to) return; + scrollTo(element, to, duration - 10); + }, 10); + } + + export function toggleClass(element, className) { + if (!element || !className) { + return; + } + + let classString = element.className; + const nameIndex = classString.indexOf(className); + if (nameIndex === -1) { + classString += '' + className; + } else { + classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length); + } + element.className = classString; + } + + export const pickerOptions = [ + { + text: '今天', + onClick(picker) { + const end = new Date(); + const start = new Date(new Date().toDateString()); + end.setTime(start.getTime()); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一周', + onClick(picker) { + const end = new Date(new Date().toDateString()); + const start = new Date(); + start.setTime(end.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近一个月', + onClick(picker) { + const end = new Date(new Date().toDateString()); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', [start, end]); + } + }, { + text: '最近三个月', + onClick(picker) { + const end = new Date(new Date().toDateString()); + const start = new Date(); + start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); + picker.$emit('pick', [start, end]); + } + }] + + export function getTime(type) { + if (type === 'start') { + return new Date().getTime() - 3600 * 1000 * 24 * 90 + } else { + return new Date(new Date().toDateString()) + } + } + + export function showdownMD(md) { + return converter.makeHtml(md) + } diff --git a/src/utils/openWindow.js b/src/utils/openWindow.js new file mode 100644 index 0000000000000000000000000000000000000000..a7e2b91c046e73ca08872e5056982cb01b312a77 --- /dev/null +++ b/src/utils/openWindow.js @@ -0,0 +1,27 @@ +/** + *Created by jiachenpan on 16/11/29. + * @param {Sting} url + * @param {Sting} title + * @param {Number} w + * @param {Number} h + */ + +export default function openWindow(url, title, w, h) { + // Fixes dual-screen position Most browsers Firefox + const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left; + const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top; + + const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; + const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; + + const left = ((width / 2) - (w / 2)) + dualScreenLeft; + const top = ((height / 2) - (h / 2)) + dualScreenTop; + const newWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left); + + // Puts focus on the newWindow + if (window.focus) { + newWindow.focus(); + } +} + + diff --git a/src/utils/validate.js b/src/utils/validate.js new file mode 100644 index 0000000000000000000000000000000000000000..c293a160caf8c5e3cacdbc00c926298851f15b08 --- /dev/null +++ b/src/utils/validate.js @@ -0,0 +1,41 @@ +/** + * Created by jiachenpan on 16/11/18. + */ + +/* 是å¦æ˜¯å…¬å¸é‚®ç®±*/ +export function isWscnEmail(str) { + const reg = /^[a-z0-9](?:[-_.+]?[a-z0-9]+)*@wallstreetcn\.com$/i; + return reg.test(str); +} + +/* åˆæ³•uri*/ +export function validateURL(textval) { + const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; + return urlregex.test(textval); +} + +/* å°å†™å—æ¯*/ +export function validateLowerCase(str) { + const reg = /^[a-z]+$/; + return reg.test(str); +} + +/* 验è¯key*/ +// export function validateKey(str) { +// var reg = /^[a-z_\-:]+$/; +// return reg.test(str); +// } + +/* 大写å—æ¯*/ +export function validateUpperCase(str) { + const reg = /^[A-Z]+$/; + return reg.test(str); +} + +/* 大å°å†™å—æ¯*/ +export function validatAlphabets(str) { + const reg = /^[A-Za-z]+$/; + return reg.test(str); +} + + diff --git a/src/vendor/Blob.js b/src/vendor/Blob.js new file mode 100644 index 0000000000000000000000000000000000000000..26382ccd2a2bb9446f9510d13f6da6fb2bdb13e9 --- /dev/null +++ b/src/vendor/Blob.js @@ -0,0 +1,179 @@ +/* eslint-disable */ +/* Blob.js + * A Blob implementation. + * 2014-05-27 + * + * By Eli Grey, http://eligrey.com + * By Devin Samarin, https://github.com/eboyjr + * License: X11/MIT + * See LICENSE.md + */ + +/*global self, unescape */ +/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, + plusplus: true */ + +/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ + +(function (view) { + "use strict"; + + view.URL = view.URL || view.webkitURL; + + if (view.Blob && view.URL) { + try { + new Blob; + return; + } catch (e) {} + } + + // Internally we use a BlobBuilder implementation to base Blob off of + // in order to support older browsers that only have BlobBuilder + var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) { + var + get_class = function(object) { + return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; + } + , FakeBlobBuilder = function BlobBuilder() { + this.data = []; + } + , FakeBlob = function Blob(data, type, encoding) { + this.data = data; + this.size = data.length; + this.type = type; + this.encoding = encoding; + } + , FBB_proto = FakeBlobBuilder.prototype + , FB_proto = FakeBlob.prototype + , FileReaderSync = view.FileReaderSync + , FileException = function(type) { + this.code = this[this.name = type]; + } + , file_ex_codes = ( + "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " + + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" + ).split(" ") + , file_ex_code = file_ex_codes.length + , real_URL = view.URL || view.webkitURL || view + , real_create_object_URL = real_URL.createObjectURL + , real_revoke_object_URL = real_URL.revokeObjectURL + , URL = real_URL + , btoa = view.btoa + , atob = view.atob + + , ArrayBuffer = view.ArrayBuffer + , Uint8Array = view.Uint8Array + ; + FakeBlob.fake = FB_proto.fake = true; + while (file_ex_code--) { + FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; + } + if (!real_URL.createObjectURL) { + URL = view.URL = {}; + } + URL.createObjectURL = function(blob) { + var + type = blob.type + , data_URI_header + ; + if (type === null) { + type = "application/octet-stream"; + } + if (blob instanceof FakeBlob) { + data_URI_header = "data:" + type; + if (blob.encoding === "base64") { + return data_URI_header + ";base64," + blob.data; + } else if (blob.encoding === "URI") { + return data_URI_header + "," + decodeURIComponent(blob.data); + } if (btoa) { + return data_URI_header + ";base64," + btoa(blob.data); + } else { + return data_URI_header + "," + encodeURIComponent(blob.data); + } + } else if (real_create_object_URL) { + return real_create_object_URL.call(real_URL, blob); + } + }; + URL.revokeObjectURL = function(object_URL) { + if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { + real_revoke_object_URL.call(real_URL, object_URL); + } + }; + FBB_proto.append = function(data/*, endings*/) { + var bb = this.data; + // decode data to a binary string + if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { + var + str = "" + , buf = new Uint8Array(data) + , i = 0 + , buf_len = buf.length + ; + for (; i < buf_len; i++) { + str += String.fromCharCode(buf[i]); + } + bb.push(str); + } else if (get_class(data) === "Blob" || get_class(data) === "File") { + if (FileReaderSync) { + var fr = new FileReaderSync; + bb.push(fr.readAsBinaryString(data)); + } else { + // async FileReader won't work as BlobBuilder is sync + throw new FileException("NOT_READABLE_ERR"); + } + } else if (data instanceof FakeBlob) { + if (data.encoding === "base64" && atob) { + bb.push(atob(data.data)); + } else if (data.encoding === "URI") { + bb.push(decodeURIComponent(data.data)); + } else if (data.encoding === "raw") { + bb.push(data.data); + } + } else { + if (typeof data !== "string") { + data += ""; // convert unsupported types to strings + } + // decode UTF-16 to binary string + bb.push(unescape(encodeURIComponent(data))); + } + }; + FBB_proto.getBlob = function(type) { + if (!arguments.length) { + type = null; + } + return new FakeBlob(this.data.join(""), type, "raw"); + }; + FBB_proto.toString = function() { + return "[object BlobBuilder]"; + }; + FB_proto.slice = function(start, end, type) { + var args = arguments.length; + if (args < 3) { + type = null; + } + return new FakeBlob( + this.data.slice(start, args > 1 ? end : this.data.length) + , type + , this.encoding + ); + }; + FB_proto.toString = function() { + return "[object Blob]"; + }; + FB_proto.close = function() { + this.size = this.data.length = 0; + }; + return FakeBlobBuilder; + }(view)); + + view.Blob = function Blob(blobParts, options) { + var type = options ? (options.type || "") : ""; + var builder = new BlobBuilder(); + if (blobParts) { + for (var i = 0, len = blobParts.length; i < len; i++) { + builder.append(blobParts[i]); + } + } + return builder.getBlob(type); + }; +}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this)); diff --git a/src/vendor/Export2Excel.js b/src/vendor/Export2Excel.js new file mode 100644 index 0000000000000000000000000000000000000000..a121a33a1ded27f0de1510f7c85797ee640a3cf1 --- /dev/null +++ b/src/vendor/Export2Excel.js @@ -0,0 +1,141 @@ +/* eslint-disable */ +require('script-loader!file-saver'); +require('script-loader!vendor/Blob'); +require('script-loader!xlsx/dist/xlsx.core.min'); +function generateArray(table) { + var out = []; + var rows = table.querySelectorAll('tr'); + var ranges = []; + for (var R = 0; R < rows.length; ++R) { + var outRow = []; + var row = rows[R]; + var columns = row.querySelectorAll('td'); + for (var C = 0; C < columns.length; ++C) { + var cell = columns[C]; + var colspan = cell.getAttribute('colspan'); + var rowspan = cell.getAttribute('rowspan'); + var cellValue = cell.innerText; + if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue; + + //Skip ranges + ranges.forEach(function (range) { + if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { + for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null); + } + }); + + //Handle Row Span + if (rowspan || colspan) { + rowspan = rowspan || 1; + colspan = colspan || 1; + ranges.push({s: {r: R, c: outRow.length}, e: {r: R + rowspan - 1, c: outRow.length + colspan - 1}}); + } + ; + + //Handle Value + outRow.push(cellValue !== "" ? cellValue : null); + + //Handle Colspan + if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null); + } + out.push(outRow); + } + return [out, ranges]; +}; + +function datenum(v, date1904) { + if (date1904) v += 1462; + var epoch = Date.parse(v); + return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); +} + +function sheet_from_array_of_arrays(data, opts) { + var ws = {}; + var range = {s: {c: 10000000, r: 10000000}, e: {c: 0, r: 0}}; + for (var R = 0; R != data.length; ++R) { + for (var C = 0; C != data[R].length; ++C) { + if (range.s.r > R) range.s.r = R; + if (range.s.c > C) range.s.c = C; + if (range.e.r < R) range.e.r = R; + if (range.e.c < C) range.e.c = C; + var cell = {v: data[R][C]}; + if (cell.v == null) continue; + var cell_ref = XLSX.utils.encode_cell({c: C, r: R}); + + if (typeof cell.v === 'number') cell.t = 'n'; + else if (typeof cell.v === 'boolean') cell.t = 'b'; + else if (cell.v instanceof Date) { + cell.t = 'n'; + cell.z = XLSX.SSF._table[14]; + cell.v = datenum(cell.v); + } + else cell.t = 's'; + + ws[cell_ref] = cell; + } + } + if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); + return ws; +} + +function Workbook() { + if (!(this instanceof Workbook)) return new Workbook(); + this.SheetNames = []; + this.Sheets = {}; +} + +function s2ab(s) { + var buf = new ArrayBuffer(s.length); + var view = new Uint8Array(buf); + for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; + return buf; +} + +export function export_table_to_excel(id) { + var theTable = document.getElementById(id); + console.log('a') + var oo = generateArray(theTable); + var ranges = oo[1]; + + /* original data */ + var data = oo[0]; + var ws_name = "SheetJS"; + console.log(data); + + var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); + + /* add ranges to worksheet */ + // ws['!cols'] = ['apple', 'banan']; + ws['!merges'] = ranges; + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name); + wb.Sheets[ws_name] = ws; + + var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'}); + + saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), "test.xlsx") +} + +function formatJson(jsonData) { + console.log(jsonData) +} +export function export_json_to_excel(th, jsonData, defaultTitle) { + + /* original data */ + + var data = jsonData; + data.unshift(th); + var ws_name = "SheetJS"; + + var wb = new Workbook(), ws = sheet_from_array_of_arrays(data); + + + /* add worksheet to workbook */ + wb.SheetNames.push(ws_name); + wb.Sheets[ws_name] = ws; + + var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'}); + var title = defaultTitle || '列表' + saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx") +} diff --git a/src/views/admin/createUser.vue b/src/views/admin/createUser.vue new file mode 100644 index 0000000000000000000000000000000000000000..d7de7537513fac7e35621d10dfa4ed40668a1580 --- /dev/null +++ b/src/views/admin/createUser.vue @@ -0,0 +1,87 @@ +<template> + <div class="app-container"> + <h1 class="page-heading"> + 创建åŽå°ç”¨æˆ· + </h1> + <el-form ref="createForm" :rules="createRules" label-position="left" style='width:80%' :model="form" label-width="100px"> + <el-form-item label="用户邮箱" prop="email"> + <el-input v-model="form.email" placeholder="å…¬å¸é‚®ç®±"></el-input> + </el-form-item> + <el-form-item label="æƒé™é€‰æ‹©" > + <el-select style="width: 100%" v-model="form.role" multiple placeholder="请选择"> + <el-option + v-for="item in roleList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" :loading="loading" @click.native.prevent="onSubmit">ç«‹å³åˆ›å»º</el-button> + <el-button> + <router-link class="normal_link" to="/index"> + å–消 + </router-link> + </el-button> + </el-form-item> + </el-form> + </div> +</template> +<script> + import { createNewUser, getRoleList } from 'api/adminUser'; + import { isWscnEmail } from 'utils/validate'; + + export default{ + name: 'createUser', + data() { + const validateEmail = (rule, value, callback) => { + if (!isWscnEmail(value)) { + callback(new Error('邮箱错误')); + } else { + callback(); + } + }; + return { + roleList: [], + loading: false, + form: { + email: '', + role: '' + }, + createRules: { + email: [ + { required: true, message: '请输入邮箱', trigger: 'blur' }, + { validator: validateEmail } + ] + } + }; + }, + methods: { + onSubmit() { + this.$refs.createForm.validate(valid => { + if (valid) { + this.loading = true; + const data = { + email: this.form.email, + roles: this.form.role + }; + createNewUser(data).then(() => { + this.$message.success('创建æˆåŠŸ'); + }); + } else { + this.$message.error('error submit!!'); + } + this.loading = false; + }); + } + }, + created() { + getRoleList().then(response => { + const roleMap = response.data.role_map; + const keyArr = Object.keys(roleMap); + this.roleList = keyArr.map(v => ({ value: v, label: roleMap[v] })); + }); + } + }; +</script> diff --git a/src/views/admin/profile.vue b/src/views/admin/profile.vue new file mode 100644 index 0000000000000000000000000000000000000000..fa80c9022083531ee1098206439726fc443f726a --- /dev/null +++ b/src/views/admin/profile.vue @@ -0,0 +1,404 @@ +<template> + <div class="profile-container clearfix"> + <div style="position: relative;margin-left: 30px;"> + <PanThumb :image="avatar"> ä½ çš„æƒé™: + <span class="pan-info-roles" v-for="item in roles">{{item}}</span> + </PanThumb> + <el-button type="primary" icon="upload" style="position: absolute;bottom: 15px;margin-left: 40px;" + @click="handleImagecropper">ä¿®æ”¹å¤´åƒ + </el-button> + </div> + <!--popover--> + <el-popover + ref="popoverWX" + placement="top" + width="160" + trigger="click" + v-model="popoverVisibleWX"> + <p>ä½ ç¡®å®šè¦è§£ç»‘么?</p> + <div style="text-align: right; margin: 0"> + <el-button size="mini" type="text" @click="popoverVisibleWX = false">å–消</el-button> + <el-button type="primary" size="mini" @click="handleUnbind('wechat')">确定</el-button> + </div> + </el-popover> + <el-popover + ref="popoverQQ" + placement="top" + width="160" + trigger="click" + v-model="popoverVisibleQQ"> + <p>ä½ ç¡®å®šè¦è§£ç»‘么?</p> + <div style="text-align: right; margin: 0"> + <el-button size="mini" type="text" @click="popoverVisibleQQ = false">å–消</el-button> + <el-button type="primary" size="mini" @click="handleUnbind('tencent')">确定</el-button> + </div> + </el-popover> + <!--popover End--> + + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span style="line-height: 36px;">个人资料</span> + </div> + <div class="box-item"> + <span class="field-label">昵称</span> + <div class="field-content"> + {{name}} + <el-button class="edit-btn" @click="handleEditName" type="primary" icon="edit" + size="small"></el-button> + </div> + </div> + + <div class="box-item"> + <span class="field-label">简介</span> + <div class="field-content"> + {{introduction.length==0?'未填写':introduction}} + <el-button class="edit-btn" @click="handleIntroductionName" type="primary" icon="edit" + size="small"></el-button> + </div> + </div> + + <div class="box-item" style="margin-bottom: 10px;"> + <span class="field-label">密ç </span> + <div class="field-content"> + <el-button type="primary" @click="resetPSWdialogVisible=true">修改密ç </el-button> + </div> + </div> + + <div class="box-item" style="margin-top: 5px;"> + <div class="field-content"> + <span class="wx-svg-container"><wscn-icon-svg icon-class="weixin" class="icon"/></span> + <el-button class="unbind-btn" v-popover:popoverWX type="danger">解绑微信</el-button> + </div> + </div> + + <div class="box-item"> + <div class="field-content"> + <span class="qq-svg-container"><wscn-icon-svg icon-class="QQ" class="icon"/></span> + <el-button class="unbind-btn" v-popover:popoverQQ style="padding: 10px 18px" type="danger"> + 解绑QQ + </el-button> + </div> + </div> + </el-card> + + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span style="line-height: 36px;">å好设置</span> + <el-button @click="updateSetting" style="float: right;margin-top: 5px;" size="small" type="success"> + æ›´æ–°å好 + </el-button> + </div> + <div> + <div class="box-item"> + <span class="field-label">æ–‡ç« å¹³å°é»˜è®¤é¡¹é€‰æ‹©:</span> + <el-checkbox-group v-model="articlePlatform"> + <el-checkbox label="wscn-platform">è§é—»</el-checkbox> + <el-checkbox label="gold-platform">黄金头æ¡</el-checkbox> + <el-checkbox label="weex-platform">WEEX</el-checkbox> + </el-checkbox-group> + <span class="field-label">使用自定义主题:</span> + <el-switch + v-model="theme" + on-text="" + off-text=""> + </el-switch> + </div> + </div> + </el-card> + + + <ImageCropper field="img" + :width="300" + :height="300" + url="/upload" + @crop-upload-success="cropSuccess" + :key="imagecropperKey" + v-show="imagecropperShow"></ImageCropper> + + <el-dialog title="昵称" v-model="nameDialogFormVisible"> + <el-form label-position="left" label-width="50px"> + <el-form-item label="昵称" style="width: 300px;"> + <input class="input" ref="nameInput" :value="name" autocomplete="off" :maxlength=10> + <span>(最多填写å个å—符)</span> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="nameDialogFormVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="setName">ç¡® 定</el-button> + </div> + </el-dialog> + + <el-dialog title="简介" v-model="introductionDialogFormVisible"> + <el-form label-position="left" label-width="50px"> + <el-form-item label="简介" style="width: 500px;"> + <textarea :row=3 class="textarea" ref="introductionInput" :value="introduction"></textarea> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="introductionDialogFormVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="setIntroduction">ç¡® 定</el-button> + </div> + </el-dialog> + + <el-dialog title="æ示" v-model="resetPSWdialogVisible" size="tiny"> + <span>ä½ ç¡®å®šè¦é‡è®¾å¯†ç 么? <strong>     ( 注:é‡è®¾å¯†ç 将会登出,请注æ„!!! )</strong></span> + <span slot="footer" class="dialog-footer"> + <el-button @click="resetPSWdialogVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="resetPSW">ç¡® 定</el-button> + </span> + </el-dialog> + + </div> +</template> +<script> + import { mapGetters } from 'vuex'; + import { updateInfo, unbind, updateSetting } from 'api/adminUser'; + import ImageCropper from 'components/ImageCropper'; + import PanThumb from 'components/PanThumb'; + import { toggleClass } from 'utils' + + export default{ + components: { ImageCropper, PanThumb }, + data() { + return { + nameDialogFormVisible: false, + introductionDialogFormVisible: false, + resetPSWdialogVisible: false, + popoverVisibleQQ: false, + popoverVisibleWX: false, + imagecropperShow: false, + imagecropperKey: 0, + articlePlatform: [], + theme: false + } + }, + created() { + if (this.setting.articlePlatform) { + this.articlePlatform = this.setting.articlePlatform + } + }, + computed: { + ...mapGetters([ + 'name', + 'avatar', + 'email', + 'introduction', + 'roles', + 'uid', + 'setting' + ]) + }, + watch: { + theme() { + toggleClass(document.body, 'custom-theme') + // this.$store.dispatch('setTheme', value); + } + }, + methods: { + resetPSW() { + this.$store.dispatch('LogOut').then(() => { + this.$router.push({ path: '/sendpwd' }) + }); + }, + toggleResetDialog(state) { + this.resetDialogVisible = state; + }, + handleEditName() { + this.nameDialogFormVisible = true; + }, + handleIntroductionName() { + this.introductionDialogFormVisible = true; + }, + setName() { + const displayName = this.$refs.nameInput.value; + const data = { + display_name: displayName, + uid: this.uid + }; + updateInfo(data).then(() => { + this.$store.commit('SET_NAME', displayName); + this.$notify({ + title: 'æˆåŠŸ', + message: '昵称修改æˆåŠŸ', + type: 'success' + }); + }); + this.nameDialogFormVisible = false; + }, + setIntroduction() { + const introduction = this.$refs.introductionInput.value; + const data = { + introduction, + uid: this.uid + }; + updateInfo(data).then(() => { + this.$store.commit('SET_INTRODUCTION', introduction); + this.$notify({ + title: 'æˆåŠŸ', + message: '简介修改æˆåŠŸ', + type: 'success' + }); + }); + this.introductionDialogFormVisible = false; + }, + handleUnbind(unbindType) { + const data = { + unbind_type: unbindType + }; + unbind(data).then(() => { + this.$notify({ + title: 'æˆåŠŸ', + message: '解绑æˆåŠŸ,å³å°†ç™»å‡º', + type: 'success' + }); + setTimeout(() => { + this.$store.dispatch('LogOut').then(() => { + this.$router.push({ path: '/login' }) + }); + }, 3000) + }); + + this.popoverVisibleQQ = false; + this.popoverVisibleWX = false; + }, + handleImagecropper() { + this.imagecropperShow = true; + this.imagecropperKey = this.imagecropperKey + 1; + }, + cropSuccess(url) { + this.imagecropperShow = false; + const data = { + image: url, + uid: this.uid + }; + updateInfo(data).then(() => { + this.$store.commit('SET_AVATAR', url); + this.$notify({ + title: 'æˆåŠŸ', + message: '头åƒä¿®æ”¹æˆåŠŸ', + type: 'success' + }); + }); + }, + updateSetting() { + const obj = Object.assign(this.setting, { articlePlatform: this.articlePlatform }); + updateSetting({ setting: JSON.stringify(obj) }).then(() => { + this.$store.commit('SET_SETTING', this.setting); + this.$notify({ + title: 'æˆåŠŸ', + message: 'æ›´æ–°å好æˆåŠŸ', + type: 'success' + }); + }); + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .input { + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-radius: 4px; + border: 1px solid #bfcbd9; + color: #1f2d3d; + display: block; + font-size: inherit; + height: 36px; + line-height: 1; + padding: 3px 10px; + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100%; + } + + .textarea { + height: 90px; + display: block; + resize: vertical; + padding: 5px 7px; + line-height: 1.5; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #1f2d3d; + background-color: #fff; + background-image: none; + border: 1px solid #bfcbd9; + border-radius: 4px; + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + } + + .icon { + color: #fff; + font-size: 30px; + margin-top: 6px; + } + + .wx-svg-container, .qq-svg-container { + display: inline-block; + width: 40px; + height: 40px; + line-height: 40px; + text-align: center; + padding-top: 1px; + border-radius: 4px; + margin-bottom: 10px; + margin-right: 55px; + } + + .wx-svg-container { + background-color: #8dc349; + } + + .qq-svg-container { + background-color: #6BA2D6; + } + + .unbind-btn { + position: absolute; + right: -60px; + top: 2px; + } + + .profile-container { + padding: 20px; + .box-card { + width: 400px; + margin: 30px; + float: left; + .field-label { + font-size: 16px; + font-weight: 700; + line-height: 36px; + color: #333; + padding-right: 30px; + } + .box-item { + .field-content { + display: inline-block; + position: relative; + cursor: pointer; + .edit-btn { + display: none; + position: absolute; + right: -50px; + top: -5px; + } + } + &:hover { + .edit-btn { + display: block; + } + } + } + } + } + + .pan-info-roles { + font-size: 12px; + font-weight: 700; + color: #333; + display: block; + } +</style> diff --git a/src/views/admin/quicklycreate.vue b/src/views/admin/quicklycreate.vue new file mode 100644 index 0000000000000000000000000000000000000000..0b39be4c0d6cb54f037faf58c5530bfc7b8cdc46 --- /dev/null +++ b/src/views/admin/quicklycreate.vue @@ -0,0 +1,92 @@ +<template> + <div class="app-container quicklyCreateUser-container"> + <el-form ref="form" :rules="rules" :model="form" label-position="left" label-width="60px"> + <el-card style=" margin-top: 50px;width: 600px;"> + <div slot="header" class="clearfix"> + <el-row :gutter="20"> + <el-col :span="20"> + <el-form-item label="昵称" prop="display_name"> + <el-input v-model="form.display_name"></el-input> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-button type="success" @click="onSubmit">ç«‹å³åˆ›å»º</el-button> + </el-col> + </el-row> + </div> + <el-row> + <el-col :span="12"> + <el-button style="height: 150px;width: 150px;" @click="handleImagecropper" type="primary">ä¸Šä¼ å¤´åƒ + </el-button> + </el-col> + <el-col :span="12"> + <img style=" float:right;width: 150px;height: 150px;border-radius: 50%;margin-left: 50px;" + :src="form.image"> + </el-col> + </el-row> + </el-card> + </el-form> + + + <el-tooltip style="position: absolute;margin-left: 750px;top: 380px" placement="top"> + <el-button>Tooltip</el-button> + <div slot="content">昵称为必填项<br/><br/>一键创建åªèƒ½åˆ›å»ºåŽå°è™šæ‹Ÿè´¦å·<br/><br/>没有任何实际æ“作能力</div> + </el-tooltip> + + <ImageCropper field="img" + :width="300" + :height="300" + url="/upload" + @crop-upload-success="cropSuccess" + :key="imagecropperKey" + v-show="imagecropperShow"> + + </ImageCropper> + </div> +</template> +<script> + import { createNewUser } from 'api/adminUser'; + import ImageCropper from 'components/ImageCropper'; + + export default{ + name: 'quicklyCreateUser', + components: { ImageCropper }, + data() { + return { + form: { + display_name: '', + image: '', + role: ['virtual_editor'] + }, + imagecropperShow: false, + imagecropperKey: 0, + rules: { + display_name: [{ required: true, message: '昵称必填', trigger: 'blur' }] + } + } + }, + methods: { + onSubmit() { + this.$refs.form.validate(valid => { + if (valid) { + createNewUser(this.form).then(() => { + this.$message.success('创建æˆåŠŸ') + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }, + handleImagecropper() { + this.imagecropperShow = true; + this.imagecropperKey = this.imagecropperKey + 1; + }, + cropSuccess(url) { + this.imagecropperShow = false; + this.form.image = url + } + } + } +</script> + diff --git a/src/views/admin/usersList.vue b/src/views/admin/usersList.vue new file mode 100644 index 0000000000000000000000000000000000000000..efbb3066c8f9225946e5ab5f385215b26069c159 --- /dev/null +++ b/src/views/admin/usersList.vue @@ -0,0 +1,241 @@ +<template> + <div class="app-container adminUsers-list-container"> + <div class="filter-container"> + <el-input @keyup.enter.native="handleFilter" style="width:135px;" class="filter-item" placeholder="ID" type="number" v-model="listQuery.uid"> + </el-input> + + <el-input style="width:135px;" class="filter-item" placeholder="Name" @keyup.enter.native="handleFilter" v-model="listQuery.display_name"> + </el-input> + + <el-input class="filter-item" style="width:300px;display: inline-table" placeholder="email" @keyup.enter.native="handleFilter" + v-model="listQuery.email"> + <template slot="append">@wallstreetcn.com</template> + </el-input> + </el-input> + + <el-select style="width: 250px" class="filter-item" v-model="listQuery.role" clearable placeholder="æƒé™"> + <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + + <el-button class="filter-item" type="primary" icon="search" @click="handleFilter"> + æœç´¢ + </el-button> + <el-button class="filter-item" type="danger" @click="resetFilter">é‡ç½®ç›é€‰é¡¹</el-button> + </div> + + <el-table :data="list" v-loading.body="listLoading" border fit highlight-current-row> + <el-table-column label="ID" width="130"> + <template scope="scope"> + <span>{{scope.row.uid}}</span> + </template> + </el-table-column> + + <el-table-column label="Name"> + <template scope="scope"> + <span>{{scope.row.display_name}}</span> + </template> + </el-table-column> + + <el-table-column label="Email"> + <template scope="scope"> + <span>{{scope.row.email}}</span> + </template> + </el-table-column> + + <el-table-column label="Role"> + <template scope="scope"> + <el-tag style="margin-right: 5px;" v-for='item in scope.row.roles' :key='item+scope.row.uid' type="primary"> + {{item}} + </el-tag> + </template> + </el-table-column> + + <el-table-column label="æ“作" width="170"> + <template scope="scope"> + <el-button size="small" type="success" @click="handleEdit(scope.row)">编辑æƒé™</el-button> + <el-button size="small" v-if='scope.row.roles.indexOf("virtual_editor")>=0||hasRoleEdit' type="primary" @click="handleInfo(scope.row)">修改</el-button> + </template> + </el-table-column> + </el-table> + + <div v-show="!listLoading" class="pagination-container"> + <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.page" :page-sizes="[10,20,30, 50]" + :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total"> + </el-pagination> + </div> + + <el-dialog title="编辑" v-model="dialogFormVisible" size='small'> + <el-form :model="tempForm" label-position="left" label-width="70px"> + <el-form-item label="æƒé™"> + <el-select style="width: 100%" v-model="tempForm.roles" multiple placeholder="请选择"> + <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="updateUser">ç¡® 定</el-button> + </div> + </el-dialog> + + <el-dialog title="编辑简介" v-model="dialogInfoVisible"> + <el-form :model="infoForm"> + <el-form-item label="昵称"> + <el-input v-model="infoForm.display_name"></el-input> + </el-form-item> + <el-form-item label="简介"> + <el-input type="textarea" :autosize="{ minRows: 2}" v-model="infoForm.introduction"></el-input> + </el-form-item> + <el-form-item label="头åƒ"> + + </el-form-item> + <div style='width:200px;height:200px;'> + <singleImageUpload2 v-model="infoForm.image"></singleImageUpload2> + </div> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogInfoVisible = false">å– æ¶ˆ</el-button> + <el-button type="primary" @click="submitInfo">ç¡® 定</el-button> + </div> + </el-dialog> + </div> +</template> + + +<script> + import { mapGetters } from 'vuex'; + import { getRoleList, updateInfo } from 'api/adminUser'; + import { getUserList } from 'api/remoteSearch'; + import { objectMerge } from 'utils'; + import singleImageUpload2 from 'components/Upload/singleImage2'; + + export default { + name: 'adminUsersList', + components: { singleImageUpload2 }, + data() { + return { + list: null, + total: null, + listLoading: true, + listQuery: { + page: 1, + limit: 20, + role: '', + uid: undefined, + display_name: '' + }, + roleOptions: [], + dialogFormVisible: false, + tempForm: { + uid: null, + roles: [] + }, + dialogInfoVisible: false, + infoForm: { + uid: null, + image: '', + display_name: '', + introduction: '' + } + } + }, + computed: { + ...mapGetters([ + 'roles' + ]), + hasRoleEdit() { + if (this.roles.indexOf('admin') >= 0) { + return true; + } else { + return false; + } + } + }, + created() { + this.getList(); + this.getAdminRoleList(); + }, + methods: { + getList() { + getUserList(this.listQuery).then(response => { + const data = response.data; + this.list = data.items; + this.total = data.count; + this.listLoading = false; + }) + }, + resetFilter() { + this.listQuery = { + page: 1, + limit: 20, + role: '', + uid: undefined, + display_name: '' + } + this.getList(); + }, + handleSizeChange(val) { + this.listQuery.limit = val; + this.getList(); + }, + handleCurrentChange(val) { + this.listQuery.page = val; + this.getList(); + }, + handleFilter() { + this.getList(); + }, + getAdminRoleList() { + getRoleList().then(response => { + const roleMap = response.data.role_map; + const keyArr = Object.keys(roleMap); + this.roleOptions = keyArr.map(v => ({ value: v, label: roleMap[v] })); + }) + }, + handleEdit(row) { + this.dialogFormVisible = true; + objectMerge(this.tempForm, row); + }, + updateUser() { + updateInfo(this.tempForm).then(() => { + this.$notify({ + title: 'æˆåŠŸ', + message: '修改æˆåŠŸ', + type: 'success' + }); + for (const item of this.list) { + if (item.uid === this.tempForm.uid) { + const index = this.list.indexOf(item); + this.list[index] = objectMerge(this.list[index], this.tempForm); + break + } + } + this.dialogFormVisible = false; + }); + }, + handleInfo(row) { + this.dialogInfoVisible = true; + objectMerge(this.infoForm, row); + }, + submitInfo() { + updateInfo(this.infoForm).then(() => { + this.$notify({ + title: 'æˆåŠŸ', + message: '修改æˆåŠŸ', + type: 'success' + }); + for (const item of this.list) { + if (item.uid === this.infoForm.uid) { + const index = this.list.indexOf(item); + this.list[index] = objectMerge(this.list[index], this.infoForm); + break + } + } + this.dialogInfoVisible = false; + }); + } + } + } +</script> diff --git a/src/views/components/404.vue b/src/views/components/404.vue new file mode 100644 index 0000000000000000000000000000000000000000..d2b3ce3ceaabb3e48a710d417fa0ad2c0a1f4d32 --- /dev/null +++ b/src/views/components/404.vue @@ -0,0 +1,61 @@ +<template> + <div class="errorpage-container"> 404 + <splitPane v-on:resize="resize" split="vertical"> + <template slot="paneL"> + <div class="left-container"></div> + </template> + <template slot="paneR"> + <splitPane split="horizontal"> + <template slot="paneL"> + <div class="top-container"></div> + </template> + <template slot="paneR"> + <div class="bottom-container"> + </div> + </template> + </splitPane> + </template> + </splitPane> + </div> +</template> + + +<script> + import splitPane from 'components/SplitPane/SplitPane' + export default { + components: { splitPane }, + methods: { + resize() { + console.log('resize') + } + } + }; +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .errorpage-container{ + position: relative; + height: 100vh; + } + .left-container { + background-color: #F38181; + height:100%; + } + + .right-container { + background-color: #FCE38A; + height: 200px; + } + + .top-container { + background-color: #FCE38A; + width: 100%; + height: 100%; + } + + .bottom-container { + width: 100%; + background-color: #95E1D3; + height: 100%; + + } +</style> diff --git a/src/views/components/markdown.vue b/src/views/components/markdown.vue new file mode 100644 index 0000000000000000000000000000000000000000..3bf5e1accb457f1b27e6532e165ad9175d78944a --- /dev/null +++ b/src/views/components/markdown.vue @@ -0,0 +1,22 @@ +<template> + <div class="components-container"> + <code>å…¬å¸åšçš„åŽå°ä¸»è¦æ˜¯ä¸€ä¸ªcms系统,公å¸ä¹Ÿæ˜¯å·²è‡ªåª’ä½“ä¸ºæ ¸å¿ƒçš„ï¼Œæ‰€ä»¥å¯Œæ–‡æœ¬æ˜¯åŽå°å¾ˆæ ¸å¿ƒçš„功能。在选择富文本的过程ä¸ä¹Ÿèµ°äº†ä¸å°‘的弯路,市é¢ä¸Šå¸¸è§çš„富文本都基本用过了,最终选择了tinymce</code> + <div class="editor-container"> + <MdEditor id='contentEditor' ref="contentEditor" v-model='content' :height="150"></MdEditor> + </div> + </div> +</template> +<script> + import MdEditor from 'components/MdEditor'; + + export default { + components: { MdEditor }, + data() { + return { + content: 'Simplemde' + } + } + }; +</script> + + diff --git a/src/views/components/tinymce.vue b/src/views/components/tinymce.vue new file mode 100644 index 0000000000000000000000000000000000000000..a88bd91cbe52faed493313318f4dd5f8a80aac28 --- /dev/null +++ b/src/views/components/tinymce.vue @@ -0,0 +1,28 @@ +<template> + <div class="components-container"> + <code>å…¬å¸åšçš„åŽå°ä¸»è¦æ˜¯ä¸€ä¸ªcms系统,公å¸ä¹Ÿæ˜¯å·²è‡ªåª’ä½“ä¸ºæ ¸å¿ƒçš„ï¼Œæ‰€ä»¥å¯Œæ–‡æœ¬æ˜¯åŽå°å¾ˆæ ¸å¿ƒçš„功能。在选择富文本的过程ä¸ä¹Ÿèµ°äº†ä¸å°‘的弯路,市é¢ä¸Šå¸¸è§çš„富文本都基本用过了,最终选择了tinymce</code> + <div class="editor-container"> + <Tinymce :height=200 ref="editor" v-model="content"></Tinymce> + </div> + <!--<div class='editor-content'> +{{content}} + </div>--> + </div> +</template> +<script> + import Tinymce from 'components/Tinymce'; + + export default { + components: { Tinymce }, + data() { + return { + content: 'Tinymce' + } + }, + methods: { + + } + }; +</script> + + diff --git a/src/views/dashboard/default/index.vue b/src/views/dashboard/default/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..745afa99f4d870770c6411efb06bc76cbb20bcf0 --- /dev/null +++ b/src/views/dashboard/default/index.vue @@ -0,0 +1,75 @@ +<template> + <div class="dashboard-editor-container"> + <div class=" clearfix"> + <PanThumb style="float: left" :image="avatar"> ä½ çš„æƒé™: + <span class="pan-info-roles" v-for="item in roles">{{item}}</span> + </PanThumb> + <div class="info-container"> + <span class="display_name">{{name}}</span> + <span style='font-size:20px;padding-top:20px;display:inline-block;'>èµ¶ç´§æŠŠä½ ä»¬æƒ³è¦çš„å¿«æ·é”®æŠ¥ç»™äº§å“锦鲤!</span> + </div> + </div> + <div> + <img class='emptyGif' :src="emptyGif" > + </div> + + </div> +</template> + +<script> + import { mapGetters } from 'vuex'; + import PanThumb from 'components/PanThumb'; + import emptyGif from 'assets/gifs/business_fella.gif'; + export default { + name: 'dashboard-default', + components: { PanThumb }, + data() { + return { + emptyGif + } + }, + computed: { + ...mapGetters([ + 'name', + 'avatar', + 'email', + 'uid', + 'introduction', + 'roles' + ]) + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .emptyGif { + display: block; + width: 45%; + margin: 0 auto; + } + .dashboard-editor-container { + background-color: #e3e3e3; + min-height: 100vh; + margin-top: -50px; + padding: 100px 60px 0px; + .pan-info-roles { + font-size: 12px; + font-weight: 700; + color: #333; + display: block; + } + .info-container { + position: relative; + margin-left: 190px; + height: 150px; + line-height: 200px; + .display_name { + font-size: 48px; + line-height: 48px; + color: #212121; + position: absolute; + top: 25px; + } + } + } +</style> diff --git a/src/views/dashboard/editor/articlesChart.vue b/src/views/dashboard/editor/articlesChart.vue new file mode 100644 index 0000000000000000000000000000000000000000..a62e19620ae77f50b8158f16cc80a4281682012b --- /dev/null +++ b/src/views/dashboard/editor/articlesChart.vue @@ -0,0 +1,34 @@ +<template> + <div class="articlesChart-container"> + <span class="articlesChart-container-title">æ¯å¤©æ’¸æ–‡</span> + <line-chart :listData='listData' ></line-chart> + </div> +</template> +<script> + import LineChart from 'components/Charts/line'; + export default { + name: 'articlesChart', + components: { LineChart }, + props: { + listData: { + type: Array, + default: [], + require: true + } + }, + data() { + return {} + } + } +</script> +<style> + .articlesChart-container { + width: 100%; + } + .articlesChart-container-title { + color: #7F8C8D; + font-size: 16px; + display: inline-block; + margin-top: 10px; + } +</style> diff --git a/src/views/dashboard/editor/index.vue b/src/views/dashboard/editor/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..ad89ef25ef8ff76a66899d01c0582830e195ba21 --- /dev/null +++ b/src/views/dashboard/editor/index.vue @@ -0,0 +1,284 @@ +<template> + <div class="dashboard-editor-container"> + <div class=" clearfix"> + <PanThumb style="float: left" :image="avatar"> ä½ çš„æƒé™: + <span class="pan-info-roles" v-for="item in roles">{{item}}</span> + </PanThumb> + <div class="info-container"> + <span class="display_name">{{name}}</span> + <div class="info-wrapper"> + <router-link class="info-item" :to="'/article/wscnlist?uid='+uid"> + <span class="info-item-num">{{statisticsData.article_count | toThousandslsFilter}}</span> + <span class="info-item-text">æ–‡ç« </span> + <wscn-icon-svg icon-class="a" class="dashboard-editor-icon"/> + </router-link> + <div class="info-item" style="cursor: auto"> + <span class="info-item-num"> {{statisticsData.pageviews_count | toThousandslsFilter}}</span> + <span class="info-item-text">æµè§ˆé‡</span> + <wscn-icon-svg icon-class="b" class="dashboard-editor-icon"/> + </div> + <router-link class="info-item" :to="'/comment/commentslist?res_author_id='+uid"> + <span class="info-item-num">{{statisticsData.comment_count | toThousandslsFilter}}</span> + <span class="info-item-text">评论</span> + <wscn-icon-svg icon-class="c" class="dashboard-editor-icon"/> + </router-link> + </div> + </div> + </div> + + <div class="btn-group"> + <router-link class="pan-btn blue-btn" to="/article/create">å‘è¡¨æ–‡ç« </router-link> + <router-link class="pan-btn light-blue-btn" to="/livenews/create">å‘布快讯</router-link> + <router-link class="pan-btn red-btn" to="/push/create">推é€</router-link> + <router-link class="pan-btn pink-btn" to="/comment/commentslist">评论管ç†</router-link> + <router-link class="pan-btn green-btn" to="/article/wscnlist">æ–‡ç« åˆ—è¡¨</router-link> + <router-link class="pan-btn tiffany-btn" to="/livenews/list">实时列表</router-link> + </div> + + <div class="clearfix main-dashboard-container"> + <div class="chart-container"> + <MonthKpi style="border-bottom: 1px solid #DEE1E2;" + :articlesComplete='statisticsData.month_article_count'></MonthKpi> + <ArticlesChart :listData='statisticsData.week_article'></ArticlesChart> + </div> + <div class="recent-articles-container"> + <div class="recent-articles-title">最近撸了</div> + <div class="recent-articles-wrapper"> + <template v-if="recentArticles.length!=0"> + <div class="recent-articles-item" v-for="item in recentArticles"> + <span class="recent-articles-status">{{item.status | statusFilter}}</span> + <router-link class="recent-articles-content" :to="'/article/edit/'+item.id"> + <span>{{item.title}}</span> + </router-link> + <span class="recent-articles-time"><i style="padding-right: 4px;" class="el-icon-time"></i>{{item.display_time | parseTime('{m}-{d} {h}:{i}')}}</span> + </div> + </template> + <template v-else> + <div class="recent-articles-emptyTitle">ä½ å¤ªæ‡’äº†æœ€è¿‘éƒ½æ²¡æœ‰æ’¸</div> + <!--<img class="emptyGif" :src="emptyGif">--> + </template> + </div> + <router-link class="recent-articles-more" :to="'/article/wscnlist?uid='+uid"> + Show more + </router-link> + </div> + </div> + </div> +</template> + +<script> + import { mapGetters } from 'vuex'; + import PanThumb from 'components/PanThumb'; + import MonthKpi from './monthKpi'; + import ArticlesChart from './articlesChart'; + // import { getStatistics } from 'api/article'; + + import emptyGif from 'assets/compbig.gif'; + export default { + name: 'dashboard-editor', + components: { PanThumb, MonthKpi, ArticlesChart }, + data() { + return { + chart: null, + statisticsData: { + article_count: undefined, + comment_count: undefined, + latest_article: [], + month_article_count: undefined, + pageviews_count: undefined, + week_article: [] + }, + emptyGif + } + }, + created() { + this.fetchData(); + }, + computed: { + ...mapGetters([ + 'name', + 'avatar', + 'email', + 'uid', + 'introduction', + 'roles' + ]), + recentArticles() { + return this.statisticsData.latest_article.slice(0, 7) + } + }, + methods: { + fetchData() { + // getStatistics().then(response => { + // this.statisticsData = response.data; + // this.statisticsData.week_article = this.statisticsData.week_article.slice().reverse(); + // }) + } + }, + filters: { + statusFilter(status) { + const statusMap = { + published: 'å·²å‘布', + draft: 'è‰ç¨¿ä¸', + deleted: 'å·²åˆ é™¤' + }; + return statusMap[status]; + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .emptyGif { + width: 100%; + height: 100%; + } + + .recent-articles-emptyTitle { + font-size: 16px; + color: #95A5A6; + padding-top: 20px; + text-align: center; + } + + .dashboard-editor-container { + padding: 30px 50px; + .pan-info-roles { + font-size: 12px; + font-weight: 700; + color: #333; + display: block; + } + .info-container { + position: relative; + margin-left: 190px; + height: 150px; + line-height: 200px; + .display_name { + font-size: 48px; + line-height: 48px; + color: #212121; + position: absolute; + top: 25px; + } + .info-wrapper { + line-height: 40px; + position: absolute; + bottom: 0px; + .info-item { + cursor: pointer; + display: inline-block; + margin-right: 95px; + .info-item-num { + color: #212121; + font-size: 24px; + display: inline-block; + padding-right: 5px; + } + .info-item-text { + color: #727272; + font-size: 14px; + padding-right: 5px; + display: inline-block; + } + } + } + .dashboard-editor-icon { + width: 22px; + height: 22px; + } + } + + .btn-group { + margin: 30px 36px 30px 0; + } + .main-dashboard-container { + width: 100%; + position: relative; + border: 1px solid #DEE1E2; + padding: 0 10px; + } + .chart-container { + float: left; + position: relative; + padding-right: 10px; + width: 40%; + border-right: 1px solid #DEE1E2; + } + .recent-articles-container { + padding: 12px 12px 0px; + float: left; + width: 60%; + position: relative; + .recent-articles- { + &title { + font-size: 16px; + color: #95A5A6; + letter-spacing: 1px; + padding-left: 15px; + padding-bottom: 10px; + border-bottom: 1px solid #DEE1E2; + } + &more { + color: #2C3E50; + font-size: 12px; + float: right; + margin-right: 25px; + line-height: 40px; + &:hover { + color: #3A71A8; + } + } + &wrapper { + padding: 0 20px 0 22px; + .recent-articles- { + &item { + cursor: pointer; + padding: 16px 100px 16px 16px; + border-bottom: 1px solid #DEE1E2; + position: relative; + &:before { + content: ""; + height: 104%; + width: 0px; + background: #30B08F; + display: inline-block; + position: absolute; + opacity: 0; + left: 0px; + top: -2px; + transition: 0.3s ease all; + } + &:hover { + &:before { + opacity: 1; + width: 3px; + } + } + } + &status { + font-size: 12px; + display: inline-block; + color: #9B9B9B; + padding-right: 6px; + } + &content { + font-size: 13px; + color: #2C3E50; + &:hover { + color: #3A71A8; + } + } + &time { + position: absolute; + right: 16px; + top: 16px; + color: #9B9B9B; + } + } + } + } + + } + } +</style> diff --git a/src/views/dashboard/editor/monthKpi.vue b/src/views/dashboard/editor/monthKpi.vue new file mode 100644 index 0000000000000000000000000000000000000000..7fdd75014ca715feff48b4eeae07c0639447fb22 --- /dev/null +++ b/src/views/dashboard/editor/monthKpi.vue @@ -0,0 +1,61 @@ +<template> + <div class="monthKpi-container"> + <span class="monthKpi-container-title">{{month}}月</span> + <BarPercent class="monthKpi-container-chart" :dataNum='articlesComplete'></BarPercent> + <span class="monthKpi-container-text">æ–‡ç« å®Œæˆæ¯”例</span> + <span class="monthKpi-container-count">{{articlesComplete}}<b>篇</b></span> + </div> +</template> + +<script> + import BarPercent from 'components/Charts/barPercent'; + export default { + name: 'monthKpi', + components: { BarPercent }, + props: { + articlesComplete: { + type: Number + } + }, + data() { + return { + month: new Date().getMonth() + 1 + } + } + } +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .monthKpi-container{ + width: 100%; + } + .monthKpi-container-title { + color: #7F8C8D; + font-size: 16px; + display: inline-block; + margin-top: 10px; + } + + .monthKpi-container-chart { + margin-left: 100px; + margin-bottom: 4px; + } + + .monthKpi-container-text { + margin-left: 112px; + color: #9EA7B3; + font-size: 12px; + } + + .monthKpi-container-count { + color: #30B08F; + font-size: 34px; + position: absolute; + left: 260px; + top: 60px; + b { + padding-left: 10px; + color: #9EA7B3; + font-size: 12px; + } + } +</style> diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..7397932a6d5d9f398e129f3b71855f57891f0331 --- /dev/null +++ b/src/views/dashboard/index.vue @@ -0,0 +1,38 @@ +<template> + <div class="dashboard-container"> + <component v-bind:is="currentRole"> </component> + </div> +</template> + +<script> + import { mapGetters } from 'vuex'; + import EditorDashboard from './editor/index'; + import DefaultDashboard from './default/index'; + export default { + name: 'dashboard', + components: { EditorDashboard, DefaultDashboard }, + data() { + return { + currentRole: 'EditorDashboard' + } + }, + computed: { + ...mapGetters([ + 'name', + 'avatar', + 'email', + 'introduction', + 'roles' + ]) + }, + created() { + if (this.roles.indexOf('admin') >= 0) { + return; + } + const isEditor = this.roles.some(v => v.indexOf('editor') >= 0) + if (!isEditor) { + this.currentRole = 'DefaultDashboard'; + } + } + } +</script> diff --git a/src/views/error/401.vue b/src/views/error/401.vue new file mode 100644 index 0000000000000000000000000000000000000000..a1fe9bc139939426e1646b4640627c0acd426d7d --- /dev/null +++ b/src/views/error/401.vue @@ -0,0 +1,82 @@ +<template> + <div class="errPage-container"> + <el-button @click="back" icon='arrow-left' class="pan-back-btn">返回</el-button> + <el-row> + <el-col :span="12"> + <h1 class="text-jumbo text-ginormous">Oops!</h1> + <h2>ä½ æ²¡æœ‰æƒé™åŽ»è¯¥é¡µé¢</h2> + <h6>如有ä¸æ»¡è¯·è”ç³»ä½ é¢†å¯¼</h6> + <ul class="list-unstyled"> + <li>æˆ–è€…ä½ å¯ä»¥åŽ»:</li> + <li class="link-type"> + <router-link to="/dashboard">回首页</router-link> + </li> + <li class="link-type"><a href="https://www.taobao.com/">éšä¾¿çœ‹çœ‹</a></li> + <li><a @click="dialogVisible=true" href="#">点我看图</a></li> + </ul> + </el-col> + <el-col :span="12"> + <img :src="errGif" width="313" height="428" alt="Girl has dropped her ice cream."> + </el-col> + </el-row> + + <el-dialog title="éšä¾¿çœ‹" v-model="dialogVisible" size="large"> + <img class="pan-img" :src="ewizardClap"> + </el-dialog> + </div> +</template> +<script> + import errGif from 'assets/401.gif'; + import ewizardClap from 'assets/gifs/wizard_clap.gif'; + export default { + data() { + return { + errGif: errGif + '?' + +new Date(), + ewizardClap, + dialogVisible: false + } + }, + methods: { + back() { + this.$router.go(-1) + } + } + }; +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .errPage-container { + width: 800px; + margin: 100px auto; + .pan-back-btn { + background: #008489; + color: #fff; + } + .pan-gif { + margin: 0 auto; + display: block; + } + .pan-img{ + display: block; + margin: 0 auto; + } + .text-jumbo { + font-size: 60px; + font-weight: 700; + color: #484848; + } + .list-unstyled { + font-size: 14px; + li { + padding-bottom: 5px; + } + a { + color: #008489; + text-decoration: none; + &:hover { + text-decoration: underline; + } + } + } + } +</style> diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 0000000000000000000000000000000000000000..d2b3ce3ceaabb3e48a710d417fa0ad2c0a1f4d32 --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,61 @@ +<template> + <div class="errorpage-container"> 404 + <splitPane v-on:resize="resize" split="vertical"> + <template slot="paneL"> + <div class="left-container"></div> + </template> + <template slot="paneR"> + <splitPane split="horizontal"> + <template slot="paneL"> + <div class="top-container"></div> + </template> + <template slot="paneR"> + <div class="bottom-container"> + </div> + </template> + </splitPane> + </template> + </splitPane> + </div> +</template> + + +<script> + import splitPane from 'components/SplitPane/SplitPane' + export default { + components: { splitPane }, + methods: { + resize() { + console.log('resize') + } + } + }; +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .errorpage-container{ + position: relative; + height: 100vh; + } + .left-container { + background-color: #F38181; + height:100%; + } + + .right-container { + background-color: #FCE38A; + height: 200px; + } + + .top-container { + background-color: #FCE38A; + width: 100%; + height: 100%; + } + + .bottom-container { + width: 100%; + background-color: #95E1D3; + height: 100%; + + } +</style> diff --git a/src/views/layout/AppMain.vue b/src/views/layout/AppMain.vue new file mode 100644 index 0000000000000000000000000000000000000000..e6867d8fbc8fb20ab9575b15cf132b2a139bd6e8 --- /dev/null +++ b/src/views/layout/AppMain.vue @@ -0,0 +1,20 @@ +<template> + <section class="app-main" style="min-height: 100%"> + <transition name="fade" mode="out-in"> + <router-view :key="key"></router-view> + </transition> + </section> +</template> + +<script> + export default { + name: 'AppMain', + computed: { + key() { + return this.$route.name !== undefined + ? this.$route.name + +new Date() + : this.$route + +new Date() + } + } + } +</script> diff --git a/src/views/layout/Layout.vue b/src/views/layout/Layout.vue new file mode 100644 index 0000000000000000000000000000000000000000..3a6fe2303d4b94b0c6d4b542dca1093efacf6718 --- /dev/null +++ b/src/views/layout/Layout.vue @@ -0,0 +1,98 @@ +<template> + <div class="app-wrapper" :class="{hideSidebar:!sidebar.opened}"> + <div class="sidebar-wrapper"> + <Sidebar class="sidebar-container"/> + </div> + <div class="main-container"> + <Navbar/> + <App-main/> + </div> + </div> +</template> + +<script> + import { Navbar, Sidebar, AppMain } from 'views/layout'; + import store from 'store'; + import router from 'router'; + import permission from 'store/permission'; + // import { Loading } from 'element-ui'; + // let loadingInstance; + export default { + name: 'layout', + components: { + Navbar, + Sidebar, + AppMain + }, + computed: { + sidebar() { + return this.$store.state.app.sidebar; + } + }, + beforeRouteEnter: (to, from, next) => { + console.log('b') + const roles = store.getters.roles; + if (roles.length !== 0) { + next(); + return + } + // loadingInstance = Loading.service({ fullscreen: true, text: 'çŽ©å‘½åŠ è½½ä¸' }); + store.dispatch('GetInfo').then(() => { + permission.init({ + roles: store.getters.roles, + router: router.options.routes + }); + // loadingInstance.close(); + next(); + }).catch(err => { + // loadingInstance.close(); + console.log(err); + }); + } + } +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + @import "src/styles/mixin.scss"; + + .app-wrapper { + @include clearfix; + position: relative; + height: 100%; + width: 100%; + padding-left: 180px; + &.hideSidebar { + padding-left: 40px; + .sidebar-wrapper { + transform: translate(-140px, 0); + .sidebar-container { + transform: translate(132px, 0); + } + &:hover { + transform: translate(0, 0); + .sidebar-container { + transform: translate(0, 0); + } + } + } + } + .sidebar-wrapper { + width: 180px; + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow-x: hidden; + transition: all .28s ease-out; + @include scrollBar; + } + .sidebar-container { + transition: all .28s ease-out; + } + .main-container { + width: 100%; + min-height: 100%; + transition: all .28s ease-out; + } + } +</style> diff --git a/src/views/layout/Levelbar.vue b/src/views/layout/Levelbar.vue new file mode 100644 index 0000000000000000000000000000000000000000..382d9fd1d559bf36cc432e743638efef156a7357 --- /dev/null +++ b/src/views/layout/Levelbar.vue @@ -0,0 +1,48 @@ +<template> + <el-breadcrumb class="app-levelbar" separator="/"> + <el-breadcrumb-item v-for="(item,index) in levelList" :key="item"> + <router-link v-if='item.redirect==="noredirect"||index==levelList.length-1' to="" class="no-redirect">{{item.name}}</router-link> + <router-link v-else :to="item.path">{{item.name}}</router-link> + </el-breadcrumb-item> + </el-breadcrumb> +</template> + +<script> + export default { + created() { + this.getBreadcrumb() + }, + data() { + return { + levelList: null + } + }, + methods: { + getBreadcrumb() { + let matched = this.$route.matched.filter(item => item.name); + const first = matched[0]; + if (first && (first.name !== '首页' || first.path !== '')) { + matched = [{ name: '首页', path: '/' }].concat(matched) + } + this.levelList = matched; + } + }, + watch: { + $route() { + this.getBreadcrumb(); + } + } + } +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .app-levelbar.el-breadcrumb { + display: inline-block; + font-size: 14px; + line-height: 50px; + margin-left: 10px; + .no-redirect{ + color: #97a8be; + cursor:text; + } + } +</style> diff --git a/src/views/layout/Navbar.vue b/src/views/layout/Navbar.vue new file mode 100644 index 0000000000000000000000000000000000000000..abc18e773528952067b635fb7535a52010260e20 --- /dev/null +++ b/src/views/layout/Navbar.vue @@ -0,0 +1,107 @@ +<template> + <el-menu class="navbar" mode="horizontal"> + <Hamburger class="hamburger-container" :toggleClick="toggleSideBar" :isActive="sidebar.opened"></Hamburger> + <levelbar></levelbar> + <ErrLog v-if="log.length>0" class="errLog-container" :logsList="log"></ErrLog> + <el-dropdown class="avatar-container" trigger="click"> + <div class="avatar-wrapper"> + <img class="user-avatar" :src="avatar+'?imageView2/1/w/80/h/80'"> + <i class="el-icon-caret-bottom"/> + </div> + <el-dropdown-menu class="user-dropdown" slot="dropdown"> + <router-link class='inlineBlock' to="/"> + <el-dropdown-item> + 首页 + </el-dropdown-item> + </router-link> + <router-link class='inlineBlock' to="/admin/profile"> + <el-dropdown-item> + 设置 + </el-dropdown-item> + </router-link> + <el-dropdown-item divided><span @click="logout" style="display:block;">退出登录</span></el-dropdown-item> + </el-dropdown-menu> + </el-dropdown> + </el-menu> +</template> + +<script> + import { mapGetters } from 'vuex' + import Levelbar from './Levelbar'; + import Hamburger from 'components/Hamburger'; + import ErrLog from 'components/ErrLog'; + import errLogStore from 'store/errLog'; + + export default { + components: { + Levelbar, + Hamburger, + ErrLog + }, + data() { + return { + log: errLogStore.state.errLog + } + }, + computed: { + ...mapGetters([ + 'sidebar', + 'name', + 'avatar' + ]) + }, + methods: { + toggleSideBar() { + this.$store.dispatch('ToggleSideBar') + }, + logout() { + this.$store.dispatch('LogOut').then(() => { + this.$router.push({ path: '/login' }) + }); + } + } + } +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .navbar { + height: 50px; + line-height: 50px; + border-radius: 0px !important; + .hamburger-container { + line-height: 58px; + height: 50px; + float: left; + padding: 0 10px; + } + .errLog-container { + display: inline-block; + position: absolute; + right: 150px; + } + .avatar-container { + height: 50px; + display: inline-block; + position: absolute; + right: 35px; + .avatar-wrapper { + cursor: pointer; + margin-top:5px; + position: relative; + .user-avatar { + width: 40px; + height: 40px; + border-radius: 10px; + } + .el-icon-caret-bottom { + position: absolute; + right: -20px; + top: 25px; + font-size: 12px; + } + } + } + } +</style> + + + diff --git a/src/views/layout/Sidebar.vue b/src/views/layout/Sidebar.vue new file mode 100644 index 0000000000000000000000000000000000000000..92a2b9a697d026c4aba085384f8cd3b5342b9604 --- /dev/null +++ b/src/views/layout/Sidebar.vue @@ -0,0 +1,48 @@ +<template> + <el-menu mode="vertical" theme="dark" :default-active="$route.path"> + <template v-for="item in permissionRoutes" v-if="!item.hidden"> + <el-submenu :index="item.name" v-if="!item.noDropdown"> + <template slot="title"> + <wscn-icon-svg :icon-class="item.icon||'wenzhang1'"/> + {{item.name}} + </template> + <router-link v-for="child in item.children" :key="child.path" v-if="!child.hidden" + class="title-link" :to="item.path+'/'+child.path + '#'+ +new Date()"> + <el-menu-item :index="item.path+'/'+child.path"> + {{child.name}} + </el-menu-item> + </router-link> + </el-submenu> + <router-link v-if="item.noDropdown&&item.children.length>0" class="title-link" + :to="item.path+'/'+item.children[0].path"> + <el-menu-item + :index="item.path+'/'+item.children[0].path +'#'+ +new Date()"> + <wscn-icon-svg :icon-class="item.icon||'geren1'"/> + {{item.children[0].name}} + </el-menu-item> + </router-link> + </template> + </el-menu> +</template> + +<script> + import permissionRoutes from 'store/permission'; + + export default { + name: 'Sidebar', + data() { + return { + permissionRoutes: permissionRoutes.get() + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .el-menu { + min-height: 100%; + } + .wscn-icon { + margin-right: 10px; + } +</style> diff --git a/src/views/layout/index.js b/src/views/layout/index.js new file mode 100644 index 0000000000000000000000000000000000000000..308c1be8d0500666aa07b08e2b2a40ecddcba185 --- /dev/null +++ b/src/views/layout/index.js @@ -0,0 +1,7 @@ +export { default as Navbar } from './Navbar'; + +export { default as Sidebar } from './Sidebar'; + +export { default as Levelbar } from './Sidebar'; + +export { default as AppMain } from './AppMain'; diff --git a/src/views/login/authredirect.vue b/src/views/login/authredirect.vue new file mode 100644 index 0000000000000000000000000000000000000000..136d6a5d8e1f4600d2cbb484041e571c238f69c5 --- /dev/null +++ b/src/views/login/authredirect.vue @@ -0,0 +1,10 @@ +<script> + export default { + name: 'authredirect', + created() { + const hash = window.location.search.slice(1); + window.opener.location.href = window.location.origin + '/login#' + hash; + window.close(); + } + } +</script> diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..86fd1163203eb93c26e4d51622c3c3f841ca16fb --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,188 @@ +<template> + <div class="login-container"> + <el-form autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginForm" label-position="left" + label-width="0px" + class="card-box login-form"> + <h3 class="title">系统登录</h3> + <el-form-item prop="email"> + <span class="svg-container"><wscn-icon-svg icon-class="jiedianyoujian"/></span> + <el-input name="email" type="text" v-model="loginForm.email" autoComplete="on" + placeholder="邮箱"></el-input> + </el-form-item> + <el-form-item prop="password"> + <span class="svg-container"><wscn-icon-svg icon-class="mima"/></span> + <el-input name="password" type="password" @keyup.enter.native="handleLogin" v-model="loginForm.password" + autoComplete="on" placeholder="密ç "></el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" style="width:100%;" :loading="loading" @click.native.prevent="handleLogin"> + 登录 + </el-button> + </el-form-item> + <router-link to="/sendpwd" class="forget-pwd"> + 忘记密ç ?(或首次登录) + </router-link> + </el-form> + <el-dialog title="第三方验è¯" v-model="showDialog"> + 邮箱登录æˆåŠŸ,è¯·é€‰æ‹©ç¬¬ä¸‰æ–¹éªŒè¯ + <socialSign></socialSign> + </el-dialog> + </div> +</template> + +<script> + import { mapGetters } from 'vuex'; + import { isWscnEmail } from 'utils/validate'; + import { getQueryObject } from 'utils'; + import socialSign from './socialsignin'; + + export default { + components: { socialSign }, + name: 'login', + data() { + const validateEmail = (rule, value, callback) => { + if (!isWscnEmail(value)) { + callback(new Error('请输入æ£ç¡®çš„åˆæ³•é‚®ç®±')); + } else { + callback(); + } + }; + const validatePass = (rule, value, callback) => { + if (value.length < 6) { + callback(new Error('密ç ä¸èƒ½å°äºŽ6ä½')); + } else { + callback(); + } + }; + return { + loginForm: { + email: '', + password: '' + }, + loginRules: { + email: [ + { required: true, trigger: 'blur', validator: validateEmail } + ], + password: [ + { required: true, trigger: 'blur', validator: validatePass } + ] + }, + loading: false, + showDialog: false + } + }, + computed: { + ...mapGetters([ + 'status', + 'auth_type' + ]) + }, + methods: { + handleLogin() { + this.$refs.loginForm.validate(valid => { + if (valid) { + this.loading = true; + this.$store.dispatch('LoginByEmail', this.loginForm).then(() => { + this.loading = false; + this.$router.push({ path: '/' }); + // this.showDialog = true; + }).catch(err => { + this.$message.error(err); + this.loading = false; + }); + } else { + console.log('error submit!!'); + return false; + } + }); + }, + afterQRScan() { + const hash = window.location.hash.slice(1); + const hashObj = getQueryObject(hash); + const originUrl = window.location.origin; + history.replaceState({}, '', originUrl); + const codeMap = { + wechat: 'code', + tencent: 'code' + }; + const codeName = hashObj[codeMap[this.auth_type]]; + if (!codeName) { + alert('第三方登录失败'); + } else { + this.$store.dispatch('LoginByThirdparty', codeName).then(() => { + this.$router.push({ path: '/' }); + }); + } + } + }, + created() { + window.addEventListener('hashchange', this.afterQRScan); + }, + destroyed() { + window.removeEventListener('hashchange', this.afterQRScan); + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoprd> + @import "src/styles/mixin.scss"; + + .login-container { + @include relative; + height: 100vh; + background-color: #2d3a4b; + + input:-webkit-autofill { + -webkit-box-shadow: 0 0 0px 1000px #293444 inset !important; + -webkit-text-fill-color: #fff !important; + } + input { + background: transparent; + border: 0px; + -webkit-appearance: none; + border-radius: 0px; + padding: 12px 5px 12px 15px; + color: #eeeeee; + height: 47px; + } + .el-input { + display: inline-block; + height: 47px; + width: 85%; + } + .svg-container { + padding: 6px 5px 6px 15px; + color: #889aa4; + } + + .title { + font-size: 26px; + font-weight: 400; + color: #eeeeee; + margin: 0px auto 40px auto; + text-align: center; + font-weight: bold; + } + + .login-form { + position: absolute; + left: 0; + right: 0; + width: 400px; + padding: 35px 35px 15px 35px; + margin: 120px auto; + } + + .el-form-item { + border: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(0, 0, 0, 0.1); + border-radius: 5px; + color: #454545; + } + + .forget-pwd { + color: #fff; + } + } + +</style> diff --git a/src/views/login/reset.vue b/src/views/login/reset.vue new file mode 100644 index 0000000000000000000000000000000000000000..9053ad9840b0d311aac1ea5f6de341facb821cd2 --- /dev/null +++ b/src/views/login/reset.vue @@ -0,0 +1,178 @@ +<template> + <div class="reset-container"> + <el-form autoComplete="on" :model="resetForm" :rules="resetRules" ref="resetForm" label-position="left" + label-width="0px" + class="card-box reset-form"> + <div> + <router-link to="/login" class="back-icon"> + <i class="el-icon-arrow-left"></i> + </router-link> + <h3 class="title">é‡è®¾å¯†ç </h3> + </div> + <el-form-item prop="email"> + <el-input name="email" type="text" v-model="resetForm.email" + placeholder="邮箱"></el-input> + </el-form-item> + <el-form-item prop="code"> + <el-input name="code" type="text" v-model="resetForm.code" + placeholder="验è¯ç "></el-input> + </el-form-item> + <el-form-item prop="password"> + <el-input name="password" :type="passwordType" v-model="resetForm.password" + placeholder="密ç "></el-input> + </el-form-item> + <el-form-item prop="checkPass"> + <el-input name="checkPass" :type="passwordType" + v-model="resetForm.checkPass" + placeholder="确认密ç "></el-input> + <i @click="togglePasswordType" class="el-icon-information"></i> + </el-form-item> + + <el-form-item style="width:100%;"> + <el-button type="primary" style="width:100%;" :loading="loading" @click.native.prevent="setPWD"> + 修改密ç + </el-button> + </el-form-item> + </el-form> + </div> +</template> + +<script> + import { isWscnEmail } from 'utils/validate'; + // import { restPWD } from 'api/login'; + + export default { + name: 'reset', + data() { + const validateEmail = (rule, value, callback) => { + if (!isWscnEmail(value)) { + callback(new Error('邮箱错误')); + } else { + callback(); + } + }; + const validaePass = (rule, value, callback) => { + if (value.length < 6) { + callback(new Error('密ç ä¸èƒ½å°äºŽ6ä½')); + } else { + callback(); + } + }; + const validatePass2 = (rule, value, callback) => { + if (value === '') { + callback(new Error('请å†æ¬¡è¾“入密ç ')); + } else if (value !== this.resetForm.password) { + callback(new Error('两次输入密ç ä¸ä¸€è‡´!')); + } else { + callback(); + } + }; + return { + resetForm: { + email: '', + password: '', + checkPass: '', + code: '' + }, + passwordType: 'password', + resetRules: { + email: [ + { required: true, trigger: 'blur', validator: validateEmail } + ], + password: [ + { required: true, trigger: 'blur', validator: validaePass } + ], + checkPass: [ + { required: true, trigger: 'blur', validator: validatePass2 } + ], + code: [ + { required: true, message: '必填项', trigger: 'blur' } + ] + }, + loading: false + } + }, + methods: { + setPWD() { + this.loading = true; + const _this = this; + this.$refs.resetForm.validate(valid => { + if (valid) { + const data = { + email: this.resetForm.email, + code: this.resetForm.code, + new_password: this.resetForm.checkPass + }; + // restPWD(data).then(() => { + // this.$message.success('密ç 设置æˆåŠŸ,五秒åŽè°ƒæ•´åˆ°ç™»å½•é¡µ'); + // setTimeout(() => { + // _this.$router.push({ path: '/login' }) + // }, 5 * 1000) + // }); + } else { + this.$message.error('error submit!!'); + } + this.loading = false; + }); + }, + togglePasswordType() { + if (this.passwordType === 'text') { + this.passwordType = 'password' + } else { + this.passwordType = 'text' + } + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss"> + @import "src/styles/mixin.scss"; + + .reset-container { + input:-webkit-autofill { + -webkit-box-shadow: 0 0 0px 1000px #293444 inset !important; + -webkit-text-fill-color: #3E3E3E !important; + } + @include relative; + height: 100vh; + background-color: #324057; + .back-icon { + float: left; + margin-top: 5px; + } + .el-icon-information { + position: absolute; + right: -18px; + top: 10px; + } + .reset-form { + position: absolute; + left: 0; + right: 0; + width: 350px; + padding: 35px 35px 15px 35px; + margin: 120px auto; + } + + .card-box { + padding: 20px; + box-shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-border-radius: 5px; + background-clip: padding-box; + margin-bottom: 20px; + background-color: #F9FAFC; + width: 400px; + border: 2px solid #8492A6; + } + + .title { + margin: 0px auto 40px auto; + text-align: center; + color: #505458; + } + } + +</style> diff --git a/src/views/login/sendpwd.vue b/src/views/login/sendpwd.vue new file mode 100644 index 0000000000000000000000000000000000000000..cd26484e59cb7f218872205f48876d2c33446871 --- /dev/null +++ b/src/views/login/sendpwd.vue @@ -0,0 +1,117 @@ +<template> + <div class="sendpwd-container"> + <el-form autoComplete="on" :model="resetForm" :rules="resetRules" ref="resetForm" label-position="left" + label-width="0px" + class="card-box reset-form"> + <div> + <router-link to="/login" class="back-icon"> + <i class="el-icon-arrow-left"></i> + </router-link> + <h3 class="title">å‘é€éªŒè¯ç 至邮箱</h3> + </div> + <el-form-item prop="email"> + <el-input name="email" type="text" v-model="resetForm.email" + placeholder="邮箱"></el-input> + </el-form-item> + + <el-form-item style="width:100%;"> + <el-button type="primary" style="width:100%;" :loading="loading" @click.native.prevent="handleSendPWD"> + å‘é€éªŒè¯ç 至邮箱 + </el-button> + </el-form-item> + <router-link to="/reset"> + <el-button type="info" style="width:100%;"> + 已收到验è¯ç ,去é‡è®¾å¯†ç + </el-button> + </router-link> + </el-form> + </div> +</template> + +<script> + import { isWscnEmail } from 'utils/validate'; + // import { sendPWD2Email } from 'api/login'; + + export default { + name: 'reset', + data() { + const validateEmail = (rule, value, callback) => { + if (!isWscnEmail(value)) { + callback(new Error('请输入æ£ç¡®çš„邮箱')); + } else { + callback(); + } + }; + return { + resetForm: { + email: '' + }, + resetRules: { + email: [ + { required: true, trigger: 'blur' }, + { validator: validateEmail } + ] + }, + loading: false + } + }, + methods: { + handleSendPWD() { + this.loading = true; + this.$refs.resetForm.validate(valid => { + if (valid) { + // sendPWD2Email(this.resetForm.email).then(() => { + // this.$message.success('密ç 有å‘é€è‡³é‚®ç®±,请查收') + // }); + } else { + this.$message.error('错误æ交!!'); + } + this.loading = false; + }); + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss"> + .sendpwd-container { + height: 100vh; + background-color: #2d3a4b; + input:-webkit-autofill { + -webkit-box-shadow: 0 0 0px 1000px #293444 inset !important; + -webkit-text-fill-color: #3E3E3E !important; + } + .back-icon{ + float: left; + margin-top: 5px; + } + .reset-form { + position: absolute; + left: 0; + right: 0; + width: 350px; + padding: 35px 35px 15px 35px; + margin: 120px auto; + } + + .card-box { + padding: 20px; + box-shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02); + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-border-radius: 5px; + background-clip: padding-box; + margin-bottom: 20px; + background-color: #F9FAFC; + width: 400px; + border: 2px solid #8492A6; + } + + .title { + margin: 0px auto 40px auto; + text-align: center; + color: #505458; + } + } + +</style> diff --git a/src/views/login/socialsignin.vue b/src/views/login/socialsignin.vue new file mode 100644 index 0000000000000000000000000000000000000000..c7edc0db3130a3c1bdc7e3e67dcc307e3a4b656b --- /dev/null +++ b/src/views/login/socialsignin.vue @@ -0,0 +1,68 @@ +<template> + <div class="social-signup-container"> + <div class="sign-btn" @click="wechatHandleClick('wechat')"> + <span class="wx-svg-container"><wscn-icon-svg icon-class="weixin" class="icon"/></span> + 微信 + </div> + <div class="sign-btn" @click="tencentHandleClick('tencent')"> + <span class="qq-svg-container"><wscn-icon-svg icon-class="QQ" class="icon"/></span> + QQ + </div> + </div> +</template> + +<script> + import openWindow from 'utils/openWindow'; + + export default { + name: 'social-signin', + methods: { + wechatHandleClick(thirdpart) { + this.$store.commit('SET_AUTH_TYPE', thirdpart); + const appid = 'wxff5aaaad72308d46'; + const redirect_uri = encodeURIComponent('http://wallstreetcn.com/auth/redirect?redirect=' + window.location.origin + '/authredirect'); + const url = 'https://open.weixin.qq.com/connect/qrconnect?appid=' + appid + '&redirect_uri=' + redirect_uri + '&response_type=code&scope=snsapi_login#wechat_redirect'; + openWindow(url, thirdpart, 540, 540); + }, + tencentHandleClick(thirdpart) { + this.$store.commit('SET_AUTH_TYPE', thirdpart); + const client_id = '101150108'; + const redirect_uri = encodeURIComponent('http://wallstreetcn.com/auth/redirect?redirect=' + window.location.origin + '/authredirect'); + const url = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' + client_id + '&redirect_uri=' + redirect_uri; + openWindow(url, thirdpart, 540, 540); + } + } + } +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .social-signup-container { + margin: 20px 0; + .sign-btn { + display: inline-block; + cursor: pointer; + } + .icon { + color: #fff; + font-size: 30px; + margin-top: 6px; + } + .wx-svg-container, .qq-svg-container { + display: inline-block; + width: 40px; + height: 40px; + line-height: 40px; + text-align: center; + padding-top: 1px; + border-radius: 4px; + margin-bottom: 20px; + margin-right: 5px; + } + .wx-svg-container { + background-color: #8dc349; + } + .qq-svg-container { + background-color: #6BA2D6; + margin-left: 50px; + } + } +</style> diff --git a/src/views/others/mediaUpload.vue b/src/views/others/mediaUpload.vue new file mode 100644 index 0000000000000000000000000000000000000000..06677ea7f334745f1ce8a5f47d11fadead9b311e --- /dev/null +++ b/src/views/others/mediaUpload.vue @@ -0,0 +1,102 @@ +<template> + <div class="app-container mediaUpload-container"> + <el-upload + class="upload-container" + action="https://upload.qbox.me" + :data="dataObj" + drag + :multiple="true" + :on-preview="handlePreview" + :on-remove="handleRemove" + :on-success="handleSuccess" + :before-upload="beforeUpload"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">将文件拖到æ¤å¤„,或<em>ç‚¹å‡»ä¸Šä¼ </em></div> + </el-upload> + + <template v-if='fileList.length!=0'> + <el-table + :data="fileList" + border + style="width: 100%"> + <el-table-column label="åå—"> + <template scope="scope"> + {{scope.row.name}} + </template> + </el-table-column> + <el-table-column label="url"> + <template scope="scope"> + {{scope.row.url}} + </template> + </el-table-column> + </el-table> + </template> + </div> +</template> +<script> + import { getToken } from 'api/qiniu'; + + export default{ + data() { + return { + image_uri: [], + dataObj: { token: '', key: '' }, + fileList: [] + } + }, + computed: { + token() { + return this.$store.getters.token + } + }, + methods: { + beforeUpload() { + const _self = this; + return new Promise((resolve, reject) => { + getToken(this.token).then(response => { + const key = response.data.qiniu_key; + const token = response.data.qiniu_token; + this.addFile(key, response.data.qiniu_url); + _self._data.dataObj.token = token; + _self._data.dataObj.key = key; + resolve(true); + }).catch(err => { + console.log(err) + reject(false) + }); + }); + }, + handleRemove(file, fileList) { + console.log(file, fileList); + }, + handlePreview(file) { + console.log(file); + }, + handleSuccess(response, file) { + const key = response.key; + for (let i = this.fileList.length; i--;) { + const item = this.fileList[i]; + if (item.key === key) { + this.fileList[i].name = file.name; + return + } + } + }, + + addFile(key, url) { + this.fileList.push({ + key, + url, + name: '' + }) + } + } + } +</script> +<style rel="stylesheet/scss" lang="scss" scoped> + .mediaUpload-container { + .upload-container { + margin: 30px; + } + } +</style> diff --git a/src/views/previewLayout/Layout.vue b/src/views/previewLayout/Layout.vue new file mode 100644 index 0000000000000000000000000000000000000000..b1f8b3ab41560b9ee869c45adebfecc32ddca180 --- /dev/null +++ b/src/views/previewLayout/Layout.vue @@ -0,0 +1,20 @@ +<template> + <section class="app-main" style="min-height: 100%"> + <transition name="fade" mode="out-in"> + <router-view :key="key"></router-view> + </transition> + </section> +</template> + +<script> + export default { + name: 'AppMain', + computed: { + key() { + return this.$route.name !== undefined + ? this.$route.name + : this.$route + } + } + } +</script> diff --git a/src/views/user/components/info.vue b/src/views/user/components/info.vue new file mode 100644 index 0000000000000000000000000000000000000000..f714240fffacbcb746f3aea6af7e8af8a865c4bc --- /dev/null +++ b/src/views/user/components/info.vue @@ -0,0 +1,118 @@ +<template> + <div class="fedUser-info-container"> + <el-button type="success" v-if="hasPermission" style='position: absolute; top: 20px;left: 50%' + @click="updateForm">æ›´æ–° + </el-button> + <el-form style="margin:0 50px;width: 400px" label-position="left" + label-width="100px"> + <el-form-item label="昵称"> + <el-input v-model="form.base_info.display_name"></el-input> + </el-form-item> + + <el-form-item label="密ç "> + <el-input v-model="form.base_info.new_password"></el-input> + </el-form-item> + + <el-form-item label="邮箱"> + <el-input v-model="form.base_info.email"></el-input> + </el-form-item> + + <el-form-item label="手机å·"> + <el-input v-model="form.base_info.mobile"></el-input> + </el-form-item> + + <el-form-item label="真实姓å"> + <el-input v-model="form.extented_info.real_name"></el-input> + </el-form-item> + + <el-form-item label="生日"> + <el-input v-model="form.extented_info.birthday"></el-input> + </el-form-item> + + <el-form-item label="性别"> + <el-select v-model="form.base_info.gender" placeholder="请选择"> + <el-option + v-for="item in genderOptions" + :key="item" + :label="item" + :value="item"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="教育背景"> + <el-select v-model="form.extented_info.education" placeholder="请选择"> + <el-option + v-for="item in educationOptions" + :key="item" + :label="item" + :value="item"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="收入"> + <el-select v-model="form.extented_info.income" placeholder="请选择"> + <el-option + v-for="item in incomeOptions" + :key="item" + :label="item" + :value="item"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="自我介ç»"> + <el-input + type="textarea" + :autosize="{ minRows: 4}" + placeholder="请输入内容" + v-model=" form.extented_info.introduction"> + </el-input> + </el-form-item> + </el-form> + </div> +</template> + +<script> + import { updateUserInfo } from 'api/user'; + export default { + name: 'fedUser-info', + props: ['info'], + + data() { + return { + genderOptions: ['male', 'female', 'other'], + educationOptions: ['high_school', 'bachelor', 'master', 'Ph.D.', 'other'], + incomeOptions: ['3000', '5000', '8000', 'other'] + } + }, + computed: { + form() { + return this.info + }, + hasPermission() { + return ~this.$store.getters.roles.indexOf('admin') + } + }, + methods: { + updateForm() { + updateUserInfo(this.form).then(() => { + this.$notify({ + title: 'æˆåŠŸ', + message: 'æ›´æ–°æˆåŠŸ', + type: 'success' + }); + }).catch(err => { + console.log(err); + }); + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .fedUser-detail-container { + + } +</style> diff --git a/src/views/user/detail.vue b/src/views/user/detail.vue new file mode 100644 index 0000000000000000000000000000000000000000..8e62e5e2079b7fedf7f6e9c5d87bb6abb631736b --- /dev/null +++ b/src/views/user/detail.vue @@ -0,0 +1,125 @@ +<template> + <div class="fedUser-detail-container" v-loading="!fetchSuccess"> + <div v-if="fetchSuccess" class="top-container clearfix"> + <el-col :span="5"> + <img class="info-avatar" :src="userInfo.base_info.image"> + </el-col> + <el-col :span="16" :offset="2"> + <div class="info-item"> + <span class="info-label">用户å</span> + <span class="info-text">{{userInfo.base_info.username}}</span> + </div> + + <div class="info-item"> + <span class="info-label">昵称</span> + <span class="info-text">{{userInfo.base_info.display_name}}</span> + </div> + + <div class="info-item"> + <span class="info-label">手机å·</span> + <span class="info-text">{{userInfo.base_info.mobile}}</span> + </div> + + <div class="info-item"> + <span class="info-label">ä½™é¢</span> + <span class="info-text">{{userInfo.banance}}</span> + </div> + + <div class="info-item"> + <span class="info-label">iosä½™é¢</span> + <span class="info-text">{{userInfo.ios_banance}}</span> + </div> + + <div class="info-item"> + <span class="info-label">注册日期</span> + <span class="info-text">{{userInfo.created_at | parseTime('{y}-{m}-{d} {h}:{i}')}} æ³¨å†Œæ¸ é“:{{userInfo.signup_method}}</span> + </div> + + <div class="info-item"> + <span class="info-label">最åŽç™»å½•</span> + <span class="info-text">{{userInfo.last_signin_time | parseTime('{y}-{m}-{d} {h}:{i}')}}</span> + </div> + </el-col> + </div> + + + <el-tabs v-if="fetchSuccess" v-model="activeTab"> + + <el-tab-pane label="基本信æ¯" name="info"> + <Info :info="userInfo"></Info> + </el-tab-pane> + + <el-tab-pane label="评论记录" name="information"> + <Comment :user_id="userInfo.uid"></Comment> + </el-tab-pane> + + <!--<el-tab-pane label="消费记录" name="stream"> + + </el-tab-pane>--> + + </el-tabs> + </div> +</template> + +<script> + import { userInfo } from 'api/user'; + import Info from './components/info'; + import Comment from '../comment/commentsList' + + export default { + name: 'fedUser-detail', + components: { Info, Comment }, + data() { + return { + userInfo: {}, + activeTab: 'info', + fetchSuccess: false + } + }, + created() { + this.fetchData(); + }, + methods: { + fetchData() { + userInfo(this.$route.params.id).then(response => { + this.userInfo = response.data; + this.fetchSuccess = true; + }).catch(err => { + this.fetchSuccess = true; + console.log(err); + }); + } + } + } +</script> + +<style rel="stylesheet/scss" lang="scss" scoped> + .fedUser-detail-container { + padding: 30px; + .top-container { + margin-bottom: 30px; + .info-item { + line-height: 14px; + padding-bottom: 18px; + .info-label { + display: inline-block; + color: #1f2f3d; + font-size: 16px; + position: absolute; + } + .info-text { + margin-left: 120px; + font-size: 14px; + color: #5e6d82; + } + } + + } + .info-avatar { + width: 200px; + height: 200px; + border-radius: 100%; + } + + } +</style> diff --git a/src/views/user/list.vue b/src/views/user/list.vue new file mode 100644 index 0000000000000000000000000000000000000000..4d3440218da3a80e9d16047e21537f96e2dceb3c --- /dev/null +++ b/src/views/user/list.vue @@ -0,0 +1,183 @@ +<template> + <div class="app-container topic-list-container"> + <div class="filter-container"> + <el-input + style="width:200px" + @keyup.enter.native="handleFilter" + class="filter-item" + placeholder="display_name" + v-model="display_name"> + </el-input> + <el-input + style="width:200px" + @keyup.enter.native="handleFilter" + class="filter-item" + placeholder="username" + v-model="username"> + </el-input> + <el-select v-model="status" placeholder="状æ€" > + <el-option + v-for="item in statusOptions" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-button class="filter-item" style="margin-left: 30px;" type="primary" icon="search" + @click="handleFilter">æœç´¢ + </el-button> + </div> + <el-table :data="list" v-loading.body="listLoading" border fit highlight-current-row> + <el-table-column header prop="id" label="uid" width="160"> + <template scope="scope"> + <span style="margin-left: 10px">{{scope.row.uid}}</span> + </template> + </el-table-column> + + <el-table-column label="display_name" show-overflow-tooltip> + <template scope="scope"> + <router-link class="link-type" :to="'/user/'+scope.row.uid"> + {{scope.row.display_name}} + </router-link> + </template> + </el-table-column> + + <el-table-column label="username" show-overflow-tooltip> + <template scope="scope"> + <router-link class="link-type" :to="'/user/'+scope.row.uid"> + {{scope.row.username}} + </router-link> + </template> + </el-table-column> + + <el-table-column label="手机å·" width="150"> + <template scope="scope"> + <span>{{scope.row.mobile}}</span> + </template> + </el-table-column> + + <el-table-column label="æ“作" width="120" align='center'> + <template scope="scope"> + <el-button v-if='condition.status==""' size="small" type="warning" @click="handleModifyUserStatus('frozen',scope.row)"> + 注销用户 + </el-button> + <el-button v-else type="info" size="small" @click="handleModifyUserStatus('',scope.row)">解ç¦ç”¨æˆ· + </el-button> + </template> + </el-table-column> + </el-table> + + <div v-show="!listLoading" class="pagination-container"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="listQuery.page" + :page-sizes="[10,20,30, 50]" + :page-size="listQuery.limit" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + </div> + +</template> + +<script> + import { usersList, modifyStatus } from 'api/user'; + export default { + name: 'fedUserList', + data() { + return { + list: null, + total: null, + listLoading: true, + listQuery: { + page: 1, + limit: 20, + app_type: 'wscn', + condition: '' + }, + display_name: undefined, + username: undefined, + status: '', + statusOptions: [{ label: 'æ£å¸¸', value: '' }, { label: 'å·²åˆ é™¤', value: 'frozen' }], + condition: { + status: '' + } + } + }, + created() { + this.fetchList(); + }, + watch: { + display_name(value) { + if (!value) return; + this.condition = { + display_name: value + }; + this.username = ''; + }, + username(value) { + if (!value) return; + this.condition = { + username: value + }; + this.display_name = ''; + } + }, + methods: { + fetchList() { + this.condition.status = this.status; + this.listQuery.condition = JSON.stringify(this.condition); + usersList(this.listQuery).then(response => { + const data = response.data; + this.list = data.items; + this.total = data.total_count; + this.listLoading = false; + }) + }, + handleSizeChange(val) { + this.listQuery.limit = val; + this.fetchList(); + }, + handleCurrentChange(val) { + this.listQuery.page = val; + this.fetchList(); + }, + handleFilter() { + this.fetchList(); + }, + handleModifyUserStatus(status, row) { + const msg = status === 'frozen' ? '注销' : 'æ¢å¤'; + this.$confirm('是å¦ç¡®' + msg + '用户:' + row.display_name || row.username, 'æ示', { + confirmButtonText: '确定', + cancelButtonText: 'å–消', + type: 'warning', + beforeClose: (action, instance, done) => { + if (action === 'confirm') { + modifyStatus(status, [row.uid]).then(() => { + this.$notify({ + title: 'æˆåŠŸ', + message: msg + 'æˆåŠŸ', + type: 'success', + duration: 1600 + }); + for (const i of this.list) { + if (i.uid === row.uid) { + const index = this.list.indexOf(i); + this.list.splice(index, 1); + break; + } + } + done(); + }).catch(() => { + done(); + }); + } else { + done(); + } + } + }) + } + } + } +</script> diff --git a/static/.gitkeep b/static/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/static/jquery.min.js b/static/jquery.min.js new file mode 100644 index 0000000000000000000000000000000000000000..4c5be4c0fbe230e81d95718a18829e965a2d14b2 --- /dev/null +++ b/static/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R), +a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},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:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function fb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ca(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],_a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ha([a],!0),j=a.style.display||j,k=r.css(a,"display"),ha([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ha([a],!0),m.done(function(){p||ha([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=eb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function gb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function hb(a,b,c){var d,e,f=0,g=hb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Za||cb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Za||cb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(gb(k,j.opts.specialEasing);f<g;f++)if(d=hb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,eb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(hb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return ea(c.elem,a,aa.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],hb.tweeners[c]=hb.tweeners[c]||[],hb.tweeners[c].unshift(b)},prefilters:[fb],prefilter:function(a,b){b?hb.prefilters.unshift(a):hb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:"number"!=typeof e.duration&&(e.duration in r.fx.speeds?e.duration=r.fx.speeds[e.duration]:e.duration=r.fx.speeds._default),null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=hb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(db(b,!0),a,d,e)}}),r.each({slideDown:db("show"),slideUp:db("hide"),slideToggle:db("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Za=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Za=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){$a||($a=a.requestAnimationFrame?a.requestAnimationFrame(bb):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame($a):a.clearInterval($a),$a=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var ib,jb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)), +void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,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":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=mb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r}); diff --git a/static/tinymce1.3/langs/zh_CN.js b/static/tinymce1.3/langs/zh_CN.js new file mode 100755 index 0000000000000000000000000000000000000000..e11f322cc4c83cd1ea797638870a2588fd2040c1 --- /dev/null +++ b/static/tinymce1.3/langs/zh_CN.js @@ -0,0 +1,230 @@ +tinymce.addI18n('zh_CN',{ +"Cut": "\u526a\u5207", +"Heading 5": "\u6807\u98985", +"Header 2": "\u6807\u98982", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002", +"Heading 4": "\u6807\u98984", +"Div": "Div\u533a\u5757", +"Heading 2": "\u6807\u98982", +"Paste": "\u7c98\u8d34", +"Close": "\u5173\u95ed", +"Font Family": "\u5b57\u4f53", +"Pre": "\u9884\u683c\u5f0f\u6587\u672c", +"Align right": "\u53f3\u5bf9\u9f50", +"New document": "\u65b0\u6587\u6863", +"Blockquote": "\u5f15\u7528", +"Numbered list": "\u7f16\u53f7\u5217\u8868", +"Heading 1": "\u6807\u98981", +"Headings": "\u6807\u9898", +"Increase indent": "\u589e\u52a0\u7f29\u8fdb", +"Formats": "\u683c\u5f0f", +"Headers": "\u6807\u9898", +"Select all": "\u5168\u9009", +"Header 3": "\u6807\u98983", +"Blocks": "\u533a\u5757", +"Undo": "\u64a4\u6d88", +"Strikethrough": "\u5220\u9664\u7ebf", +"Bullet list": "\u9879\u76ee\u7b26\u53f7", +"Header 1": "\u6807\u98981", +"Superscript": "\u4e0a\u6807", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Font Sizes": "\u5b57\u53f7", +"Subscript": "\u4e0b\u6807", +"Header 6": "\u6807\u98986", +"Redo": "\u91cd\u590d", +"Paragraph": "\u6bb5\u843d", +"Ok": "\u786e\u5b9a", +"Bold": "\u7c97\u4f53", +"Code": "\u4ee3\u7801", +"Italic": "\u659c\u4f53", +"Align center": "\u5c45\u4e2d", +"Header 5": "\u6807\u98985", +"Heading 6": "\u6807\u98986", +"Heading 3": "\u6807\u98983", +"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", +"Header 4": "\u6807\u98984", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", +"Underline": "\u4e0b\u5212\u7ebf", +"Cancel": "\u53d6\u6d88", +"Justify": "\u4e24\u7aef\u5bf9\u9f50", +"Inline": "\u6587\u672c", +"Copy": "\u590d\u5236", +"Align left": "\u5de6\u5bf9\u9f50", +"Visual aids": "\u7f51\u683c\u7ebf", +"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", +"Square": "\u65b9\u5757", +"Default": "\u9ed8\u8ba4", +"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", +"Circle": "\u7a7a\u5fc3\u5706", +"Disc": "\u5b9e\u5fc3\u5706", +"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", +"Name": "\u540d\u79f0", +"Anchor": "\u951a\u70b9", +"Id": "\u6807\u8bc6\u7b26", +"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", +"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", +"Special character": "\u7279\u6b8a\u7b26\u53f7", +"Source code": "\u6e90\u4ee3\u7801", +"Language": "\u8bed\u8a00", +"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", +"B": "B", +"R": "R", +"G": "G", +"Color": "\u989c\u8272", +"Right to left": "\u4ece\u53f3\u5230\u5de6", +"Left to right": "\u4ece\u5de6\u5230\u53f3", +"Emoticons": "\u8868\u60c5", +"Robots": "\u673a\u5668\u4eba", +"Document properties": "\u6587\u6863\u5c5e\u6027", +"Title": "\u6807\u9898", +"Keywords": "\u5173\u952e\u8bcd", +"Encoding": "\u7f16\u7801", +"Description": "\u63cf\u8ff0", +"Author": "\u4f5c\u8005", +"Fullscreen": "\u5168\u5c4f", +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", +"General": "\u666e\u901a", +"Advanced": "\u9ad8\u7ea7", +"Source": "\u5730\u5740", +"Border": "\u8fb9\u6846", +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", +"Image description": "\u56fe\u7247\u63cf\u8ff0", +"Style": "\u6837\u5f0f", +"Dimensions": "\u5927\u5c0f", +"Insert image": "\u63d2\u5165\u56fe\u7247", +"Image": "\u56fe\u7247", +"Zoom in": "\u653e\u5927", +"Contrast": "\u5bf9\u6bd4\u5ea6", +"Back": "\u540e\u9000", +"Gamma": "\u4f3d\u9a6c\u503c", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", +"Resize": "\u8c03\u6574\u5927\u5c0f", +"Sharpen": "\u9510\u5316", +"Zoom out": "\u7f29\u5c0f", +"Image options": "\u56fe\u7247\u9009\u9879", +"Apply": "\u5e94\u7528", +"Brightness": "\u4eae\u5ea6", +"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", +"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", +"Edit image": "\u7f16\u8f91\u56fe\u7247", +"Color levels": "\u989c\u8272\u5c42\u6b21", +"Crop": "\u88c1\u526a", +"Orientation": "\u65b9\u5411", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", +"Invert": "\u53cd\u8f6c", +"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", +"Remove link": "\u5220\u9664\u94fe\u63a5", +"Url": "\u5730\u5740", +"Text to display": "\u663e\u793a\u6587\u5b57", +"Anchors": "\u951a\u70b9", +"Insert link": "\u63d2\u5165\u94fe\u63a5", +"Link": "\u94fe\u63a5", +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", +"None": "\u65e0", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", +"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", +"Target": "\u6253\u5f00\u65b9\u5f0f", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", +"Media": "\u5a92\u4f53", +"Alternative source": "\u955c\u50cf", +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", +"Insert video": "\u63d2\u5165\u89c6\u9891", +"Poster": "\u5c01\u9762", +"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", +"Embed": "\u5185\u5d4c", +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", +"Page break": "\u5206\u9875\u7b26", +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", +"Preview": "\u9884\u89c8", +"Print": "\u6253\u5370", +"Save": "\u4fdd\u5b58", +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", +"Replace": "\u66ff\u6362", +"Next": "\u4e0b\u4e00\u4e2a", +"Whole words": "\u5168\u5b57\u5339\u914d", +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Replace with": "\u66ff\u6362\u4e3a", +"Find": "\u67e5\u627e", +"Replace all": "\u5168\u90e8\u66ff\u6362", +"Match case": "\u533a\u5206\u5927\u5c0f\u5199", +"Prev": "\u4e0a\u4e00\u4e2a", +"Spellcheck": "\u62fc\u5199\u68c0\u67e5", +"Finish": "\u5b8c\u6210", +"Ignore all": "\u5168\u90e8\u5ffd\u7565", +"Ignore": "\u5ffd\u7565", +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", +"Rows": "\u884c", +"Height": "\u9ad8", +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", +"Border color": "\u8fb9\u6846\u989c\u8272", +"Column group": "\u5217\u7ec4", +"Row": "\u884c", +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", +"Split cell": "\u62c6\u5206\u5355\u5143\u683c", +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", +"Row type": "\u884c\u7c7b\u578b", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Body": "\u8868\u4f53", +"Caption": "\u6807\u9898", +"Footer": "\u8868\u5c3e", +"Delete row": "\u5220\u9664\u884c", +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", +"Scope": "\u8303\u56f4", +"Delete table": "\u5220\u9664\u8868\u683c", +"H Align": "\u6c34\u5e73\u5bf9\u9f50", +"Top": "\u9876\u90e8\u5bf9\u9f50", +"Header cell": "\u8868\u5934\u5355\u5143\u683c", +"Column": "\u5217", +"Row group": "\u884c\u7ec4", +"Cell": "\u5355\u5143\u683c", +"Middle": "\u5782\u76f4\u5c45\u4e2d", +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", +"Copy row": "\u590d\u5236\u884c", +"Row properties": "\u884c\u5c5e\u6027", +"Table properties": "\u8868\u683c\u5c5e\u6027", +"Bottom": "\u5e95\u90e8\u5bf9\u9f50", +"V Align": "\u5782\u76f4\u5bf9\u9f50", +"Header": "\u8868\u5934", +"Right": "\u53f3\u5bf9\u9f50", +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", +"Cols": "\u5217", +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", +"Width": "\u5bbd", +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", +"Left": "\u5de6\u5bf9\u9f50", +"Cut row": "\u526a\u5207\u884c", +"Delete column": "\u5220\u9664\u5217", +"Center": "\u5c45\u4e2d", +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", +"Insert template": "\u63d2\u5165\u6a21\u677f", +"Templates": "\u6a21\u677f", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u81ea\u5b9a\u4e49...", +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", +"No color": "\u65e0", +"Text color": "\u6587\u5b57\u989c\u8272", +"Table of Contents": "\u5185\u5bb9\u5217\u8868", +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", +"Words: {0}": "\u5b57\u6570\uff1a{0}", +"Insert": "\u63d2\u5165", +"File": "\u6587\u4ef6", +"Edit": "\u7f16\u8f91", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", +"Tools": "\u5de5\u5177", +"View": "\u89c6\u56fe", +"Table": "\u8868\u683c", +"Format": "\u683c\u5f0f" +}); \ No newline at end of file diff --git a/static/tinymce1.3/plugins/powerpaste/License.txt b/static/tinymce1.3/plugins/powerpaste/License.txt new file mode 100644 index 0000000000000000000000000000000000000000..b639f8915b41b253d4f46cb39dd6db768d97d5b3 --- /dev/null +++ b/static/tinymce1.3/plugins/powerpaste/License.txt @@ -0,0 +1,15 @@ +TinyMCE PowerPaste +Copyright (C) 2015 Ephox Corporation + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. \ No newline at end of file diff --git a/static/tinymce1.3/plugins/powerpaste/agpl-3.0.txt b/static/tinymce1.3/plugins/powerpaste/agpl-3.0.txt new file mode 100644 index 0000000000000000000000000000000000000000..2def0e8831c25daae02b8b87cd439da27f1ac1c1 --- /dev/null +++ b/static/tinymce1.3/plugins/powerpaste/agpl-3.0.txt @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<http://www.gnu.org/licenses/>. \ No newline at end of file diff --git a/static/tinymce1.3/plugins/powerpaste/css/editorcss.css b/static/tinymce1.3/plugins/powerpaste/css/editorcss.css new file mode 100644 index 0000000000000000000000000000000000000000..73a95afa82c3445099908675c0b9844bc7f09c77 --- /dev/null +++ b/static/tinymce1.3/plugins/powerpaste/css/editorcss.css @@ -0,0 +1,4 @@ +.ephox-salmon-upload-image-container img +{ + opacity: 0.5 +} diff --git a/static/tinymce1.3/plugins/powerpaste/flash/textboxpaste.swf b/static/tinymce1.3/plugins/powerpaste/flash/textboxpaste.swf new file mode 100644 index 0000000000000000000000000000000000000000..6a2a35a0387683578c30890c77ca72f6958ac87f Binary files /dev/null and b/static/tinymce1.3/plugins/powerpaste/flash/textboxpaste.swf differ diff --git a/static/tinymce1.3/plugins/powerpaste/img/spinner_96.gif b/static/tinymce1.3/plugins/powerpaste/img/spinner_96.gif new file mode 100644 index 0000000000000000000000000000000000000000..24af6375eed5580d1beea62eb864f75e4f1876f7 Binary files /dev/null and b/static/tinymce1.3/plugins/powerpaste/img/spinner_96.gif differ diff --git a/static/tinymce1.3/plugins/powerpaste/js/wordimport.js b/static/tinymce1.3/plugins/powerpaste/js/wordimport.js new file mode 100644 index 0000000000000000000000000000000000000000..0c05b1a7d5f0473aa40d38c56e661a2037984f9b --- /dev/null +++ b/static/tinymce1.3/plugins/powerpaste/js/wordimport.js @@ -0,0 +1,381 @@ +/** + * Word Import JavaScript Library + * Copyright (c) 2013-2015 Ephox Corp. All rights reserved. + * This software is provided "AS IS," without a warranty of any kind. + */ +function com_ephox_keurig_Keurig(){var Pb='',Qb='" for "gwt:onLoadErrorFn"',Rb='" for "gwt:onPropertyErrorFn"',Sb='"><\/script>',Tb='#',Ub='&',Vb='/',Wb='90BA12EED4B8175F02A135767FCD6360',Xb=':',Yb=':1',Zb=':2',$b=':3',_b=':4',ac=':5',bc=':6',cc=':7',dc=':8',ec=':9',fc='<script id="',gc='=',hc='?',ic='Bad handler "',jc='DOMContentLoaded',kc='SCRIPT',lc='Single-script hosted mode not yet implemented. See issue ',mc='Unexpected exception in locale detection, using default: ',nc='_',oc='__gwt_Locale',pc='__gwt_marker_com.ephox.keurig.Keurig',qc='base',rc='clear.cache.gif',sc='com.ephox.keurig.Keurig',tc='content',uc='default',vc='en',wc='gecko',xc='gecko1_8',yc='gwt.codesvr=',zc='gwt.hosted=',Ac='gwt.hybrid',Bc='gwt:onLoadErrorFn',Cc='gwt:onPropertyErrorFn',Dc='gwt:property',Ec='http://code.google.com/p/google-web-toolkit/issues/detail?id=2079',Fc='ie10',Gc='ie8',Hc='ie9',Ic='img',Jc='locale',Kc='locale=',Lc='meta',Mc='msie',Nc='name',Oc='safari',Pc='unknown',Qc='user.agent',Rc='webkit';var k=Pb,l=Qb,m=Rb,n=Sb,o=Tb,p=Ub,q=Vb,r=Wb,s=Xb,t=Yb,u=Zb,v=$b,w=_b,A=ac,B=bc,C=cc,D=dc,F=ec,G=fc,H=gc,I=hc,J=ic,K=jc,L=kc,M=lc,N=mc,O=nc,P=oc,Q=pc,R=qc,S=rc,T=sc,U=tc,V=uc,W=vc,X=wc,Y=xc,Z=yc,$=zc,_=Ac,ab=Bc,bb=Cc,cb=Dc,db=Ec,eb=Fc,fb=Gc,gb=Hc,hb=Ic,ib=Jc,jb=Kc,kb=Lc,lb=Mc,mb=Nc,nb=Oc,ob=Pc,pb=Qc,qb=Rc;var rb=window,sb=document,tb,ub,vb=k,wb={},xb=[],yb=[],zb=[],Ab=0,Bb,Cb;if(!rb.__gwt_stylesLoaded){rb.__gwt_stylesLoaded={}}if(!rb.__gwt_scriptsLoaded){rb.__gwt_scriptsLoaded={}}function Db(){var b=false;try{var c=rb.location.search;return (c.indexOf(Z)!=-1||(c.indexOf($)!=-1||rb.external&&rb.external.gwtOnLoad))&&c.indexOf(_)==-1}catch(a){}Db=function(){return b};return b} +function Eb(){if(tb&&ub){tb(Bb,T,vb,Ab)}} +function Fb(){var e,f=Q,g;sb.write(G+f+n);g=sb.getElementById(f);e=g&&g.previousSibling;while(e&&e.tagName!=L){e=e.previousSibling}function h(a){var b=a.lastIndexOf(o);if(b==-1){b=a.length}var c=a.indexOf(I);if(c==-1){c=a.length}var d=a.lastIndexOf(q,Math.min(c,b));return d>=0?a.substring(0,d+1):k} +;if(e&&e.src){vb=h(e.src)}if(vb==k){var i=sb.getElementsByTagName(R);if(i.length>0){vb=i[i.length-1].href}else{vb=h(sb.location.href)}}else if(vb.match(/^\w+:\/\//)){}else{var j=sb.createElement(hb);j.src=vb+S;vb=h(j.src)}if(g){g.parentNode.removeChild(g)}} +function Gb(){var b=document.getElementsByTagName(kb);for(var c=0,d=b.length;c<d;++c){var e=b[c],f=e.getAttribute(mb),g;if(f){if(f==cb){g=e.getAttribute(U);if(g){var h,i=g.indexOf(H);if(i>=0){f=g.substring(0,i);h=g.substring(i+1)}else{f=g;h=k}wb[f]=h}}else if(f==bb){g=e.getAttribute(U);if(g){try{Cb=eval(g)}catch(a){alert(J+g+m)}}}else if(f==ab){g=e.getAttribute(U);if(g){try{Bb=eval(g)}catch(a){alert(J+g+l)}}}}}} +function Hb(a,b){return b in xb[a]} +function Ib(a){var b=wb[a];return b==null?null:b} +function Jb(a,b){var c=zb;for(var d=0,e=a.length-1;d<e;++d){c=c[a[d]]||(c[a[d]]=[])}c[a[e]]=b} +function Kb(a){var b=yb[a](),c=xb[a];if(b in c){return b}var d=[];for(var e in c){d[c[e]]=e}if(Cb){Cb(a,d,b)}throw null} +yb[ib]=function(){var b=null;var c=V;try{if(!b){var d=location.search;var e=d.indexOf(jb);if(e>=0){var f=d.substring(e+7);var g=d.indexOf(p,e);if(g<0){g=d.length}b=d.substring(e+7,g)}}if(!b){b=Ib(ib)}if(!b){b=rb[P]}if(b){c=b}while(b&&!Hb(ib,b)){var h=b.lastIndexOf(O);if(h<0){b=null;break}b=b.substring(0,h)}}catch(a){alert(N+a)}rb[P]=c;return b||V};xb[ib]={'default':0,en:1};yb[pb]=function(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(qb)!=-1}())return nb;if(function(){return b.indexOf(lb)!=-1&&sb.documentMode>=10}())return eb;if(function(){return b.indexOf(lb)!=-1&&sb.documentMode>=9}())return gb;if(function(){return b.indexOf(lb)!=-1&&sb.documentMode>=8}())return fb;if(function(){return b.indexOf(X)!=-1}())return Y;return ob};xb[pb]={gecko1_8:0,ie10:1,ie8:2,ie9:3,safari:4};com_ephox_keurig_Keurig.onScriptLoad=function(a){com_ephox_keurig_Keurig=null;tb=a;Eb()};if(Db()){alert(M+db);return}Fb();Gb();try{var Lb;Jb([V,Y],r);Jb([V,eb],r+t);Jb([V,fb],r+u);Jb([V,gb],r+v);Jb([V,nb],r+w);Jb([W,Y],r+A);Jb([W,eb],r+B);Jb([W,fb],r+C);Jb([W,gb],r+D);Jb([W,nb],r+F);Lb=zb[Kb(ib)][Kb(pb)];var Mb=Lb.indexOf(s);if(Mb!=-1){Ab=Number(Lb.substring(Mb+1))}}catch(a){return}var Nb;function Ob(){if(!ub){ub=true;Eb();if(sb.removeEventListener){sb.removeEventListener(K,Ob,false)}if(Nb){clearInterval(Nb)}}} +if(sb.addEventListener){sb.addEventListener(K,function(){Ob()},false)}var Nb=setInterval(function(){if(/loaded|complete/.test(sb.readyState)){Ob()}},50)} +com_ephox_keurig_Keurig();(function () {var $gwt_version = "2.6.1";var $wnd = window;var $doc = $wnd.document;var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var $strongName = '90BA12EED4B8175F02A135767FCD6360';function A(){} +function Z(){} +function Wo(){} +function ub(){} +function uk(){} +function ik(){} +function mk(){} +function qk(){} +function yk(){} +function Jk(){} +function Ng(){} +function Xg(){} +function fh(){} +function Ah(){} +function Ch(){} +function $n(){} +function xg(a){} +function _b(){Kb()} +function md(){kd()} +function pd(){kd()} +function wd(){td()} +function jf(){hf()} +function pf(){of()} +function vf(){uf()} +function Ef(){Df()} +function Of(){Nf()} +function uh(){jh()} +function db(){bb(this)} +function Sl(){Ql(this)} +function _l(){Wl(this)} +function am(){Wl(this)} +function Mm(a){this.b=a} +function Zm(a){this.b=a} +function W(a){this.b=a} +function Gc(a){this.b=a} +function Lc(a){this.b=a} +function Rn(a){this.b=a} +function tn(a){this.c=a} +function Wd(a,b){a.i=b} +function yh(a,b){a.b+=b} +function Xd(a,b){a.h=a.i=b} +function Ic(a,b){yn(a.b,b)} +function Dg(){return zg} +function Ql(a){a.b=new Ah} +function Wl(a){a.b=new Ah} +function mc(){this.b=new Do} +function Jc(){this.b=new Fn} +function Do(){this.b=new Fn} +function fg(){fg=Wo;eg=new A} +function xb(){xb=Wo;wb=new _b} +function Ec(){Cc();return sc} +function cg(){Tj().w(this)} +function cl(){cg.call(this)} +function Fk(){cg.call(this)} +function Uk(){cg.call(this)} +function Wk(){cg.call(this)} +function Zk(){cg.call(this)} +function eo(){cg.call(this)} +function oo(){cg.call(this)} +function Gk(a){dg.call(this,a)} +function Xk(a){dg.call(this,a)} +function $k(a){dg.call(this,a)} +function gl(a){Xk.call(this,a)} +function hm(a){dg.call(this,a)} +function ae(a){this.b=xl(a+Ap)} +function ic(){this.c=(Cc(),wc)} +function Qo(a,b,c){Dm(a.b,b,c)} +function Sf(a,b){a.b[a.c++]=b} +function Ud(a,b){return a.i+=b} +function Pd(a,b){return a.f[b]} +function Io(a,b){return a.e[b]} +function Am(b,a){return b.f[Pp+a]} +function dk(b,a){return b.exec(a)} +function ak(a){return new $j[a]} +function bk(){return !!$stats} +function Dn(a){return Eh(a.b,a.c)} +function rn(a){return a.b<a.c.J()} +function Qd(a,b){return a.f[b]<=32} +function Gd(a,b){return Hd(a,b,a.k)} +function Kd(a,b){return Ld(a,b,a.k)} +function Rg(a){return Vg((Tj(),a))} +function Mo(a){No.call(this,a,0)} +function cn(a,b){this.c=a;this.b=b} +function jo(a,b){this.b=a;this.c=b} +function Rl(a,b){yh(a.b,b);return a} +function Xl(a,b){yh(a.b,b);return a} +function Co(a,b){yn(a.b,b);return b} +function Ln(a,b,c){a.splice(b,c)} +function Yl(a,b){return ll(a.b.b,b)} +function Fg(a,b){return Bh(a,b,null)} +function Dh(a){return Eh(a,a.length)} +function Wh(a){return a==null?null:a} +function Cm(b,a){return Pp+a in b.f} +function ol(b,a){return b.indexOf(a)} +function Gg(a){$wnd.clearTimeout(a)} +function dg(a){this.f=a;Tj().w(this)} +function Fn(){this.b=Hh(Mj,$o,0,0,0)} +function Tl(a){Ql(this);yh(this.b,a)} +function bm(a){Wl(this);yh(this.b,a)} +function T(a,b){L();this.c=a;this.b=b} +function Nc(a,b){return b<256&&a.b[b]} +function Qh(a,b){return a.cM&&a.cM[b]} +function Jo(a,b){return ek(a.c,a.b,b)} +function Al(a){return Hh(Oj,$o,1,a,0)} +function Sg(a){return parseInt(a)||-1} +function Cg(a){return a.$H||(a.$H=++tg)} +function Ph(a,b){return a.cM&&!!a.cM[b]} +function _c(a,b){return a.b[b>=128?0:b]} +function fk(a,b){return new RegExp(a,b)} +function Vh(a){return a.tM==Wo||Ph(a,1)} +function ll(b,a){return b.charCodeAt(a)} +function ln(a,b){(a<0||a>=b)&&on(a,b)} +function Th(a,b){return a!=null&&Ph(a,b)} +function ek(c,a,b){return a.replace(c,b)} +function pl(c,a,b){return c.indexOf(a,b)} +function ql(b,a){return b.lastIndexOf(a)} +function Yn(){Yn=Wo;Xn=new $n} +function Kg(){Kg=Wo;Jg=new Ng} +function Vo(){Vo=Wo;Uo=new So} +function Ll(){Ll=Wo;Il={};Kl={}} +function ge(){ge=Wo;fe=xl('class=')} +function Ve(){Ve=Wo;Ue=xl(yp);Te=xl(zp)} +function kd(){kd=Wo;ed();jd=xl('style=')} +function Qc(){Qc=Wo;Pc=xl('<v:imagedata ')} +function Re(){Re=Wo;Qe=xl('/*');Pe=xl('*/')} +function Sc(a,b){return Sd(a,b)&&Ed(a,62)} +function wl(c,a,b){return c.substr(a,b-a)} +function Zl(a,b,c){return zh(a.b,b,c,op),a} +function $l(a,b,c,d){zh(a.b,b,c,d);return a} +function An(a,b){ln(b,a.c);return a.b[b]} +function Ho(a){a.e=dk(a.c,a.b);return !!a.e} +function Pk(a){var b=$j[a.d];a=null;return b} +function jg(a){return a==null?null:a.name} +function ig(a){return a==null?null:a.message} +function To(a,b){return a!=null?a[b]:null} +function wg(a,b,c){return a.apply(b,c);var d} +function rl(c,a,b){return c.lastIndexOf(a,b)} +function El(a){return String.fromCharCode(a)} +function So(){this.b=new ho;new ho;new ho} +function De(a){Be();this.b=xe;this.b=a?ye:xe} +function Dc(a,b,c){this.d=a;this.c=c;this.b=b} +function Vd(a,b,c){a.f=b;a.k=c;a.h=a.i=0} +function Mn(a,b,c,d){a.splice(b,c,d)} +function Tf(a,b,c,d){fm(b,c,a.b,a.c,d);a.c+=d} +function yn(a,b){Jh(a.b,a.c++,b);return true} +function Wg(){try{null.a()}catch(a){return a}} +function og(a){var b;return b=a,Vh(b)?b.cZ:Ei} +function Qk(a){return typeof a=='number'&&a>0} +function vl(b,a){return b.substr(a,b.length-a)} +function Uh(a){return a!=null&&a.tM!=Wo&&!Ph(a,1)} +function zh(a,b,c,d){a.b=wl(a.b,0,b)+d+vl(a.b,c)} +function Hl(a,b){zl(a.length,b);return Cl(a,0,b)} +function Og(a,b){!a&&(a=[]);a[a.length]=b;return a} +function Tg(a,b){a.length>=b&&a.splice(0,b);return a} +function ue(){ue=Wo;te=xl(pp);se=xl('<\/span')} +function Ne(){Ne=Wo;Me=xl('xmlns');Le=xl('<html')} +function td(){td=Wo;ed();rd=xl('\n\r{');sd=xl(' \t,')} +function L(){L=Wo;J=(Yn(),Yn(),Xn);K=new W(J)} +function hf(){hf=Wo;oe();ue();cf();gf=new Oc('<\n\r')} +function Mh(){Mh=Wo;Kh=[];Lh=[];Nh(new Ch,Kh,Lh)} +function jh(){jh=Wo;Error.stackTraceLimit=128} +function Vf(a){this.b=Hh(Jj,cp,-1,a,1);this.c=0} +function Zc(a,b){var c;c=a.f;Vd(a,b.b,b.c);b.b=c;b.c=0} +function ng(a,b){var c;return c=a,Vh(c)?c.eQ(b):c===b} +function pg(a){var b;return b=a,Vh(b)?b.hC():Cg(b)} +function P(a,b){L();return new T(new W(a),new W(b))} +function Dm(a,b,c){return !b?Fm(a,c):Em(a,b,c,~~Cg(b))} +function go(a,b){return Wh(a)===Wh(b)||a!=null&&ng(a,b)} +function Eo(a,b){return Wh(a)===Wh(b)||a!=null&&ng(a,b)} +function on(a,b){throw new $k('Index: '+a+', Size: '+b)} +function de(){de=Wo;be=new Oc(Bp);ce=new Oc(' \t\r\n')} +function uf(){uf=Wo;oe();ue();cf();ge();tf=new Oc('<c\n\r')} +function cf(){cf=Wo;af=new Oc(' >\r\n\t');bf=new Oc(Bp)} +function Ad(){Ad=Wo;yd=xl(yp);xd=xl(zp);Re();zd=new wd} +function Ol(){if(Jl==256){Il=Kl;Kl={};Jl=0}++Jl} +function bb(a){if(!ab){ab=true;Vo();Qo(Uo,ci,a);cb(a)}} +function Eg(a){$wnd.setTimeout(function(){throw a},0)} +function Hg(){return Fg(function(){sg!=0&&(sg=0);vg=-1},10)} +function tl(c,a,b){b=Bl(b);return c.replace(RegExp(a,dq),b)} +function ml(a,b){if(!Th(b,1)){return false}return String(a)==b} +function Rh(a,b){if(a!=null&&!Qh(a,b)){throw new Uk}return a} +function sn(a){if(a.b>=a.c.J()){throw new oo}return a.c.T(a.b++)} +function em(a){$k.call(this,'String index out of range: '+a)} +function il(a,b,c){this.b=Rp;this.e=a;this.c=b;this.d=c} +function zb(a,b){xb();this.b=rb(new ub,a);this.c=b;this.d=true} +function Ko(a,b){var c;this.b=b;this.c=fk((c=a.b,c.source),dq)} +function Hh(a,b,c,d,e){var f;f=Gh(e,d);Ih(a,b,c,f);return f} +function Lk(a,b,c){var d;d=new Jk;d.e=a+b;Qk(c)&&Rk(c,d);return d} +function Ih(a,b,c,d){Mh();Oh(d,Kh,Lh);d.cZ=a;d.cM=b;d.qI=c;return d} +function nl(a,b,c,d){var e;for(e=0;e<b;++e){c[d++]=a.charCodeAt(e)}} +function Ag(a,b,c){var d;d=yg();try{return wg(a,b,c)}finally{Bg(d)}} +function xn(a,b,c){(b<0||b>a.c)&&on(b,a.c);Mn(a.b,b,0,c);++a.c} +function Uf(a){for(;a.c>0;a.c--){if(a.b[a.c-1]>32){break}}} +function Fm(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} +function Fh(a,b){var c,d;c=a;d=Gh(0,b);Ih(c.cZ,c.cM,c.qI,d);return d} +function of(){of=Wo;le();$e();Je();Ne();Qc();nf=new Oc('<x\n\r')} +function $e(){$e=Wo;Ze=xl('<![if');Ye=xl(Cp);Xe=xl('<![endif]>')} +function le(){le=Wo;ke=xl('<!--[if');je=xl(Cp);ie=xl('<![endif]-->')} +function qg(a){return a.toString?a.toString():'[JavaScriptObject]'} +function Xh(a){return ~~Math.max(Math.min(a,2147483647),-2147483648)} +function Sh(a){if(a!=null&&(a.tM==Wo||Ph(a,1))){throw new Uk}return a} +function zl(a,b){if(b<0){throw new em(b)}if(b>a){throw new em(b)}} +function Bn(a,b,c){for(;c<a.c;++c){if(Eo(b,a.b[c])){return c}}return -1} +function Cn(a,b){var c;c=(ln(b,a.c),a.b[b]);Ln(a.b,b,1);--a.c;return c} +function Nk(a,b){var c;c=new Jk;c.e=a+b;Qk(0)&&Rk(0,c);c.c=2;return c} +function Ok(a,b){var c;c=new Jk;c.e=op+a;Qk(b)&&Rk(b,c);c.c=1;return c} +function Eh(a,b){var c,d;c=a;d=c.slice(0,b);Ih(c.cZ,c.cM,c.qI,d);return d} +function xl(a){var b,c;c=a.length;b=Hh(Jj,cp,-1,c,1);nl(a,c,b,0);return b} +function Ao(a){var b;b=a.b.c;if(b>0){return An(a.b,b-1)}else{throw new eo}} +function Bo(a){var b;b=a.b.c;if(b>0){return Cn(a.b,b-1)}else{throw new eo}} +function gb(a,b,c){var d;d=hb(a,b,c);if(d>3*c){throw new Wk}else{return d}} +function Zb(a,b){var c,d;c=Ub(a,Gb,b,wp);d=Ub(a,Jb,c,xp);return d==null?b:d} +function xm(a,b){return b==null?a.d:Th(b,1)?Cm(a,Rh(b,1)):Bm(a,b,~~pg(b))} +function ym(a,b){return b==null?a.c:Th(b,1)?Am(a,Rh(b,1)):zm(a,b,~~pg(b))} +function R(a,b){return U(a.c.b,b.c.b)&&(L(),U(Rh(a.b.b,25),Rh(b.b.b,25)))} +function Nn(a,b,c,d){Array.prototype.splice.apply(a,[b,c].concat(d))} +function Oh(a,b,c){Mh();for(var d=0,e=b.length;d<e;++d){a[b[d]]=c[d]}} +function Nh(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function Gm(e,a,b){var c,d=e.f;a=Pp+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} +function Mk(a,b,c,d){var e;e=new Jk;e.e=a+b;Qk(c)&&Rk(c,e);e.c=d?8:0;return e} +function G(a,b){var c,d;d=new am(a.length*b);for(c=0;c<b;c++){yh(d.b,a)}return d.b.b} +function Bh(a,b,c){var d=$wnd.setTimeout(function(){a();c!=null&&xg(c)},b);return d} +function Go(a,b,c){Rl(b,wl(a.b,a.d,a.e.index));yh(b.b,c);a.d=a.c.lastIndex;return a} +function ho(){this.b=[];this.f={};this.d=false;this.c=null;this.e=0} +function hg(a){fg();cg.call(this);this.b=op;this.c=a;this.b=op;Tj().u(this)} +function Bg(a){a&&Mg((Kg(),Jg));--sg;if(a){if(vg!=-1){Gg(vg);vg=-1}}} +function Yj(a){if(Th(a,24)){return a}return a==null?new hg(null):Wj(a)} +function re(a){if(!Yd(a)){return false}if(a.i==a.h){return false}a.h=a.i;return true} +function Ed(a,b){var c;for(c=a.i;c<a.k;c++){if(a.f[c]==b){a.i=c;return true}}return false} +function Jd(a,b){var c;for(c=a.i;c<a.k;c++){if(Nc(b,a.f[c])){a.i=c;return true}}return false} +function Fd(a,b,c){var d;for(d=a.i;d<c;d++){if(a.f[d]==b){a.i=d;return true}}return false} +function jm(a,b){var c;while(a.N()){c=a.O();if(b==null?c==null:ng(b,c)){return a}}return null} +function Mg(a){var b,c;if(a.c){c=null;do{b=a.c;a.c=null;c=Pg(b,c)}while(a.c);a.c=c}} +function Lg(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Pg(b,c)}while(a.b);a.b=c}} +function Pb(a){var b,c;b=a.b>1?' start="'+a.b+tp:op;c=a.c;return sp+c.b+b+c.c+'><li>'} +function Rm(a){var b;b=new Fn;a.d&&yn(b,new Zm(a));wm(a,b);vm(a,b);this.b=new tn(b)} +function X(a){var b,c,d;d=new Fn;for(c=new tn(a);c.b<c.c.J();){b=Rh(sn(c),25);zn(d,b)}return d} +function rb(a,b){var c,d;d=tl(b,''',"'");a.b=new bm(d);c=true;while(c){c=tb(a)}return a.b.b.b} +function mb(a,b){var c,d,e;e=pl(a,Fl(32),b);d=pl(a,Fl(62),b);c=e<d&&e!=-1?e:d;return wl(a,b,c)} +function U(a,b){if(a==null||b==null){throw new Xk('No nulls permitted')}return ng(a,b)} +function Ck(a,b,c){c&&(a=a.replace(new RegExp('\\.\\*',dq),'[\\s\\S]*'));return new RegExp(a,b)} +function ib(a,b,c){if(a.b.b.length>0&&a.b.b.charCodeAt(0)==b){zh(a.b,0,1,op);return c}else{return 0}} +function hb(a,b,c){var d;d=0;while(a.b.b.length>0&&a.b.b.charCodeAt(0)==b){zh(a.b,0,1,op);d+=c}return d} +function zn(a,b){var c,d;c=b.K();d=c.length;if(d==0){return false}Nn(a.b,a.c,0,c);a.c+=d;return true} +function We(a){if(!Sd(a,Ue)){return false}if(!Gd(a,Te)){return false}Xd(a,a.i+Te.length);return true} +function Se(a){if(!Sd(a,Qe)){return false}a.i+=2;if(!Gd(a,Pe)){return false}Xd(a,a.i+2);return true} +function Xj(a){var b;if(Th(a,13)){b=Rh(a,13);if(b.c!==(fg(),eg)){return b.c===eg?null:b.c}}return a} +function Wb(a){var b,c;b=new tn(a.b);while(b.b<b.c.J()){c=Rh(sn(b),11);if(Xb(c)){return false}}return true} +function Td(a,b,c){var d,e,f;for(e=0,f=c.length;e<f;++e){d=c[e];if(Rd(a,b,d)){return true}}return false} +function Kk(a,b,c,d){var e;e=new Jk;e.e=a+b;Qk(c!=0?-c:0)&&Rk(c!=0?-c:0,e);e.c=4;e.b=d;return e} +function Tj(){switch(Sj){case 0:case 5:return new fh;case 4:case 9:return new uh;}return new Xg} +function zg(c){return function(){try{return Ag(c,this,arguments);var b}catch(a){throw a}}} +function Wj(b){var c=b.__gwt$exception;if(!c){c=new hg(b);try{b.__gwt$exception=c}catch(a){}}return c} +function qe(a,b){var c;c=0;while(a.length>b+c&&null!=String.fromCharCode(a[b+c]).match(/[A-Z\d]/i)){++c}return c} +function _f(a){var b,c,d;c=Hh(Nj,$o,23,a.length,0);for(d=0,b=a.length;d<b;++d){if(!a[d]){throw new cl}c[d]=a[d]}} +function Wc(){Wc=Wo;Uc=Ih(Lj,$o,12,[new pf,new Ef,new vf,new jf]);Vc=Ih(Lj,$o,12,[new pf,new Of,new jf])} +function Df(){Df=Wo;cf();Ad();Cf=new De(false);de();Af=new md;Bf=new ae(Jp);zf=new Oc('<lsovwxp')} +function Nf(){Nf=Wo;cf();Ve();Mf=new De(true);de();Jf=new pd;Kf=new ae('class');Lf=new ae(Jp);If=new Oc('<lscovwxp')} +function Je(){Je=Wo;Fe=xl('<meta');Ge=xl('name=');Ie=xl('ProgId');Ee=xl('Generator');He=xl('Originator')} +function M(a){var b;b=yb(Rh(a.c.b,1));return P(b.c.b,X(new Rn(Ih(Mj,$o,0,[Rh(a.b.b,25),Rh(b.b.b,25)]))))} +function Lb(a,b){var c;if(Wb(b)){Jh(a.b,a.c++,b)}else{c=new tn(b.b);while(c.b<c.c.J()){yn(a,new Gc(Rh(sn(c),11).b))}}} +function wm(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new cn(e,c.substring(1));a.G(d)}}} +function Od(a,b){var c;c=b;for(;c>=0;c--){if(a.f[c]==62){return false}if(a.f[c]==60){a.i=c;return true}}return false} +function Yd(a){var b,c;for(c=a.i;c<a.k;c++){b=a.f[c];if(b!=32&&b!=9&&b!=13&&b!=10){a.i=c;return true}}return false} +function Nl(a){Ll();var b=Pp+a;var c=Kl[b];if(c!=null){return c}c=Il[b];c==null&&(c=Ml(a));Ol();return Kl[b]=c} +function Hk(a){if(a>=48&&a<58){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1} +function jb(a,b,c,d){if(a.b.b.length>1&&a.b.b.charCodeAt(0)==b&&a.b.b.charCodeAt(1)==c){zh(a.b,0,2,op);return d}else{return 0}} +function Ob(a,b){var c,d,e;e=new Ko(Db,b);e.e=dk(e.c,e.b);if(e.e){d=Io(e,e.e[1]==null?2:1);c=_k(d);return c==0?1:c}else{return a}} +function Ld(a,b,c){var d,e,f,g;for(g=a.i;g<c;g++){for(e=0,f=b.length;e<f;++e){d=b[e];if(d==a.f[g]){a.i=g;return true}}}return false} +function yg(){var a;if(sg!=0){a=(new Date).getTime();if(a-ug>2000){ug=a;vg=Hg()}}if(sg++==0){Lg((Kg(),Jg));return true}return false} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;Sj=e;if(b)try{mp(Vj)()}catch(a){b(c)}else{mp(Vj)()}} +function No(a,b){var c,d;this.b=(c=false,d=op,(b&1)!=0&&(d+='m'),(b&2)!=0&&(d+=Dp),(b&32)!=0&&(c=true),Ck(a,d,c))} +function Oc(a){var b;this.b=Hh(Pj,ap,-1,256,2);for(b=0;b<a.length;b++){a.charCodeAt(b)<256&&(this.b[a.charCodeAt(b)]=true)}} +function Zd(a){this.j=Ih(Qj,bp,2,[]);this.f=Hh(Jj,cp,-1,a.length,1);nl(a,a.length,this.f,0);this.k=a.length;this.h=this.i=0} +function En(a,b){var c;b.length<a.c&&(b=Fh(b,a.c));for(c=0;c<a.c;++c){Jh(b,c,a.b[c])}b.length>a.c&&Jh(b,a.c,null);return b} +function Sd(a,b){var c,d;c=b.length-1;if((d=a.i+c)>=a.k){return false}do{if(b[c--]!=a.f[d--]){return false}}while(c>=0);return true} +function Rd(a,b,c){var d,e;e=b;d=c.length-1;if((e+=d)>=a.k){return false}do{if(c[d--]!=a.f[e--]){return false}}while(d>=0);return true} +function ld(a,b,c){var d;if(!Sd(b,jd)){return false}d=b.h;if(!Od(b,d)){return false}b.i=d;return Md(b)&&fd(a,b,c,d,b.e,b.d,b.b)} +function tb(a){var b,c,d,e;c=a.b.b.b.indexOf('mso-number-format:');if(c<0){return false}d=c+18;b=sb(a,d);e=d-18;e>-1&&Zl(a.b,e,b);return true} +function Bl(a){var b;b=0;while(0<=(b=a.indexOf('\\',b))){a.charCodeAt(b+1)==36?(a=wl(a,0,b)+'$'+vl(a,++b)):(a=wl(a,0,b)+vl(a,++b))}return a} +function kh(a,b){var c;c=eh(a,b);if(c.length==0){return (new Xg).A(b)}else{c[0].indexOf('anonymous@@')==0&&(c=Tg(c,1));return c}} +function zm(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.P();if(h.M(a,g)){return f.Q()}}}return null} +function Bm(h,a,b){var c=h.b[b];if(c){for(var d=0,e=c.length;d<e;++d){var f=c[d];var g=f.P();if(h.M(a,g)){return true}}}return false} +function kc(a,b){var c;if(b.c==(Cc(),uc)||b.c==Ac){if(Ho(new Ko(gc,a))||Ho(new Ko(cc,a))){c=fb(a);if(c==b.b+1){return true}}}return false} +function Id(a,b,c,d){var e,f,g;g=a.k-d+1;for(f=a.i;f<g;f++){for(e=0;e<d;e++){if(b[c+e]!=a.f[f+e]){break}}if(e==d){a.i=f;return true}}return false} +function Hd(a,b,c){var d,e,f,g;d=b.length;g=c-b.length+1;for(f=a.i;f<g;f++){for(e=0;e<d;e++){if(b[e]!=a.f[f+e]){break}}if(e==d){a.i=f;return true}}return false} +function vm(h,a){var b=h.b;for(var c in b){var d=parseInt(c,10);if(c==d){var e=b[d];for(var f=0,g=e.length;f<g;++f){a.G(e[f])}}}} +function eh(a,b){var c,d,e,f;e=Uh(b)?Sh(b):null;f=e&&e.stack?e.stack.split('\n'):[];for(c=0,d=f.length;c<d;c++){f[c]=a.v(f[c])}return f} +function Cl(a,b,c){var d=op;for(var e=b;e<c;){var f=Math.min(e+10000,c);d+=String.fromCharCode.apply(null,a.slice(e,f));e=f}return d} +function Oe(a,b){if(!Sd(a,Me)){return false}if(!Nd(a)){return false}if(!Rd(a,a.m,Le)){return false}if(!Md(a)){return false}Xd(a,a.b);Uf(b);return true} +function me(a){if(!Sd(a,ke)){return false}Ud(a,ke.length);if(!Gd(a,je)){return false}Ud(a,je.length);if(!Gd(a,ie)){return false}Xd(a,a.i+ie.length);return true} +function hn(a,b){var c,d;for(c=0,d=a.b.length;c<d;++c){if(b==null?(ln(c,a.b.length),a.b[c])==null:ng(b,(ln(c,a.b.length),a.b[c]))){return c}}return -1} +function Uj(){switch(Sj){case 4:case 9:return new yk;case 1:case 6:return new mk;case 3:case 8:return new uk;case 2:case 7:return new qk;}return new ik} +function yl(c){if(c.length==0||c[0]>fq&&c[c.length-1]>fq){return c}var a=c.replace(/^([\u0000-\u0020]*)/,op);var b=a.replace(/[\u0000-\u0020]*$/,op);return b} +function Gh(a,b){var c=new Array(b);if(a==3){for(var d=0;d<b;++d){c[d]={l:0,m:0,h:0}}}else if(a>0&&a<3){var e=a==1?0:false;for(var d=0;d<b;++d){c[d]=e}}return c} +function sl(d,a,b){var c;if(a<256){c=al(a);c='\\x'+'00'.substring(c.length)+c}else{c=String.fromCharCode(a)}return d.replace(RegExp(c,dq),String.fromCharCode(b))} +function Rk(a,b){var c;b.d=a;if(a==2){c=String.prototype}else{if(a>0){var d=Pk(b);if(d){c=d.prototype}else{d=$j[a]=function(){};d.cZ=b;return}}else{return}}c.cZ=b} +function Fl(a){var b,c;if(a>=65536){b=55296+(~~(a-65536)>>10&1023)&65535;c=56320+(a-65536&1023)&65535;return El(b)+El(c)}else{return String.fromCharCode(a&65535)}} +function Ro(a){var b,c,d,e,f;f=ul(a,'\\.',0);e=$wnd;b=0;for(c=f.length-1;b<c;b++){if(!ml(f[b],'client')){e[f[b]]||(e[f[b]]={});e=To(e,f[b])}}d=To(e,f[b]);return d} +function sb(a,b){var c,d,e,f,g,h;e=b;f=b-18>-1;d=false;g=0;while(f){c=Yl(a.b,e);c==34&&g!=92&&(d=!d);(h=c==59&&!d,e==a.b.b.b.length-1||h)&&(f=false);++e;g=c}return e} +function oe(){oe=Wo;ne=new ad(Ih(Oj,$o,1,['font','span','b',Dp,'u','sub','sup','em','strong','samp','acronym','cite','code','dfn','kbd','tt','s','ins','del','var']))} +function el(){el=Wo;dl=Ih(Jj,cp,-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function Be(){Be=Wo;ze=xl('<link');Ae=xl('rel=');xe=Ih(Qj,bp,2,[xl(Ep),xl(Fp),xl(Gp),xl(Hp),xl(Ip)]);ye=Ih(Qj,bp,2,[xl(Ep),xl(Fp),xl(Gp),xl(Hp),xl(Ip),xl('stylesheet')])} +function al(a){var b,c,d;b=Hh(Jj,cp,-1,8,1);c=(el(),dl);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return Cl(b,d,8)} +function yb(a){var b,c,d;c='Content before importing MS-Word lists:\r\n'+a;d=Qb(wb,a);b='Content after importing MS-Word lists:\r\n'+d;return P(d,new Rn(Ih(Oj,$o,1,[c,b])))} +function km(a){var b,c,d,e;d=new Sl;b=null;yh(d.b,Sp);c=a.I();while(c.N()){b!=null?(yh(d.b,b),d):(b=gq);e=c.O();yh(d.b,e===a?'(this Collection)':op+e)}yh(d.b,Tp);return d.b.b} +function Ub(a,b,c,d){var e,f,g,h;f=new Ko(b,c);f.e=dk(f.c,f.b);if(f.e){e=f.e[1];h=f.e[2];g=ek(f.c,f.b,sp+d+e+"><li style='list-style: none;'><"+d+h+vp);return Zb(a,g)}return c} +function _e(a,b){var c,d;if(!Sd(a,Ze)){return false}if(!Gd(a,Ye)){return false}c=a.i+Ye.length;if(!Gd(a,Xe)){return false}d=a.i;Tf(b,a.f,c,d-c);Xd(a,a.i+Xe.length);return true} +function _d(a,b,c){if(!Sd(b,a.b)){return false}if(!Od(b,b.h)){return false}if(!Qd(b,b.h-1)){return false}b.i=b.h+a.b.length-1;if(!Md(b)){return false}Uf(c);b.h=b.i=b.b;return true} +function Xc(a,b){Wc();var c,d,e,f,g;c=new Zd(a);e=new Vf(a.length);g=b==1?Vc:Uc;d=g.length-1;for(f=0;f<d;f++){Yc(c,e,g[f]);Zc(c,e)}while(Yc(c,e,g[d])){Zc(c,e)}return Hl(e.b,e.c)} +function gg(a){var b;if(a.d==null){b=a.c===eg?null:a.c;a.e=b==null?Lp:Uh(b)?jg(Sh(b)):Th(b,1)?Mp:og(b).e;a.b=a.b+Kp+(Uh(b)?ig(Sh(b)):b+op);a.d=Np+a.e+') '+(Uh(b)?Rg(Sh(b)):op)+a.b}} +function Sb(a,b){var c,d,e;e=new _l;for(c=0;c<a;c++){d=Rh(Bo(b.b),6).c;yh(e.b,'<\/');Xl(e,d.b);e.b.b+=vp;(b.b.b.c==0?(hc(),fc):Rh(Ao(b.b),6))!=(hc(),fc)&&(yh(e.b,up),e)}return e.b.b} +function Vg(b){var c=op;try{for(var d in b){if(d!='name'&&d!='message'&&d!='toString'){try{var e=d!='__gwt$exception'?b[d]:'<skipped>';c+='\n '+d+Kp+e}catch(a){}}}}catch(a){}return c} +function ck(a){return $stats({moduleName:$moduleName,sessionId:$sessionId,subSystem:'startup',evtGroup:'moduleStartup',millis:(new Date).getTime(),type:'onModuleLoadStart',className:a})} +function Qg(a){var b,c,d;d=op;a=yl(a);b=a.indexOf(Np);c=a.indexOf('function')==0?8:0;if(b==-1){b=ol(a,Fl(64));c=a.indexOf('function ')==0?9:0}b!=-1&&(d=yl(wl(a,c,b)));return d.length>0?d:Op} +function Pg(b,c){var d,e,f,g;for(e=0,f=b.length;e<f;e++){g=b[e];try{g[1]?g[0].U()&&(c=Og(c,g)):g[0].U()}catch(a){a=Yj(a);if(Th(a,24)){d=a;Eg(Th(d,13)?Rh(d,13).s():d)}else throw Xj(a)}}return c} +function Qb(a,b){var c,d,e;c=(d=new Ko(new No('<\/?u[0-9]:p>',33),b),ek(d.c,d.b,op));c=Rb(a,c);c=Jo(new Ko(Ib,c),'$1');c=(e=new Ko(new No('style *?=[\'"](;?)[\'"]',32),c),ek(e.c,e.b,op));return c} +function Tb(a,b,c){var d,e;if(b>0){for(d=0;d<b;d++){Co(c.b,a)}return G(Pb(a),b)}else{if(ml(a.c.b,(c.b.b.c==0?(hc(),fc):Rh(Ao(c.b),6)).c.b)){return '<li>'}else{e=Sb(1,c)+Pb(a);Co(c.b,a);return e}}} +function $b(a,b,c,d,e){var f,g,h;h=b;g=new _l;if(b>=c){yh(g.b,up);Xl(g,Sb(b-c,a))}f=a.b.b.c==0?(hc(),fc):Rh(Ao(a.b),6);if(b==c&&f.c!=e.c){Xl(g,Sb(b,a));h=0}Xl(g,Tb(e,c-h,a));yh(g.b,d);return g.b.b} +function Ce(a,b){if(!Sd(b,ze)){return false}Wd(b,b.h+ze.length);if(!Nd(b)){return false}if(!Hd(b,Ae,b.l)){return false}if(!Md(b)){return false}if(!Td(b,b.e,a.b)){return false}Xd(b,b.l+1);return true} +function ee(a,b){var c,d;c=a.f;d=a.h;if(c[d+1]!=58){return false}if(!Nc(be,c[d])){return false}if(!Nc(ce,c[d-1])){return false}if(!Nd(a)){return false}if(!Md(a)){return false}Xd(a,a.b);Uf(b);return true} +function Yb(a){var b,c,d,e,f,g;e=a;if(a.indexOf(pp)==0){c=a.indexOf(rp);if(c>0){d=ol(a,Fl(62))+1;b=wl(a,d,c);g=new Mo('^(?: |\\s)*$');f=new Ko(g,b);f.e=dk(f.c,f.b);!!f.e&&(e=vl(a,c+7))}}return e} +function Ml(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c<e){b=a.charCodeAt(c+3)+31*(a.charCodeAt(c+2)+31*(a.charCodeAt(c+1)+31*(a.charCodeAt(c)+31*b)))|0;c+=4}while(c<d){b=b*31+ll(a,c++)}return b|0} +function Em(j,a,b,c){var d=j.b[c];if(d){for(var e=0,f=d.length;e<f;++e){var g=d[e];var h=g.P();if(j.M(a,h)){var i=g.Q();g.R(b);return i}}}else{d=j.b[c]=[]}var g=new jo(a,b);d.push(g);++j.e;return null} +function nb(a){var b,c,d,e;c=new Mo('(class=)([^>[ \\t\\n\\x0B\\f\\r]]*)');b=new Ko(c,a);e=new Sl;while(b.e=dk(b.c,b.b),!!b.e){d=b.e[2];d=d.toLowerCase();Go(b,e,b.e[1]+d)}Rl(e,vl(b.b,b.d));return e.b.b} +function Jh(a,b,c){if(c!=null){if(a.qI>0&&!Qh(c,a.qI)){throw new Fk}else if(a.qI==-1&&(c.tM==Wo||Ph(c,1))){throw new Fk}else if(a.qI<-1&&!(c.tM!=Wo&&!Ph(c,1))&&!Qh(c,-a.qI)){throw new Fk}}return a[b]=c} +function hc(){hc=Wo;bc=new Mo('([\xB7\xA7\u2022\u2043\u25A1o-]|\xD8|·|<img[^>]*>)');gc=new Mo('[A-Z]+');cc=new Mo('[a-z]+');ec=new Mo('X?(?:IX|IV|V?I{0,3})');dc=new Mo('x?(?:ix|iv|v?i{0,3})');fc=new ic} +function _j(a,b,c){var d=$j[a];if(d&&!d.cZ){_=d.prototype}else{!d&&(d=$j[a]=function(){});_=d.prototype=b<0?{}:ak(b);_.cM=c}for(var e=3;e<arguments.length;++e){arguments[e].prototype=_}if(d.cZ){_.cZ=d.cZ;d.cZ=null}} +function Nd(a){for(a.m=a.i;a.m>=0;a.m--){if(a.f[a.m]==62){return false}if(a.f[a.m]==60){break}}if(a.m<0){return false}for(a.l=a.i;a.l<a.k;a.l++){if(a.f[a.l]==60){return false}if(a.f[a.l]==62){return true}}return false} +function fb(a){var b,c,d,e,f;f=a.toLowerCase();if(f.length==0){return 1}else if(f.length==1){c=f.charCodeAt(0);e=c+1-97}else{e=0;for(d=0;d<f.length;d++){c=ll(f,f.length-1-d);b=fb(String.fromCharCode(c))*Xh(Math.pow(26,d));e+=b}}return e} +function Ke(a){var b,c;if(!Sd(a,Fe)){return false}if(!Ed(a,62)){return false}b=a.i;Wd(a,a.h+Fe.length);if(!Hd(a,Ge,b)){return false}c=a.i+Ge.length;a.f[c]==34&&++c;if(Rd(a,c,Ie)||Rd(a,c,Ee)||Rd(a,c,He)){a.h=a.i=b+1;return true}return false} +function ef(a){var b,c;if((a.i>=a.k?0:a.f[a.i])!=64){return false}b=a.h;a.i+=1;c=a.f[b+1];if(!(null!=String.fromCharCode(c).match(/[A-Z]/i))&&c!=95){return false}if(!Ed(a,123)){return false}if(!Ed(a,125)){return false}Xd(a,a.i+1);return true} +function vd(a,b,c){var d,e,f,g;e=c;a.i=b;if(!Fd(a,46,c)){return}do{a.i+=1}while(Fd(a,46,c));d=a.i;Ld(a,sd,c)&&(e=a.i);if(e==d){return}f=a.j;g=f.length;a.j=Hh(Qj,bp,2,g+1,0);g!=0&&fm(f,0,a.j,0,g);a.j[g]=Hh(Jj,cp,-1,e-d,1);fm(a.f,d,a.j[g],0,e-d)} +function Xb(a){var b,c,d,e,f,g,h;c=a.b;g=new Ko(Hb,c);g.e=dk(g.c,g.b);if(g.e){f=g.e[2];h=new Ko(Eb,f);h.e=dk(h.c,h.b);if(h.e){e=h.e[1];b=h.e[2];d=new Ko(new Mo('^\\d\\.'),e);d.e=dk(d.c,d.b);if(!!d.e&&f.indexOf(e+b)!=-1){return true}}}return false} +function ob(b,c,d){var e,f,g;try{g=b?(Wc(),Tc):1;e=Xc(d,g);e=pb(e);b&&!c&&(e=nb(e));return L(),L(),new T(new W(e),K)}catch(a){a=Yj(a);if(Th(a,20)){f=a;return L(),P(op,new Rn(Ih(Oj,$o,1,['Failed to clean MS Office HTML.\n'+f.r()])))}else throw Xj(a)}} +function Cd(a,b){var c,d,e,f,g;if(!Sd(a,yd)){return false}g=a.i;if(!Gd(a,xd)){return false}c=a.i+xd.length;d=b.c;Tf(b,yd,0,yd.length);e=a.k;Vd(a,a.f,a.i);Xd(a,g+yd.length);f=Bd(a,b);Vd(a,a.f,e);if(f){Tf(b,xd,0,xd.length);a.h=a.i=c}else{b.c=d;a.h=a.i=g}return f} +function ad(a){var b,c,d,e,f,g,h;this.b=Hh(Rj,$o,3,128,0);for(c=0,d=a.length;c<d;++c){b=a[c];g=xl(b);e=g[0];e>=128&&(e=0);if(this.b[e]==null){this.b[e]=Ih(Qj,bp,2,[g])}else{h=this.b[e];f=h.length;this.b[e]=Hh(Qj,bp,2,f+1,0);fm(h,0,this.b[e],0,f);this.b[e][f]=g}}} +function Rc(a,b){var c,d,e,f;if(!Sc(a,Pc)){return false}d=a.i;c=a.h+Pc.length;a.i=c;a.h=a.i=c;e=xl('<img ');Tf(b,e,0,e.length);f=xl('o:title="');if(!Hd(a,f,d)){return true}Tf(b,a.f,c,a.i-c);Wd(a,a.i+f.length);if(!Fd(a,34,d)){return true}Wd(a,a.i+1);Xd(a,a.i);return true} +function Vb(a){var b,c,d,e;e=new Fn;d=null;for(c=0;c<a.c;c++){b=(ln(c,a.c),Rh(a.b[c],10));if(Th(b,8)){if(!Ho(new Ko(Fb,Rh(b,8).b))||c+1>=a.c||!Th((ln(c+1,a.c),a.b[c+1]),11)||!d){if(d){Lb(e,d);d=null}Jh(e.b,e.c++,b)}}else{!d&&(d=new Jc);Ic(d,Rh(b,11))}}!!d&&Lb(e,d);return e} +function he(a,b){var c,d;if(a.j.length==0){return false}if(!Sd(a,fe)){return false}if(!Nd(a)){return false}if(!Md(a)){return false}c=a.d-a.e;for(d=0;d<a.j.length;d++){if(a.j[d].length==c){if(Rd(a,a.e,a.j[d])){break}}}if(d==a.j.length){return false}Xd(a,a.b);Uf(b);return true} +function Bd(a,b){var c,d,e,f;d=false;f=32;c=a.i>=a.k?0:a.f[a.i];while(c!=0){e=false;switch(c){case 64:e=ef(a);break;case 47:e=Se(a);}!e&&(f==10||f==13)&&(e=ud(zd,a,b));if(e){d=true;f=b.c==0?0:b.b[b.c-1];a.i=a.h;c=a.i>=a.k?0:a.f[a.i]}else{Sf(b,f=c);c=(a.i=++a.h)>=a.k?0:a.f[a.i]}}return d} +function Mb(a,b,c,d,e){var f,g,h,i,j;i=sl(yl(e),10,32);i.lastIndexOf(rp)!=-1&&i.lastIndexOf(rp)==i.length-rp.length&&(i=wl(i,0,i.length-7));while(i.indexOf(sp)==0){h=ol(i,Fl(62));i=vl(i,h+1)}g=ol(i,Fl(60));i=vl(i,g);i=Yb(i);f=new Ko(Cb,i);i=ek(f.c,f.b,op);j=new jc('-',(hc(),fc));Xl(c,$b(a,b,d,i,j))} +function lh(a,b){var c,d,e,f,g,h,i,j,k,l;l=Hh(Nj,$o,23,b.length,0);for(f=0,g=l.length;f<g;f++){k=ul(b[f],Qp,0);i=-1;c=-1;e=Rp;if(k.length==2&&k[1]!=null){j=k[1];h=ql(j,Fl(58));d=rl(j,Fl(58),h-1);e=wl(j,0,d);if(h!=-1&&d!=-1){i=Sg(wl(j,d+1,h));c=Sg(vl(j,h+1))}}l[f]=new il(k[0],e+np+c,a.C(i<0?-1:i))}_f(l)} +function _k(a){var b,c,d,e,f;if(a==null){throw new gl(Lp)}d=a.length;e=d>0&&(a.charCodeAt(0)==45||a.charCodeAt(0)==43)?1:0;for(b=e;b<d;b++){if(Hk(a.charCodeAt(b))==-1){throw new gl(eq+a+tp)}}f=parseInt(a,10);c=f<-2147483648;if(isNaN(f)){throw new gl(eq+a+tp)}else if(c||f>2147483647){throw new gl(eq+a+tp)}return f} +function ve(a,b){var c,d,e,f;if(!Sd(a,te)){return false}f=a.h+te.length;for(;f<a.k;f++){c=a.f[f];if(c==62){break}if(c!=32&&c!=10&&c!=9&&c!=13){return false}}e=a.i=f+1;if(!Gd(a,se)){return false}d=a.i;a.i=e;if(Hd(a,te,d)){return false}Wd(a,d+se.length);if(!Ed(a,62)){return false}Tf(b,a.f,e,d-e);Xd(a,a.i+1);return true} +function ed(){ed=Wo;dd=new ad(Ih(Oj,$o,1,['font-color','horiz-align','language','list-image-','mso-','page:','separator-image','tab-stops','tab-interval','text-underline','text-effect','text-line-through','table-border-color-dark','table-border-color-light','vert-align','vnd.ms-excel.']));cd=new ad(Ih(Oj,$o,1,['mso-list']))} +function Yc(a,b,c){var d,e,f,g,h,i,j;j=a.k;e=a.f;a.h=a.i=0;f=32;d=c.p();h=0;i=0;g=false;while(i<j){for(;h<j;h++){f=e[h];if(f<256&&d[f]){break}}if(h>=j){fm(e,i,b.b,b.c,j-i);b.c+=j-i;break}(f==10||f==13)&&++h;h!=i&&(fm(e,i,b.b,b.c,h-i),b.c+=h-i);if(h==j){break}a.i=a.h=h;if(c.q(a,b,f)){g=true;i=h=a.i=a.h}else{i=h;f!=10&&f!=13&&++h}}return g} +function fd(a,b,c,d,e,f,g){var h,i,j,k,l,m;l=d;m=e;k=c.c;b.i=e;i=false;j=false;while(m<f){if(!Yd(b)||b.i>=f){break}h=a.o(b);if(h){i=true;m!=l&&Tf(c,b.f,l,m-l);if(Fd(b,59,f)){l=m=b.i+=1}else{l=f;break}}else{j=true;if(Fd(b,59,f)){m=b.i+=1}else{break}}}if(j&&!i){return false}if(j&&i){g!=l&&Tf(c,b.f,l,g-l)}else{c.c=k;Uf(c)}b.h=b.i=g;return true} +function Cc(){Cc=Wo;wc=new Dc('NO_TYPE',op,op);zc=new Dc('UNORDERED',xp,op);yc=new Dc('SQUARE',xp,' type="square"');tc=new Dc('CIRCLE',xp,' type="circle"');xc=new Dc('NUMERIC',wp,op);Bc=new Dc('UPPER_ROMAN',wp,' type="I"');vc=new Dc('LOWER_ROMAN',wp,' type="i"');Ac=new Dc('UPPER_ALPHA',wp,' type="A"');uc=new Dc('LOWER_ALPHA',wp,' type="a"');sc=Ih(Kj,$o,7,[wc,zc,yc,tc,xc,Bc,vc,Ac,uc])} +function ud(a,b,c){var d,e,f,g,h,i,j,k,l;i=b.i;if(b.f[b.i+-1]!=10&&b.f[b.i+-1]!=13){return false}d=b.i>=b.k?0:b.f[b.i];if(d==123||d==125){return false}f=b.i;if(!Kd(b,rd)){return false}e=b.i;if((b.i>=b.k?0:b.f[b.i])!=123){if(!Yd(b)){return false}if((b.i>=b.k?0:b.f[b.i])!=123){return false}}l=b.i+1;if(!Ed(b,125)){return false}j=b.i;k=j+1;g=c.c;h=fd(a,b,c,i,l,j,k);h&&c.c<=g&&vd(b,f,e);return h} +function pe(a){var b,c,d,e,f,g;d=a.h+1;b=a.f[d];if(b>127){return false}g=ne.b[b];if(g==null){return false}f=qe(a.f,d);for(c=0;c<g.length;c++){if(Rd(a,d,g[c])&&f==g[c].length){break}}if(c==g.length){return false}e=g[c];a.i=d+e.length;if(!Ed(a,62)){return false}d=a.i+1;if(a.f[d++]!=60||a.f[d++]!=47){return false}if(!Rd(a,d,e)){return false}a.i=d+e.length;if(!Ed(a,62)){return false}Xd(a,a.i+1);return true} +function df(a,b){var c,d,e,f,g,h;f=a.h;if(a.f[f+2]!=58||a.f[f]!=60){return false}if(!Nc(bf,a.f[f+1])){return false}h=f+1;a.i=f+3;if(!Jd(a,af)){return false}g=a.i-h;if(!Ed(a,62)){return false}if(Pd(a,a.i-1)==47){Xd(a,a.i+1);return true}e=a.i+1;while(Id(a,a.f,h,g)){d=a.i-1;c=a.f[d];if(c==60){return false}if(c==47&&Pd(a,--d)==60){if(!Ed(a,62)){return false}Tf(b,a.f,e,d-e);Xd(a,a.i+1);return true}++a.i}return false} +function ul(l,a,b){var c=new RegExp(a,dq);var d=[];var e=0;var f=l;var g=null;while(true){var h=c.exec(f);if(h==null||f==op||e==b-1&&b>0){d[e]=f;break}else{d[e]=f.substring(0,h.index);f=f.substring(h.index+h[0].length,f.length);c.lastIndex=0;if(g==f){d[e]=f.substring(0,1);f=f.substring(1)}g=f;e++}}if(b==0&&l.length>0){var i=d.length;while(i>0&&d[i-1]==op){--i}i<d.length&&d.splice(i,d.length-i)}var j=Al(d.length);for(var k=0;k<d.length;++k){j[k]=d[k]}return j} +function Md(a){var b,c;for(b=a.i;b<a.k;b++){if(a.f[b]==62){return false}if(a.f[b]==61){break}}if(b==a.k){return false}a.c=++b;c=a.f[b];if(c==34||c==39){a.e=++b;for(;b<a.k;b++){if(a.f[b]==62){return false}if(a.f[b]==c){break}}if(b==a.k){return false}a.d=b;a.b=b+1;a.i=a.e;return true}else{a.e=a.c;for(;b<a.k;b++){if(a.f[b]==62){break}if(a.f[b]==32){break}if(a.f[b]==9){break}if(a.f[b]==13){break}if(a.f[b]==10){break}}if(b==a.k){return false}a.d=a.b=b;return true}} +function kb(b){var c,d,e,f,g,h,i;d=0;c=new Tl(b.toLowerCase());e=false;try{d=(f=(g=0,g+=gb(c,109,1000),g+=jb(c,99,109,900),g+=ib(c,100,500),g+=jb(c,99,100,400),g),f=(h=f,h+=gb(c,99,100),h+=jb(c,120,99,90),h+=ib(c,108,50),h+=jb(c,120,108,40),h),f=(i=f,i+=gb(c,120,10),i+=jb(c,105,120,9),i+=ib(c,118,5),i+=jb(c,105,118,4),i),f+=gb(c,105,1),f)}catch(a){a=Yj(a);if(Th(a,21)){e=true}else throw Xj(a)}if(e||c.b.b.length>0){throw new Xk(b+' is not a parsable roman numeral')}return d} +function Vj(){var a,b,c;bk()&&ck('com.google.gwt.useragent.client.UserAgentAsserter');a=Rh(Uj(),15);b=a.D();c=a.F();ml(b,c)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value ('+b+') does not match the runtime user.agent value ('+c+'). Expect more errors.\n'),undefined);bk()&&ck('com.google.gwt.user.client.DocumentModeAsserter');gk();bk()&&ck('com.ephox.keurig.client.Keurig');Vo();new db;$wnd.gwtInited&&$wnd.gwtInited()} +function pb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,q;d=new bm(a);b=d.b.b.length;while(b>-1){b=rl(d.b.b,'<p',b);c=pl(d.b.b,'<\/p>',b);if(b>-1&&c>-1){q=wl(d.b.b,b,c);m=q.indexOf(pp);if(m>-1){l=ol(q,Fl(62));if(l+1==m){f=pl(q,Fl(62),m);n=wl(q,m,f+1);e=n.indexOf(qp);if(e>-1){h=q.lastIndexOf(rp);if(7+h==q.length){i=wl(q,0,ol(q,Fl(62))+1);k=i.indexOf(qp);if(k>-1){j=mb(q,k);o=mb(n,e);if(!ml(j,o)){g=q.length-7;$l(d,g+b,q.length+b,op);$l(d,m+b,m+n.length+b,op);$l(d,k+b,k+j.length+b,o)}}}}}}}--b}return d.b.b} +function Rb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,q,r,s,t,u,v;g=Nb(b);v=Vb(g);s=new mc;u=new _l;for(f=new tn(v);f.b<f.c.J();){e=Rh(sn(f),10);if(Th(e,8)){Xl(u,Rh(e,8).b)}else{h=new tn(Rh(e,9).b);j=0;k=new _l;i=(hc(),fc);while(h.b<h.c.J()){r=Rh(sn(h),11);q=new Ko(Hb,r.b);q.e=dk(q.c,q.b);if(q.e){c=q.e[1];m=Ob(j,c);t=q.e[2];n=new Ko(Eb,t);n.e=dk(n.c,n.b);if(n.e){d=n.e[1];l=Jo(new Ko(Bb,n.e[2]),op);o=new jc(d,i);i=o;Xl(k,$b(s,j,m,l,o))}else{Mb(s,j,k,m,t)}j=m}}yh(k.b,up);Xl(k,Sb(j,s));Xl(u,Zb(a,k.b.b))}}return u.b.b} +function fm(a,b,c,d,e){var f,g,h,i,j,k,l,m,n;if(a==null||c==null){throw new cl}m=og(a);i=og(c);if((m.c&4)==0||(i.c&4)==0){throw new Gk('Must be array types')}l=m.b;g=i.b;if(!((l.c&1)!=0?l==g:(g.c&1)==0)){throw new Gk('Array types must match')}n=a.length;j=c.length;if(b<0||d<0||e<0||b+e>n||d+e>j){throw new Zk}if(((l.c&1)==0||(l.c&4)!=0)&&m!=i){k=Rh(a,22);f=Rh(c,22);if(Wh(a)===Wh(c)&&b<d){b+=e;for(h=d+e;h-->d;){Jh(f,h,k[--b])}}else{for(h=d+e;d<h;){Jh(f,d++,k[b++])}}}else{Array.prototype.splice.apply(c,[d,e].concat(a.slice(b,b+e)))}} +function Nb(a){var b,c,d,e,f,g,h,i,j;e=new Fn;h=new Ko(Hb,a);f=0;while(h.e=dk(h.c,h.b),!!h.e){j=h.e[1];b=new Ko(Db,j);b.e=dk(b.c,b.b);if(b.e){i=!h.e||h.e.length<1?-1:h.e.index;if(i>f){d=new Gc(wl(a,f,i));Jh(e.b,e.c++,d)}g=new Lc(wl(a,!h.e||h.e.length<1?-1:h.e.index,!h.e||h.e.length<1?-1:h.e.index+h.e[0].length));Jh(e.b,e.c++,g)}else{c=(!h.e||h.e.length<1?-1:h.e.index)>f?f:!h.e||h.e.length<1?-1:h.e.index;d=new Gc(wl(a,c,!h.e||h.e.length<1?-1:h.e.index+h.e[0].length));Jh(e.b,e.c++,d)}f=!h.e||h.e.length<1?-1:h.e.index+h.e[0].length}if(f<a.length){d=new Gc(vl(a,f));Jh(e.b,e.c++,d)}return e} +function cb(h){var e=(Vo(),Ro('com.ephox.keurig.WordCleaner'));var f,g=h;$wnd.com.ephox.keurig.WordCleaner=mp(function(){var a,b=this,c=arguments;c.length==1&&g.n(c[0])?(a=c[0]):c.length==0&&(a=new Z);b.g=a;a['__gwtex_wrap']=b;return b});f=$wnd.com.ephox.keurig.WordCleaner.prototype=new Object;$wnd.com.ephox.keurig.WordCleaner.cleanDocument=mp(function(a,b){var c,d;return c=new zb(a,b),d=M(ob(c.c,c.d,c.b)),Rh(d.c.b,1)});$wnd.com.ephox.keurig.WordCleaner.yury=mp(function(a,b){var c;return c=b?(Wc(),Tc):1,Xc(a,c)});if(e)for(p in e)$wnd.com.ephox.keurig.WordCleaner[p]===undefined&&($wnd.com.ephox.keurig.WordCleaner[p]=e[p])} +function jc(a,b){hc();var c,d,e,f,g,h;f=new Ko(bc,a);f.e=dk(f.c,f.b);if(f.e){g=f.e[1];this.c=ml(g,'\xA7')?(Cc(),yc):ml(g,'o')?(Cc(),tc):(Cc(),zc)}else{e=new Ko(new Mo('\\(?(\\d+|[a-zA-Z]+)(?:\\)|\\.)?'),a);e.e=dk(e.c,e.b);if(e.e){c=e.e[1];if(kc(c,b)){this.c=Ho(new Ko(gc,c))?(Cc(),Ac):(Cc(),uc);this.b=fb(c)}else{d=new Ko(dc,c);d.e=dk(d.c,d.b);if(!!d.e&&d.e[0].length!=0){this.c=(Cc(),vc);this.b=kb(c)}else{h=new Ko(ec,c);h.e=dk(h.c,h.b);if(!!h.e&&h.e[0].length!=0){this.c=(Cc(),Bc);this.b=kb(c)}else{if(Ho(new Ko(cc,c))){this.c=(Cc(),uc);this.b=fb(c)}else if(Ho(new Ko(gc,c))){this.c=(Cc(),Ac);this.b=fb(c)}else{this.c=(Cc(),xc);this.b=_k(c)}}}}}else{this.c=(Cc(),zc)}}} +function Kb(){Kb=Wo;Ib=new No('mso\\-list:.*?([;"\'])',32);Db=new No('style=["\'].*?mso\\-list:(?:([0-9]+)|.*?level([0-9]+)).*?["\']',32);Gb=new Mo('<ol([^>]*)><li><ol([^>]*)>');Jb=new Mo('<ul([^>]*)><li><ul([^>]*)>');Eb=new No('^[ \\t\\n\\x0B\\f\\r]*(?:<[^>]*>)*?(?:<span[^>]*>[ \\t\\n\\x0B\\f\\r]*){0,3}(?: |\\s)*(?:<\/span[^>]*>[ \\t\\n\\x0B\\f\\r]*)?([\xB7\xA7\u2022\u2043\u25A1o-]|\xD8|·|<img[^>]*>|\\(?(?:\\d+|[a-zA-z]+)(?:\\)|\\.)?)(?: |\\s)*(?:<span[^>]*>[ \\t\\n\\x0B\\f\\r]*)?(?: |\\s)*(?:<\/span[^>]*>[ \\t\\n\\x0B\\f\\r]*){0,3}(.*?)$',32);Hb=new No('<p([^>]*)>(.*?)<\/p>[ \\t\\n\\x0B\\f\\r]*',32);Fb=new Mo('<p[^>]*>(?:<[^>]*>|[ \\t\\n\\x0B\\f\\r])* (?:<[^>]*>|[ \\t\\n\\x0B\\f\\r])*<\/p>');Cb=new Mo('^(?:<\/[^>]+>)*');Bb=new Mo('<a\\sname="OLE_LINK\\d">|<\/a>')} +function gk(){var a,b,c;b=$doc.compatMode;a=Ih(Oj,$o,1,[Vp]);for(c=0;c<a.length;c++){if(ml(a[c],b)){return}}a.length==1&&ml(Vp,a[0])&&ml('BackCompat',b)?"GWT no longer supports Quirks Mode (document.compatMode=' BackCompat').<br>Make sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,<br>e.g. by using <!doctype html> at the start of your application's HTML page.<br><br>To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding<br>the following line to your*.gwt.xml module file:<br> <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').<br>Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +var op='',fq=' ',tp='"',Np='(',Up=')',gq=', ',Pp=':',Kp=': ',sp='<',up='<\/li>',rp='<\/span>',zp='<\/style>',pp='<span',yp='<style',Ap='=',vp='>',np='@',Qp='@@',Vp='CSS1Compat',Fp='Edit-Time-Data',Ep='File-List',eq='For input string: "',Gp='Ole-Object-Data',Hp='Original-File',Ip='Preview',Mp='String',Rp='Unknown',Sp='[',jq='[Ljava.lang.',Tp=']',Cp=']>',Op='anonymous',qq='com.ephox.functional.data.immutable.',oq='com.ephox.keurig.client.',pq='com.ephox.tord.guts.',sq='com.ephox.tord.lists.',uq='com.ephox.tord.lists.data.',rq='com.ephox.tord.wordhtmlfilter.',iq='com.google.gwt.core.client.',lq='com.google.gwt.core.client.impl.',kq='com.google.gwt.useragent.client.',qp='dir=',dq='g',bq='gecko',Wp='gecko1_8',Dp='i',$p='ie10',aq='ie8',_p='ie9',hq='java.lang.',nq='java.util.',tq='java.util.regex.',Jp='lang',Zp='msie',Lp='null',wp='ol',mq='org.timepedia.exporter.client.',Bp='ovwxp',Yp='safari',xp='ul',cq='unknown',Xp='webkit';var _,$j={},bp={3:1,16:1,22:1},cp={2:1,16:1},ip={26:1},kp={27:1},_o={4:1},lp={16:1,25:1},Zo={},ap={16:1},gp={16:1,20:1,21:1,24:1},dp={12:1},ep={16:1,20:1,24:1},fp={15:1},$o={16:1,22:1},jp={28:1},hp={17:1};_j(1,-1,Zo,A);_.eQ=function B(a){return this===a};_.gC=function C(){return this.cZ};_.hC=function D(){return Cg(this)};_.tS=function F(){return this.cZ.e+np+al(this.hC())};_.toString=function(){return this.tS()};_.tM=Wo;_j(4,1,{});_j(5,1,_o);_.eQ=function N(a){return Th(a,4)&&R(this,Rh(a,4))};_.hC=function O(){return 42};_.tS=function Q(){return 'value: '+this.c.b+', log: '+Rh(this.b.b,25)};var J,K;_j(8,5,_o,T);_j(10,4,{},W);_j(13,1,{5:1},Z);_j(14,1,{},db);_.n=function eb(a){return a!=null&&Th(a,5)};var ab=false;_j(16,1,{});_.c=false;_.d=false;_j(17,1,{},ub);_j(18,16,{},zb);var wb;_j(19,1,{},_b);var Bb,Cb,Db,Eb,Fb,Gb,Hb,Ib,Jb;_j(20,1,{6:1},ic,jc);_.b=0;var bc,cc,dc,ec,fc,gc;_j(21,1,{},mc);_j(23,1,{16:1,18:1,19:1});_.eQ=function pc(a){return this===a};_.hC=function qc(){return Cg(this)};_.tS=function rc(){return this.d};_j(22,23,{7:1,16:1,18:1,19:1},Dc);var sc,tc,uc,vc,wc,xc,yc,zc,Ac,Bc;_j(24,1,{8:1,10:1},Gc);_j(25,1,{9:1,10:1},Jc);_j(26,1,{10:1,11:1},Lc);_j(27,1,{},Oc);var Pc;var Tc=0,Uc,Vc;_j(30,1,{},ad);_j(31,1,{});_.o=function gd(a){var b,c,d;c=a.i>=a.k?0:a.f[a.i];d=_c(cd,c);if(d!=null&&Td(a,a.i,d)){return false}b=_c(dd,c);return b!=null&&Td(a,a.i,b)};var cd,dd;_j(32,31,{},md);var jd;_j(33,32,{},pd);_.o=function od(a){var b,c;b=a.i>=a.k?0:a.f[a.i];c=_c((ed(),cd),b);return c==null||!Td(a,a.i,c)};_j(34,31,{},wd);var rd,sd;var xd,yd,zd;_j(36,1,{},Zd);_.b=0;_.c=0;_.d=0;_.e=0;_.h=0;_.i=0;_.k=0;_.l=0;_.m=0;_j(37,1,{},ae);var be,ce;var fe;var ie,je,ke;var ne;var se,te;_j(44,1,{},De);var xe,ye,ze,Ae;var Ee,Fe,Ge,He,Ie;var Le,Me;var Pe,Qe;var Te,Ue;var Xe,Ye,Ze;var af,bf;_j(52,1,dp,jf);_.p=function kf(){return gf.b};_.q=function lf(a,b,c){switch(c){case 60:if(pe(a)){return true}a.i=a.h;if(ve(a,b)){return true}a.i=a.h;return df(a,b);case 13:case 10:return re(a);}return false};var gf;_j(53,1,dp,pf);_.p=function qf(){return nf.b};_.q=function rf(a,b,c){switch(c){case 60:if(Rc(a,b)){return true}a.i=a.h;if(me(a)){return true}a.i=a.h;if(_e(a,b)){return true}a.i=a.h;return Ke(a);case 120:return Oe(a,b);case 13:case 10:return re(a);}return false};var nf;_j(54,1,dp,vf);_.p=function wf(){return tf.b};_.q=function xf(a,b,c){switch(c){case 60:if(pe(a)){return true}a.i=a.h;if(ve(a,b)){return true}a.i=a.h;return df(a,b);case 13:case 10:return re(a);case 99:return he(a,b);}return false};var tf;_j(55,1,dp,Ef);_.p=function Ff(){return zf.b};_.q=function Gf(a,b,c){switch(c){case 60:if(df(a,b)){return true}a.i=a.h;if(Cd(a,b)){return true}a.i=a.h;if(Ce(Cf,a)){return true}a.i=a.h;return false;case 111:case 118:case 119:case 120:case 112:return ee(a,b);case 115:return ld(Af,a,b);case 108:return _d(Bf,a,b);}return false};var zf,Af,Bf,Cf;_j(56,1,dp,Of);_.p=function Pf(){return If.b};_.q=function Qf(a,b,c){switch(c){case 60:if(df(a,b)){return true}a.i=a.h;if(We(a)){return true}a.i=a.h;if(Ce(Mf,a)){return true}a.i=a.h;return false;case 115:return ld(Jf,a,b);case 99:return _d(Kf,a,b);case 108:return _d(Lf,a,b);case 111:case 118:case 119:case 120:case 112:return ee(a,b);}return false};var If,Jf,Kf,Lf,Mf;_j(57,1,{},Vf);_.tS=function Wf(){return Hl(this.b,this.c)};_.c=0;_j(63,1,{16:1,24:1});_.r=function ag(){return this.f};_.tS=function bg(){var a,b;a=this.cZ.e;b=this.r();return b!=null?a+Kp+b:a};_j(62,63,ep);_j(61,62,ep);_j(60,61,{13:1,16:1,20:1,24:1},hg);_.r=function kg(){gg(this);return this.d};_.s=function lg(){return this.c===eg?null:this.c};var eg;_j(67,1,{});var sg=0,tg=0,ug=0,vg=-1;_j(69,67,{},Ng);var Jg;_j(72,1,{},Xg);_.t=function Yg(){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=this.v(c.toString());b.push(d);var e=Pp+d;var f=a[e];if(f){var g,h;for(g=0,h=f.length;g<h;g++){if(f[g]===c){return b}}}(f||(a[e]=[])).push(c);c=c.caller}return b};_.u=function Zg(a){var b,c,d,e;d=this.A(a.c===(fg(),eg)?null:a.c);e=Hh(Nj,$o,23,d.length,0);for(b=0,c=e.length;b<c;b++){e[b]=new il(d[b],null,-1)}_f(e)};_.v=function $g(a){return Qg(a)};_.w=function _g(a){var b,c,d,e;d=Tj().t();e=Hh(Nj,$o,23,d.length,0);for(b=0,c=e.length;b<c;b++){e[b]=new il(d[b],null,-1)}_f(e)};_.A=function ah(a){return []};_j(74,72,{},fh);_.t=function gh(){return Tg(this.A(Wg()),this.B())};_.A=function hh(a){return eh(this,a)};_.B=function ih(){return 2};_j(73,74,{});_.t=function mh(){var a;a=Tg(kh(this,Wg()),3);a.length==0&&(a=Tg((new Xg).t(),1));return a};_.u=function nh(a){var b;b=kh(this,a.c===(fg(),eg)?null:a.c);lh(this,b)};_.v=function oh(a){var b,c,d,e;if(a.length==0){return Op}e=yl(a);e.indexOf('at ')==0&&(e=vl(e,3));c=e.indexOf(Sp);c!=-1&&(e=yl(wl(e,0,c))+yl(vl(e,e.indexOf(Tp,c)+1)));c=e.indexOf(Np);if(c==-1){c=e.indexOf(np);if(c==-1){d=e;e=op}else{d=yl(vl(e,c+1));e=yl(wl(e,0,c))}}else{b=e.indexOf(Up,c);d=wl(e,c+1,b);e=yl(wl(e,0,c))}c=ol(e,Fl(46));c!=-1&&(e=vl(e,c+1));return (e.length>0?e:Op)+Qp+d};_.w=function ph(a){var b;b=Tj().t();lh(this,b)};_.A=function qh(a){return kh(this,a)};_.C=function rh(a){return a};_.B=function sh(){return 3};_j(75,73,{},uh);_.C=function vh(a){return -1};_j(76,1,{});_j(77,76,{},Ah);_.b=op;_j(81,1,{},Ch);_.qI=0;var Kh,Lh;var Sj=-1;_j(95,1,fp,ik);_.D=function jk(){return Wp};_.F=function kk(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Xp)!=-1}())return Yp;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=10}())return $p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=9}())return _p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=8}())return aq;if(function(){return b.indexOf(bq)!=-1}())return Wp;return cq};_j(96,1,fp,mk);_.D=function nk(){return $p};_.F=function ok(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Xp)!=-1}())return Yp;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=10}())return $p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=9}())return _p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=8}())return aq;if(function(){return b.indexOf(bq)!=-1}())return Wp;return cq};_j(97,1,fp,qk);_.D=function rk(){return aq};_.F=function sk(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Xp)!=-1}())return Yp;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=10}())return $p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=9}())return _p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=8}())return aq;if(function(){return b.indexOf(bq)!=-1}())return Wp;return cq};_j(98,1,fp,uk);_.D=function vk(){return _p};_.F=function wk(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Xp)!=-1}())return Yp;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=10}())return $p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=9}())return _p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=8}())return aq;if(function(){return b.indexOf(bq)!=-1}())return Wp;return cq};_j(99,1,fp,yk);_.D=function zk(){return Yp};_.F=function Ak(){var b=navigator.userAgent.toLowerCase();var c=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return b.indexOf(Xp)!=-1}())return Yp;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=10}())return $p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=9}())return _p;if(function(){return b.indexOf(Zp)!=-1&&$doc.documentMode>=8}())return aq;if(function(){return b.indexOf(bq)!=-1}())return Wp;return cq};_j(100,1,{});_.tS=function Dk(){return qg(this.b)};_j(101,61,ep,Fk,Gk);_j(103,1,{},Jk);_.tS=function Sk(){return ((this.c&2)!=0?'interface ':(this.c&1)!=0?op:'class ')+this.e};_.c=0;_.d=0;_j(104,61,ep,Uk);_j(105,61,gp,Wk,Xk);_j(106,61,ep,Zk,$k);_j(110,61,ep,cl);var dl;_j(112,105,gp,gl);_j(113,1,{16:1,23:1},il);_.tS=function jl(){return this.b+'.'+this.e+Np+(this.c!=null?this.c:'Unknown Source')+(this.d>=0?Pp+this.d:op)+Up};_.d=0;_=String.prototype;_.cM={1:1,16:1,17:1,18:1};_.eQ=function Dl(a){return ml(this,a)};_.hC=function Gl(){return Nl(this)};_.tS=_.toString;var Il,Jl=0,Kl;_j(115,1,hp,Sl,Tl);_.tS=function Ul(){return this.b.b};_j(116,1,hp,_l,am,bm);_.tS=function cm(){return this.b.b};_j(117,106,ep,em);_j(119,61,ep,hm);_j(120,1,{});_.G=function lm(a){throw new hm('Add not supported on this collection')};_.H=function mm(a){var b;b=jm(this.I(),a);return !!b};_.K=function nm(){return this.L(Hh(Mj,$o,0,this.J(),0))};_.L=function om(a){var b,c,d;d=this.J();a.length<d&&(a=Fh(a,d));c=this.I();for(b=0;b<d;++b){Jh(a,b,c.O())}a.length>d&&Jh(a,d,null);return a};_.tS=function pm(){return km(this)};_j(122,1,ip);_.eQ=function sm(a){var b,c,d,e,f;if(a===this){return true}if(!Th(a,26)){return false}e=Rh(a,26);if(this.e!=e.e){return false}for(c=new Rm((new Mm(e)).b);rn(c.b);){b=Rh(sn(c.b),27);d=b.P();f=b.Q();if(!(d==null?this.d:Th(d,1)?Cm(this,Rh(d,1)):Bm(this,d,~~pg(d)))){return false}if(!Eo(f,d==null?this.c:Th(d,1)?Am(this,Rh(d,1)):zm(this,d,~~pg(d)))){return false}}return true};_.hC=function tm(){var a,b,c;c=0;for(b=new Rm((new Mm(this)).b);rn(b.b);){a=Rh(sn(b.b),27);c+=a.hC();c=~~c}return c};_.tS=function um(){var a,b,c,d;d='{';a=false;for(c=new Rm((new Mm(this)).b);rn(c.b);){b=Rh(sn(c.b),27);a?(d+=gq):(a=true);d+=op+b.P();d+=Ap;d+=op+b.Q()}return d+'}'};_j(121,122,ip);_.M=function Hm(a,b){return Wh(a)===Wh(b)||a!=null&&ng(a,b)};_.d=false;_.e=0;_j(124,120,jp);_.eQ=function Km(a){var b,c,d;if(a===this){return true}if(!Th(a,28)){return false}c=Rh(a,28);if(c.b.e!=this.J()){return false}for(b=new Rm(c.b);rn(b.b);){d=Rh(sn(b.b),27);if(!this.H(d)){return false}}return true};_.hC=function Lm(){var a,b,c;a=0;for(b=this.I();b.N();){c=b.O();if(c!=null){a+=pg(c);a=~~a}}return a};_j(123,124,jp,Mm);_.H=function Nm(a){var b,c,d;if(Th(a,27)){b=Rh(a,27);c=b.P();if(xm(this.b,c)){d=ym(this.b,c);return go(b.Q(),d)}}return false};_.I=function Om(){return new Rm(this.b)};_.J=function Pm(){return this.b.e};_j(125,1,{},Rm);_.N=function Sm(){return rn(this.b)};_.O=function Tm(){return Rh(sn(this.b),27)};_j(127,1,kp);_.eQ=function Wm(a){var b;if(Th(a,27)){b=Rh(a,27);if(Eo(this.P(),b.P())&&Eo(this.Q(),b.Q())){return true}}return false};_.hC=function Xm(){var a,b;a=0;b=0;this.P()!=null&&(a=pg(this.P()));this.Q()!=null&&(b=pg(this.Q()));return a^b};_.tS=function Ym(){return this.P()+Ap+this.Q()};_j(126,127,kp,Zm);_.P=function $m(){return null};_.Q=function _m(){return this.b.c};_.R=function an(a){return Fm(this.b,a)};_j(128,127,kp,cn);_.P=function dn(){return this.b};_.Q=function en(){return Am(this.c,this.b)};_.R=function fn(a){return Gm(this.c,this.b,a)};_j(129,120,{25:1});_.S=function jn(a,b){throw new hm('Add not supported on this list')};_.G=function kn(a){this.S(this.J(),a);return true};_.eQ=function mn(a){var b,c,d,e,f;if(a===this){return true}if(!Th(a,25)){return false}f=Rh(a,25);if(this.J()!=f.J()){return false}d=this.I();e=f.I();while(d.b<d.c.J()){b=sn(d);c=sn(e);if(!(b==null?c==null:ng(b,c))){return false}}return true};_.hC=function nn(){var a,b,c;b=1;a=this.I();while(a.b<a.c.J()){c=sn(a);b=31*b+(c==null?0:pg(c));b=~~b}return b};_.I=function pn(){return new tn(this)};_j(130,1,{},tn);_.N=function un(){return rn(this)};_.O=function vn(){return sn(this)};_.b=0;_j(131,129,lp,Fn);_.S=function Gn(a,b){xn(this,a,b)};_.G=function Hn(a){return yn(this,a)};_.H=function In(a){return Bn(this,a,0)!=-1};_.T=function Jn(a){return An(this,a)};_.J=function Kn(){return this.c};_.K=function On(){return Dn(this)};_.L=function Pn(a){return En(this,a)};_.c=0;_j(132,129,lp,Rn);_.H=function Sn(a){return hn(this,a)!=-1};_.T=function Tn(a){return ln(a,this.b.length),this.b[a]};_.J=function Un(){return this.b.length};_.K=function Vn(){return Dh(this.b)};_.L=function Wn(a){var b,c;c=this.b.length;a.length<c&&(a=Fh(a,c));for(b=0;b<c;++b){Jh(a,b,this.b[b])}a.length>c&&Jh(a,c,null);return a};var Xn;_j(134,129,lp,$n);_.H=function _n(a){return false};_.T=function ao(a){throw new Zk};_.J=function bo(){return 0};_j(135,61,ep,eo);_j(136,121,{16:1,26:1},ho);_j(137,127,kp,jo);_.P=function ko(){return this.b};_.Q=function lo(){return this.c};_.R=function mo(a){var b;b=this.c;this.c=a;return b};_j(138,61,ep,oo);_j(140,129,lp);_.S=function ro(a,b){xn(this.b,a,b)};_.G=function so(a){return yn(this.b,a)};_.H=function to(a){return Bn(this.b,a,0)!=-1};_.T=function uo(a){return An(this.b,a)};_.I=function vo(){return new tn(this.b)};_.J=function wo(){return this.b.c};_.K=function xo(){return Dn(this.b)};_.L=function yo(a){return En(this.b,a)};_.tS=function zo(){return km(this.b)};_j(139,140,lp,Do);_j(142,1,{},Ko);_.b=null;_.d=0;_j(143,100,{},Mo,No);_j(145,1,{});_j(144,145,{},So);var Uo;var mp=Dg();var bj=Lk(hq,'Object',1),Fi=Lk(iq,'Scheduler',67),Ei=Lk(iq,'JavaScriptObject$',64),Mj=Kk(jq,'Object;',150,bj),Ij=Ok('boolean',' Z'),Pj=Kk(op,'[Z',152,Ij),ij=Lk(hq,'Throwable',63),Yi=Lk(hq,'Exception',62),cj=Lk(hq,'RuntimeException',61),dj=Lk(hq,'StackTraceElement',113),Nj=Kk(jq,'StackTraceElement;',153,dj),Ni=Lk('com.google.gwt.lang.','SeedUtil',88),Xi=Lk(hq,'Enum',23),Yh=Ok('char',' C'),Jj=Kk(op,'[C',154,Yh),Wi=Lk(hq,'Class',103),hj=Lk(hq,Mp,2),Oj=Kk(jq,'String;',151,hj),Vi=Lk(hq,'ClassCastException',104),Di=Lk(iq,'JavaScriptException',60),fj=Lk(hq,'StringBuilder',116),Ui=Lk(hq,'ArrayStoreException',101),Oi=Lk(kq,'UserAgentImplGecko1_8',95),Si=Lk(kq,'UserAgentImplSafari',99),Pi=Lk(kq,'UserAgentImplIe10',96),Ri=Lk(kq,'UserAgentImplIe9',98),Qi=Lk(kq,'UserAgentImplIe8',97),_i=Lk(hq,'NullPointerException',110),Zi=Lk(hq,'IllegalArgumentException',105),Mi=Lk(lq,'StringBufferImpl',76),Hj=Lk(mq,'ExporterBaseImpl',145),Gj=Lk(mq,'ExporterBaseActual',144),Ki=Lk(lq,'StackTraceCreator$Collector',72),Ji=Lk(lq,'StackTraceCreator$CollectorMoz',74),Ii=Lk(lq,'StackTraceCreator$CollectorChrome',73),Hi=Lk(lq,'StackTraceCreator$CollectorChromeNoSourceMap',75),Li=Lk(lq,'StringBufferImplAppend',77),Gi=Lk(lq,'SchedulerImpl',69),tj=Lk(nq,'AbstractMap',122),pj=Lk(nq,'AbstractHashMap',121),kj=Lk(nq,'AbstractCollection',120),uj=Lk(nq,'AbstractSet',124),mj=Lk(nq,'AbstractHashMap$EntrySet',123),lj=Lk(nq,'AbstractHashMap$EntrySetIterator',125),sj=Lk(nq,'AbstractMapEntry',127),nj=Lk(nq,'AbstractHashMap$MapEntryNull',126),oj=Lk(nq,'AbstractHashMap$MapEntryString',128),zj=Lk(nq,'HashMap',136),bi=Lk(oq,'WordCleaner_ExporterImpl',14),ci=Lk(oq,'WordCleaner',13),Aj=Lk(nq,'MapEntryImpl',137),ej=Lk(hq,'StringBuffer',115),rj=Lk(nq,'AbstractList',129),vj=Lk(nq,'ArrayList',131),qj=Lk(nq,'AbstractList$IteratorImpl',130),di=Lk(pq,'OfficeImportFunction',16),fi=Lk(pq,'WordImportFunction',18),_h=Lk(qq,'Logged',5),$h=Lk(qq,'Logged$6',8),Zh=Lk('com.ephox.functional.closures.','Thunk',4),wi=Nk(rq,'ReplacementRuleSet'),Lj=Kk('[Lcom.ephox.tord.wordhtmlfilter.','ReplacementRuleSet;',155,wi),jj=Lk(hq,'UnsupportedOperationException',119),yi=Lk(rq,'StepOne',53),Ai=Lk(rq,'StepTwoFilterStyles',55),zi=Lk(rq,'StepThree',54),xi=Lk(rq,'StepLast',52),Bi=Lk(rq,'StepTwoRemoveStyles',56),Qj=Kk(op,'[[C',156,Jj),ti=Lk(rq,'ReadBuffer',36),Ci=Lk(rq,'WriteBuffer',57),ei=Lk(pq,'Scrub',17),gi=Lk(sq,'ListImporter',19),Ti=Lk('com.googlecode.gwtx.java.util.impl.client.','PatternImpl',100),Fj=Lk(tq,'Pattern',143),Ej=Lk(tq,'Matcher',142),xj=Lk(nq,'Collections$EmptyList',134),ai=Lk('com.ephox.functional.factory.','Thunks$1',10),wj=Lk(nq,'Arrays$ArrayList',132),ni=Lk(rq,'CharMap',27),vi=Lk(rq,'RemoveLink',44),pi=Lk(rq,'ModifySingleStyle',31),ri=Lk(rq,'ModifyStyleAttribute',32),ui=Lk(rq,'RemoveAttributeByName',37),qi=Lk(rq,'ModifyStyleAttributeOnlyUsingMustKeepList',33),$i=Lk(hq,'IndexOutOfBoundsException',106),Bj=Lk(nq,'NoSuchElementException',138),gj=Lk(hq,'StringIndexOutOfBoundsException',117),Rj=Kk(op,'[[[C',157,Qj),oi=Lk(rq,'IndexedStrings',30),si=Lk(rq,'ModifyStyleDefinition',34),hi=Lk(sq,'ListInfoStack',21),ii=Lk(sq,'ListInfo',20),mi=Lk(uq,'ListItemData',26),ki=Lk(uq,'ContentData',24),li=Lk(uq,'ListAggregationData',25),aj=Lk(hq,'NumberFormatException',112),ji=Mk(sq,'ListTagAndType',22,Ec),Kj=Kk('[Lcom.ephox.tord.lists.','ListTagAndType;',158,ji),Dj=Lk(nq,'Vector',140),Cj=Lk(nq,'Stack',139),yj=Lk(nq,'EmptyStackException',135);if (com_ephox_keurig_Keurig) com_ephox_keurig_Keurig.onScriptLoad(gwtOnLoad);})(); diff --git a/static/tinymce1.3/plugins/powerpaste/plugin.js b/static/tinymce1.3/plugins/powerpaste/plugin.js new file mode 100644 index 0000000000000000000000000000000000000000..c9305569fe9a8f7c20282bdb15881c663c5fbd79 --- /dev/null +++ b/static/tinymce1.3/plugins/powerpaste/plugin.js @@ -0,0 +1,19069 @@ +// import '../stable/plugins.min.js' +/* Ephox PowerPaste plugin + * + * Copyright 2010-2015 Ephox Corporation. All rights reserved. + * + * Version: 2.1.0.0 + */ +(function () { + + if (this.ephox) + var old = this.ephox.bolt; + +var defs = {}; // id -> {dependencies, definition, instance (possibly undefined)} + +var register = function (id) { + var module = dem(id); + var fragments = id.split('.'); + var target = Function('return this;')(); + for (var i = 0; i < fragments.length - 1; ++i) { + if (target[fragments[i]] === undefined) + target[fragments[i]] = {}; + target = target[fragments[i]]; + } + target[fragments[fragments.length - 1]] = module; +}; + +var instantiate = function (id) { + var dependencies = defs[id].dependencies; + var definition = defs[id].definition; + var instances = []; + for (var i = 0; i < dependencies.length; ++i) + instances.push(dem(dependencies[i])); + defs[id].instance = definition.apply(null, instances); + if (defs[id].instance === undefined) + throw 'required module [' + id + '] could not be defined (definition function returned undefined)'; +}; + +var def = function (id, dependencies, definition) { + if (typeof id !== 'string') + throw 'invalid module definition, module id must be defined and be a string'; + if (dependencies === undefined) + throw 'invalid module definition, dependencies must be specified'; + if (definition === undefined) + throw 'invalid module definition, definition function must be specified'; + defs[id] = { + dependencies: dependencies, + definition: definition, + instance: undefined + }; +}; + +var dem = function (id) { + if (defs[id] === undefined) + throw 'required module [' + id + '] is not defined'; + if (defs[id].instance === undefined) + instantiate(id); + return defs[id].instance; +}; + +var req = function (ids, callback) { + var instances = []; + for (var i = 0; i < ids.length; ++i) + instances.push(dem(ids[i])); + callback.apply(null, callback); +}; + +var ephox = this.ephox || {}; + +ephox.bolt = { + module: { + api: { + define: def, + require: req, + demand: dem + } + } +}; + + +// This is here to give hints to minification +// ephox.bolt.module.api.define +var eeephox_def_eeephox = def; +// ephox.bolt.module.api.require +var eeephox_req_eeephox = req; +// ephox.bolt.module.api.demand +var eeephox_dem_eeephox = dem; + +/*jsc +["ephox.powerpaste.util.NodeUtil","ephox.powerpaste.i18n.I18n","ephox.powerpaste.alien.Once","ephox.powerpaste.PowerPastePlugin","ephox.powerpaste.settings.Defaults","ephox.powerpaste.styles.Styles","ephox.powerpaste.legacy.data.tokens.Helper","ephox.powerpaste.legacy.data.tokens.Tokenizer","ephox.powerpaste.legacy.data.tokens.Serializer","ephox.powerpaste.legacy.data.tokens.Filter","ephox.powerpaste.legacy.data.tokens.Attributes","ephox.powerpaste.legacy.data.tokens.Token","ephox.powerpaste.legacy.data.Insert","ephox.powerpaste.legacy.wordimport.WordOnlyFilters","ephox.powerpaste.legacy.wordimport.WordImport","ephox.powerpaste.legacy.wordimport.CommonFilters","ephox.powerpaste.legacy.filters.list.Emitter","ephox.powerpaste.legacy.filters.list.Lists","ephox.powerpaste.legacy.filters.list.ListTypes","ephox.powerpaste.legacy.filters.list.ListStates","ephox.powerpaste.legacy.filters.list.CommentHeuristics","ephox.powerpaste.legacy.filters.StripImages","ephox.powerpaste.legacy.filters.FilterInlineStyles","ephox.powerpaste.legacy.filters.StripBookmarks","ephox.powerpaste.legacy.filters.StripScripts","ephox.powerpaste.legacy.filters.StripLangAttribute","ephox.powerpaste.legacy.filters.Text","ephox.powerpaste.legacy.filters.StripTocLinks","ephox.powerpaste.legacy.filters.StripNoAttributeA","ephox.powerpaste.legacy.filters.InferListTags","ephox.powerpaste.legacy.filters.StripOPTags","ephox.powerpaste.legacy.filters.StripFormattingAttributes","ephox.powerpaste.legacy.filters.StripEmptyStyleAttributes","ephox.powerpaste.legacy.filters.StripEmptyInlineElements","ephox.powerpaste.legacy.filters.StripNamespaceDeclarations","ephox.powerpaste.legacy.filters.StripClassAttributes","ephox.powerpaste.legacy.filters.StripMetaAndLinkElements","ephox.powerpaste.legacy.filters.StripVMLAttributes","ephox.powerpaste.legacy.tinymce.Clipboard","ephox.powerpaste.legacy.tinymce.Settings","ephox.powerpaste.legacy.tinymce.Util","ephox.powerpaste.legacy.tinymce.BrowserFilters","ephox.powerpaste.tinymce.ModernPowerDrop","ephox.powerpaste.tinymce.ModernTinyDialog","ephox.powerpaste.tinymce.ModernPowerPaste","ephox.powerpaste.tinymce.ErrorDialog","ephox.powerpaste.tinymce.LegacyPowerPaste","ephox.powerpaste.tinymce.LegacyTinyDialog","ephox.powerpaste.tinymce.UndoRewriter","ephox.powerpaste.tinymce.TinyPowerPaste","ephox.powerpaste.imageupload.UploaderFactory","ephox.powerpaste.imageupload.TinyUploader","ephox.powerpaste.imageupload.EphoxUploader","ephox.powerpaste.imageupload.UploadError","global!document","global!tinymce","ephox.compass.Arr","ephox.peanut.Fun","ephox.perhaps.Option","ephox.salmon.api.Ephemera","ephox.sugar.api.Element","ephox.sugar.api.Elements","ephox.sugar.api.InsertAll","ephox.sugar.api.SelectorFilter","ephox.salmon.api.BlobCache","ephox.salmon.api.ImageTracker","ephox.salmon.api.UploadUtils","ephox.salmon.api.Uploaders","ephox.sugar.api.Attr","global!setTimeout","ephox.hermes.api.ImageAsset","ephox.hermes.api.ImageExtract","ephox.cement.api.Cement","ephox.sugar.api.Insert","ephox.sugar.api.Remove","ephox.sugar.api.SelectorExists","ephox.sugar.api.SelectorFind","ephox.porkbun.Event","ephox.porkbun.Events","ephox.sugar.api.DomEvent","global!Array","global!String","ephox.salmon.style.Styles","ephox.classify.Type","ephox.compass.Obj","global!Error","global!console","ephox.sugar.api.Traverse","ephox.sugar.api.PredicateFilter","ephox.sugar.api.Selectors","ephox.sugar.impl.ClosestOrAncestor","ephox.numerosity.api.URL","ephox.scullion.Struct","ephox.highway.Merger","ephox.scullion.ADT","ephox.perhaps.Result","ephox.salmon.ui.UploadUi","ephox.salmon.services.UploadCommon","ephox.salmon.services.UploadDirect","ephox.salmon.services.UploadFunction","ephox.hermes.utils.ImageExtract","ephox.cement.flash.Flash","ephox.cement.smartpaste.MergeSettings","ephox.cement.smartpaste.PasteBroker","ephox.limbo.api.RtfImage","ephox.plumber.tap.function.BlockTap","ephox.porkbun.SourceEvent","ephox.sloth.api.Paste","ephox.sugar.impl.FilteredEvent","ephox.flour.style.Resolver","ephox.scullion.Immutable","ephox.scullion.Immutable2","ephox.scullion.MixedBag","ephox.sugar.alien.Recurse","ephox.sugar.api.Compare","ephox.sugar.api.Body","ephox.bud.NodeTypes","ephox.numerosity.core.Global","ephox.sugar.api.Class","ephox.numerosity.api.FormData","ephox.violin.Strings","ephox.jax.plain.Ajax","ephox.numerosity.api.JSON","ephox.yuri.api.Resolver","ephox.epithet.Id","ephox.fred.PlatformDetection","ephox.numerosity.api.FileReader","ephox.bowerbird.api.Rtf","ephox.cement.flash.Correlation","ephox.cement.flash.FlashDialog","ephox.sugar.api.Css","ephox.sugar.api.Node","ephox.sugar.api.PredicateFind","ephox.sugar.api.Replication","ephox.cement.style.Styles","ephox.cement.smartpaste.Inspection","ephox.cement.smartpaste.PasteHandlers","ephox.perhaps.Options","global!RegExp","ephox.plumber.tap.control.BlockControl","ephox.plumber.tap.wrap.Tapped","ephox.scullion.BagUtils","global!Object","ephox.peanut.Thunk","ephox.epithet.Resolve","ephox.sugar.alien.Toggler","ephox +jsc*/ +ephox.bolt.module.api.define("global!document", [], function () { return document; }); +(function (define, require, demand) { +define( + 'ephox.powerpaste.util.NodeUtil', + [ + 'global!document' + ], + function(document){ + var nodeToString = function ( node ) { + var tmpNode = document.createElement( "div" ); + tmpNode.appendChild( node.cloneNode( true ) ); + var str = tmpNode.innerHTML; + tmpNode = node = null; // prevent memory leaks in IE + return str; + }; + + return { + nodeToString: nodeToString + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!tinymce", [], function () { return tinymce; }); +(function (define, require, demand) { +define('ephox.powerpaste.i18n.I18n', + + [ + 'global!tinymce' + ], + + function(tinymce) { + var missingFlash = function() { + return "Your browser security settings may be preventing images from being imported."; + }; + + var flashClipboard = function() { + return tinymce.Env.mac && tinymce.Env.webkit ? missingFlash() + " <a href=\"https://support.ephox.com/entries/59328357-Safari-6-1-and-7-Flash-Sandboxing\" style=\"text-decoration: underline\">More information on paste for Safari</a>" : + missingFlash(); + }; + + var english = { + "cement.dialog.paste.title": "Paste Formatting Options", + "cement.dialog.paste.instructions": "Choose to keep or remove formatting in the pasted content.", + "cement.dialog.paste.merge": "Keep Formatting", + "cement.dialog.paste.clean": "Remove Formatting", + "cement.dialog.flash.title": "Local Image Import", + "cement.dialog.flash.trigger-paste": "Trigger paste again from the keyboard to paste content with images.", + "cement.dialog.flash.missing": "Adobe Flash is required to import images from Microsoft Office. Install the <a href=\"http://get.adobe.com/flashplayer/\" target=\"_blank\">Adobe Flash Player</a>.", + "cement.dialog.flash.press-escape": "Press <span class=\"ephox-polish-help-kbd\">ESC</span> to ignore local images and continue editing.", + "loading.wait" : "Please wait...", + "flash.clipboard.no.rtf": flashClipboard(), + "safari.imagepaste": "Safari does not support direct paste of images. <a href=\"https://support.ephox.com/entries/88543243-Safari-Direct-paste-of-images-does-not-work\" style=\"text-decoration: underline\">More information on image pasting for Safari</a>", + "error.code.images.not.found": "The images service was not found: (", + "error.imageupload": "Image failed to upload: (", + "error.full.stop": ").", + "errors.local.images.disallowed": "Local image paste has been disabled. Local images have been removed from pasted content." + }; + + var getEnglishText = function(key) { + return english[key]; + }; + + var translate = function (key) { + //This function acts as a shim between tiny's translation engine, which uses raw strings + //and cement's, which works off string pointers + return tinymce.translate(getEnglishText(key)); + }; + + return { + translate: translate + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.alien.Once', + + [ + + ], + + function () { + // Maybe belongs in peanut.Fun? + return function (f) { + var called = false; + return function () { + if (!called) { + called = true; + f.apply(null, arguments); + } + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!Array", [], function () { return Array; }); +ephox.bolt.module.api.define("global!String", [], function () { return String; }); +(function (define, require, demand) { +define( + 'ephox.compass.Arr', + + [ + 'global!Array', + 'global!String' + ], + + function (Array, String) { + var eqC = function(x) { + return function(y) { + return x === y; + }; + }; + + var isTrue = eqC(true); + + var contains = function(xs, x) { + return exists(xs, eqC(x)); + }; + + var chunk = function (array, size) { + var r = []; + for (var i = 0; i < array.length; i += size) { + var s = array.slice(i, i + size); + r.push(s); + } + return r; + }; + + var map = function(xs, f) { + var r = []; + for (var i = 0; i < xs.length; i++) { + var x = xs[i]; + r.push(f(x, i, xs)); + } + return r; + }; + + var each = function(xs, f) { + for (var i = 0; i < xs.length; i++) { + var x = xs[i]; + f(x, i, xs); + } + }; + + var partition = function(xs, pred) { + var pass = []; + var fail = []; + for (var i = 0; i < xs.length; i++) { + var x = xs[i]; + var arr = pred(x, i, xs) ? pass : fail; + arr.push(x); + } + return { pass: pass, fail: fail }; + }; + + var filter = function(xs, pred) { + var r = []; + for (var i = 0; i < xs.length; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + r.push(x); + } + } + return r; + }; + + /* + * Groups an array into contiguous arrays of like elements. Whether an element is like or not depends on f. + * + * f is a function that derives a value from an element - e.g. true or false, or a string. + * Elements are like if this function generates the same value for them (according to ===). + * + * + * Order of the elements is preserved. Arr.flatten() on the result will return the original list, as with Haskell groupBy function. + * For a good explanation, see the group function (which is a special case of groupBy) + * http://hackage.haskell.org/package/base-4.7.0.0/docs/Data-List.html#v:group + */ + var groupBy = function (xs, f) { + if (xs.length === 0) { + return []; + } else { + var wasType = f(xs[0]); // initial case for matching + var r = []; + var group = []; + + each(xs, function (x) { + var type = f(x); + if (type !== wasType) { + r.push(group); + group = []; + } + wasType = type; + group.push(x); + }); + if (group.length !== 0) { + r.push(group); + } + return r; + } + }; + + var indexOf = function(xs, x) { + if (arguments.length !== 2) + throw 'Expected 2 arguments to indexOf'; + return findIndex(xs, eqC(x)); + }; + + var foldr = function (xs, f, acc) { + return foldl(reverse(xs), f, acc); + }; + + var foldl = function (xs, f, acc) { + each(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + + var find = function(xs, pred) { + if (arguments.length !== 2) + throw 'Expected 2 arguments to find'; + for (var i = 0; i < xs.length; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return x; + } + } + return undefined; + }; + + var findOr = function (xs, f, default_) { + var r = find(xs, f); + return r !== undefined ? r : default_; + }; + + var findOrDie = function (xs, f, message) { + var r = find(xs, f); + if (r === undefined) + throw message || 'Could not find element in array: ' + String(xs); + return r; + }; + + var findIndex = function (xs, pred) { + var fn = pred || isTrue; + + for (var i = 0; i < xs.length; ++i) + if (fn(xs[i]) === true) + return i; + + return -1; + }; + + var flatten = function (xs) { + var r = []; + for (var i = 0; i < xs.length; ++i) + r = r.concat(xs[i]); + return r; + }; + + var bind = function (xs, f) { + var output = map(xs, f); + return flatten(output); + }; + + var forall = function (xs, pred) { + var fn = pred || isTrue; + for (var i = 0; i < xs.length; ++i) + if (fn(xs[i], i) !== true) + return false; + return true; + }; + + var exists = function (xs, pred) { + var fn = pred || isTrue; + for (var i = 0; i < xs.length; ++i) + if (fn(xs[i]) === true) + return true; + return false; + }; + + var equal = function (a1, a2) { + return a1.length === a2.length && forall(a1, function (x, i) { + return x === a2[i]; + }); + }; + + var reverse = function (xs) { + var r = Array.prototype.slice.call(xs, 0); + r.reverse(); + return r; + }; + + var difference = function (a1, a2) { + return filter(a1, function (x) { + return !contains(a2, x); + }); + }; + + var mapToObject = function(xs, f) { + var r = {}; + each(xs, function(x, i) { + r[String(x)] = f(x, i); + }); + return r; + }; + + return { + map: map, + each: each, + partition: partition, + filter: filter, + groupBy: groupBy, + indexOf: indexOf, + foldr: foldr, + foldl: foldl, + find: find, + findIndex: findIndex, + findOr: findOr, + findOrDie: findOrDie, + flatten: flatten, + bind: bind, + forall: forall, + exists: exists, + contains: contains, + equal: equal, + reverse: reverse, + chunk: chunk, + difference: difference, + mapToObject: mapToObject + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.peanut.Fun', + + [ + 'global!Array' + ], + + function (Array) { + var noop = function () { }; + + var compose = function (fa, fb) { + return function () { + return fa(fb.apply(null, arguments)); + }; + }; + + var constant = function (value) { + return function () { + return value; + }; + }; + + var identity = function (x) { + return x; + }; + + var tripleEquals = function(a, b) { + return a === b; + }; + + var curry = function (f) { + var slice = Array.prototype.slice; + var args = slice.call(arguments, 1); + return function () { + var all = args.concat(slice.call(arguments, 0)); + return f.apply(null, all); + }; + }; + + var not = function (f) { + return function () { + return !f.apply(null, arguments); + }; + }; + + var die = function (msg) { + return function () { + throw msg; + }; + }; + + var apply = function (f) { + return f(); + }; + + return { + noop: noop, + compose: compose, + constant: constant, + identity: identity, + tripleEquals: tripleEquals, + curry: curry, + not: not, + die: die, + apply: apply + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.perhaps.Option', + + [ + 'ephox.peanut.Fun' + ], + + function (Fun) { + + /** some :: a -> Option a */ + var some = function (value) { + return option(function (n, s) { + return s(value); + }); + }; + + /** none :: () -> Option a */ + var none = function () { + return option(function (n, s) { + return n(); + }); + }; + + /** from :: undefined|null|a -> Option a */ + var from = function (value) { + return value === null || value === undefined ? none() : some(value); + }; + + /** option :: (() -> t, a -> t) -> Option a */ + var option = function (fold) { + + /** is :: this Option a -> a -> Boolean */ + var is = function (v) { + return fold(Fun.constant(false), function (o) { + return o === v; + }); + }; + + /** isSome :: this Option a -> () -> Boolean */ + var isSome = function () { + return fold(Fun.constant(false), Fun.constant(true)); + }; + + /** isNone :: this Option a -> () -> Boolean */ + var isNone = Fun.not(isSome); + + /** getOr :: this Option a -> a -> a */ + var getOr = function (value) { + return fold(Fun.constant(value), Fun.identity); + }; + + /** getOrThunk :: this Option a -> (() -> a) -> a */ + var getOrThunk = function (f) { + return fold(f, Fun.identity); + }; + + /** getOrDie :: this Option a -> String -> a */ + var getOrDie = function (msg) { + return fold(Fun.die(msg || 'error: getOrDie called on none.'), Fun.identity); + }; + + /** or :: this Option a -> Option a -> Option a + * if some: return self + * if none: return opt + */ + var or = function (opt) { + return fold(Fun.constant(opt), some); + }; + + /** orThunk :: this Option a -> (() -> Option a) -> Option a + * Same as "or", but uses a thunk instead of a value + */ + var orThunk = function (f) { + return fold(f, some); + }; + + /** map :: this Option a -> (a -> b) -> Option b + * "fmap" operation on the Option Functor. + */ + var map = function (f) { + return bind(function (value) { + return some(f(value)); + }); + }; + + /** ap :: this Option a -> Option (a -> b) -> Option b) + * "apply" operation on the Option Apply/Applicative. + * Equivalent to <*> in Haskell/PureScript. + */ + var ap = function(ofab) { + return fold(none, function(a) { + return ofab.fold(none, function(fab) { + return some(fab(a)); + }); + }); + }; + + /** each :: this Option a -> (a -> b) -> Option b */ + var each = map; + + /** bind :: this Option a -> (a -> Option b) -> Option b + * "bind"/"flatMap" operation on the Option Bind/Monad. + * Equivalent to >>= in Haskell/PureScript; flatMap in Scala. + */ + var bind = function (f) { + return fold(none, f); + }; + + /** flatten :: {this Option (Option a))} -> () -> Option a + * "flatten"/"join" operation on the Option Monad. + */ + var flatten = function () { + return fold(none, Fun.identity); + }; + + /** exists :: this Option a -> (a -> Boolean) -> Boolean */ + var exists = function (f) { + return fold(Fun.constant(false), f); + }; + + /** forall :: this Option a -> (a -> Boolean) -> Boolean */ + var forall = function (f) { + return fold(Fun.constant(true), f); + }; + + /** filter :: this Option a -> (a -> Boolean) -> Option a */ + var filter = function (f) { + return fold(none, function (v) { + return f(v) ? some(v) : none(); + }); + }; + + /** equals :: this Option a -> Option a -> Boolean */ + var equals = function (o) { + return fold(o.isNone, o.is); + }; + + /** equals_ :: this Option a -> (Option a, a -> Boolean) -> Boolean */ + var equals_ = function (o, elementEq) { + return fold(o.isNone, function(x) { + return o.fold( + Fun.constant(false), + Fun.curry(elementEq, x) + ); + }); + }; + + /** toArray :: this Option a -> () -> [a] */ + var toArray = function () { + return fold(Fun.constant([]), function (val) { + return [ val ]; + }); + }; + + var toString = function() { + return fold(Fun.constant("none()"), function(a) { return "some(" + a + ")"; }); + }; + + return { + is: is, + isSome: isSome, + isNone: isNone, + getOr: getOr, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: each, + bind: bind, + ap: ap, + flatten: flatten, + exists: exists, + forall: forall, + equals: equals, + equals_: equals_, + filter: filter, + toArray: toArray, + toString: toString + }; + }; + + /** equals :: (Option a, Option a) -> Boolean */ + var equals = function(a, b) { + return a.equals(b); + }; + + /** equals_ :: (Option a, Option a, (a -> a) -> Boolean */ + var equals_ = function(a, b, elementEq) { + return a.equals_(b, elementEq); + }; + + return { + some: some, + none: none, + from: from, + equals: equals, + equals_: equals_ + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.imageupload.TinyUploader', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun' + ], + + function (Arr, Fun) { + return function (editor) { + + var uploadImages = function() { + editor.uploadImages(); + }; + + var prepareImages = function (assets) { + Arr.each(assets, function (a) { + a.fold(function (id, blob, objurl, data) { + Arr.each(editor.dom.select('img[src="' + objurl + '"]'), function (img) { + editor.dom.setAttrib(img, 'src', data.result); + }); + }, Fun.noop); + }); + }; + + var getLocalURL = function (id, blob, objurl, data) { + return data.result; + }; + + return { + uploadImages: uploadImages, + prepareImages: prepareImages, + getLocalURL: getLocalURL + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.ErrorDialog', + [ + + ], + function() { + return { + showDialog: function(editor, errorText){ + + var close = function() { + win.close(); + }; + + var controls = [{ + text: 'Ok', + onclick: close + }]; + + var winSettings = { + title: "Error", + spacing: 10, + padding: 10, + items: [{ + type: 'container', + html: errorText + }], + buttons: controls + }; + + //We could have done something similar through the use of windowmanager.alert + //But it appears that alert doesn't allow us to use html. + //So we create a custom dialog, again, and use .open instead. + win = editor.windowManager.open(winSettings); + } + }; +}); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.imageupload.UploadError', + + [ + 'ephox.powerpaste.alien.Once', + 'ephox.powerpaste.i18n.I18n', + 'ephox.powerpaste.tinymce.ErrorDialog' + ], + + function (Once, I18n, ErrorDialog) { + return function (editor, url) { + var serviceNotFound = function () { return I18n.translate('error.code.images.not.found') + url + I18n.translate('error.full.stop');}; + + var genericError = function () { return I18n.translate('error.imageupload') + url + I18n.translate('error.full.stop');}; + + var showDialog = function (err) { + var status = err.status(); + + // TODO: status === 0 seems to consistently be a CORS failure. Might be nice to have a better message. + var notFound = status === 0 || (status >= 400 || status < 500); + + // TODO: Services give us more details than this. The response should include details (TBIO-1256). + // 500+ falls through to generic error for now. + var error = notFound ? serviceNotFound : genericError; + ErrorDialog.showDialog(editor, error()); + }; + + var instance = function () { + // this ensures we only show one banner per upload request, even on multiple failures + return Once(showDialog); + }; + + return { + instance: instance + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.flour.style.Resolver', + + [ + 'ephox.compass.Arr' + ], + + function (Arr) { + var create = function (projectNamespace) { + var namespace = cssNamespace(projectNamespace); + + var resolve = function (cssClasses) { + var classes = cssClasses.split(' '); + + var resolved = Arr.map(classes, function (cls) { + return cssClass(namespace, cls); + }); + + return resolved.join(' '); + }; + + return { + resolve: resolve + }; + }; + + // JavaScript namespaces are of the form "ephox.project" + // CSS namespaces are of the form "ephox-project" + var cssNamespace = function (namespace) { + return namespace.replace(/\./g, '-'); + }; + + // CSS namespaced classes are of the form "css-namespace-class" + var cssClass = function (namespace, cls) { + return namespace + '-' + cls; + }; + + return { + create: create, + cssNamespace: cssNamespace, + cssClass: cssClass + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.style.Styles', + + [ + 'ephox.flour.style.Resolver' + ], + + function (Resolver) { + var styles = Resolver.create('ephox-salmon'); + + return { + resolve: styles.resolve + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.classify.Type', + + [ + 'global!Array', + 'global!String' + ], + + function (Array, String) { + var typeOf = function(x) { + if (x === null) return 'null'; + var t = typeof x; + if (t === 'object' && Array.prototype.isPrototypeOf(x)) return 'array'; + if (t === 'object' && String.prototype.isPrototypeOf(x)) return 'string'; + return t; + }; + + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + + return { + isString: isType('string'), + isObject: isType('object'), + isArray: isType('array'), + isNull: isType('null'), + isBoolean: isType('boolean'), + isUndefined: isType('undefined'), + isFunction: isType('function'), + isNumber: isType('number') + }; + } +); + + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.compass.Obj', + + [ + ], + + function () { + var each = function (obj, f) { + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + var x = obj[i]; + f(x, i, obj); + } + } + }; + + var objectMap = function (obj, f) { + return tupleMap(obj, function (x, i, obj) { + return { + k: i, + v: f(x, i, obj) + }; + }); + }; + + var tupleMap = function (obj, f) { + var r = {}; + each(obj, function (x, i) { + var tuple = f(x, i, obj); + r[tuple.k] = tuple.v; + }); + return r; + }; + + var bifilter = function (obj, pred) { + var t = {}; + var f = {}; + each(obj, function(x, i) { + var branch = pred(x, i) ? t : f; + branch[i] = x; + }); + return { + t: t, + f: f + }; + }; + + var mapToArray = function (obj, f) { + var r = []; + each(obj, function(value, name) { + r.push(f(value, name)); + }); + return r; + }; + + var find = function (obj, pred) { + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + var x = obj[i]; + if (pred(x, i, obj)) + return x; + } + } + return undefined; + }; + + var keys = function (obj) { + return mapToArray(obj, function (v, k) { + return k; + }); + }; + + var values = function (obj) { + return mapToArray(obj, function (v, k) { + return v; + }); + }; + + var size = function (obj) { + return values(obj).length; + }; + + return { + bifilter: bifilter, + each: each, + map: objectMap, + mapToArray: mapToArray, + tupleMap: tupleMap, + find: find, + keys: keys, + values: values, + size: size + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!Error", [], function () { return Error; }); +ephox.bolt.module.api.define("global!console", [], function () { if (typeof console === "undefined") console = { log: function () {} }; return console; }); +(function (define, require, demand) { +define( + 'ephox.sugar.api.Attr', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'global!Error', + 'global!console' + ], + + /* + * Direct attribute manipulation has been around since IE8, but + * was apparently unstable until IE10. + */ + function (Type, Arr, Obj, Error, console) { + var rawSet = function (dom, key, value) { + /* + * JQuery coerced everything to a string, and silently did nothing on text node/null/undefined. + * + * We fail on those invalid cases, only allowing numbers and booleans. + */ + if (Type.isString(value) || Type.isBoolean(value) || Type.isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + + var set = function (element, key, value) { + rawSet(element.dom(), key, value); + }; + + var setAll = function (element, attrs) { + var dom = element.dom(); + Obj.each(attrs, function (v, k) { + rawSet(dom, k, v); + }); + }; + + var get = function (element, key) { + var v = element.dom().getAttribute(key); + + // undefined is the more appropriate value for JS, and this matches JQuery + return v === null ? undefined : v; + }; + + var has = function (element, key) { + var dom = element.dom(); + + // return false for non-element nodes, no point in throwing an error + return dom && dom.hasAttribute ? dom.hasAttribute(key) : false; + }; + + var remove = function (element, key) { + element.dom().removeAttribute(key); + }; + + var hasNone = function (element) { + var attrs = element.dom().attributes; + return attrs === undefined || attrs === null || attrs.length === 0; + }; + + var clone = function (element) { + return Arr.foldl(element.dom().attributes, function (acc, attr) { + acc[attr.name] = attr.value; + return acc; + }, {}); + }; + + return { + clone: clone, + set: set, + setAll: setAll, + get: get, + has: has, + remove: remove, + hasNone: hasNone + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.scullion.Immutable2', + + [ + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.peanut.Fun' + ], + + function (Arr, Obj, Fun) { + + var $a = function(args) { + return Array.prototype.slice.call(args); + }; + + var product = function(fields, eqs) { + + var nu = function(/* values */) { + var values = $a(arguments); + if (fields.length !== values.length) + throw 'Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments'; + + var struct = {}; + Arr.each(fields, function (name, i) { + struct[name] = Fun.constant(values[i]); + }); + return struct; + }; + + var eq = function(a, b) { + for (var i = 0; i < fields.length; i++) { + var qqq = (eqs && eqs[i]) || Fun.tripleEquals; + var x = fields[i]; + if (!qqq(a[x](), b[x]())) { + return false; + } + } + return true; + }; + + var evaluate = function(o) { + return Obj.map(o, function(f) { + return f(); + }); + }; + + return { + nu: nu, + eq: eq, + evaluate: evaluate + }; + }; + + return { + product: product + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.scullion.Immutable', + + [ + 'ephox.scullion.Immutable2' + ], + + function (Immutable2) { + return function (/* fields */) { + return Immutable2.product(arguments).nu; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.scullion.BagUtils', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr' + ], + + function (Type, Arr) { + var sort = function (arr) { + return arr.slice(0).sort(); + }; + + var reqMessage = function (required, keys) { + throw 'All required keys (' + sort(required).join(', ') + ') were not specified. Specified keys were: ' + sort(keys).join(', ') + '.'; + }; + + var unsuppMessage = function (unsupported) { + throw 'Unsupported keys for object: ' + sort(unsupported).join(', '); + }; + + var validateStrArr = function (label, array) { + if (!Type.isArray(array)) throw 'The ' + label + ' fields must be an array. Was: ' + array + '.'; + Arr.each(array, function (a) { + if (!Type.isString(a)) throw 'The value ' + a + ' in the ' + label + ' fields was not a string.'; + }); + }; + + var invalidTypeMessage = function (incorrect, type) { + throw 'All values need to be of type: ' + type + '. Keys (' + sort(incorrect).join(', ') + ') were not.'; + }; + + var checkDupes = function (everything) { + var sorted = sort(everything); + var dupe = Arr.find(sorted, function (s, i) { + return i < sorted.length -1 && s === sorted[i + 1]; + }); + + if (dupe !== undefined && dupe !== null) throw 'The field: ' + dupe + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].'; + }; + + return { + sort: sort, + reqMessage: reqMessage, + unsuppMessage: unsuppMessage, + validateStrArr: validateStrArr, + invalidTypeMessage: invalidTypeMessage, + checkDupes: checkDupes + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!Object", [], function () { return Object; }); +(function (define, require, demand) { +define( + 'ephox.scullion.MixedBag', + + [ + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.scullion.BagUtils', + 'global!Object' + ], + + function (Arr, Obj, Fun, Option, BagUtils, Object) { + + return function (required, optional) { + var everything = required.concat(optional); + if (everything.length === 0) throw 'You must specify at least one required or optional field.'; + + BagUtils.validateStrArr('required', required); + BagUtils.validateStrArr('optional', optional); + + BagUtils.checkDupes(everything); + + return function (obj) { + var keys = Obj.keys(obj); + + // Ensure all required keys are present. + var allReqd = Arr.forall(required, function (req) { + return Arr.contains(keys, req); + }); + + if (! allReqd) BagUtils.reqMessage(required, keys); + + var unsupported = Arr.filter(keys, function (key) { + return !Arr.contains(everything, key); + }); + + if (unsupported.length > 0) BagUtils.unsuppMessage(unsupported); + + var r = {}; + Arr.each(required, function (req) { + r[req] = Fun.constant(obj[req]); + }); + + Arr.each(optional, function (opt) { + r[opt] = Fun.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]): Option.none()); + }); + + return r; + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.scullion.Struct', + + [ + 'ephox.scullion.Immutable', + 'ephox.scullion.Immutable2', + 'ephox.scullion.MixedBag' + ], + + function (Immutable, Immutable2, MixedBag) { + return { + immutable: Immutable, + immutable2: Immutable2, + immutableBag: MixedBag + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.alien.Recurse', + + [ + + ], + + function () { + /** + * Applies f repeatedly until it completes (by returning Option.none()). + * + * Normally would just use recursion, but JavaScript lacks tail call optimisation. + * + * This is what recursion looks like when manually unravelled :) + */ + var toArray = function (target, f) { + var r = []; + + var recurse = function (e) { + r.push(e); + return f(e); + }; + + var cur = f(target); + do { + cur = cur.bind(recurse); + } while (cur.isSome()); + + return r; + }; + + return { + toArray: toArray + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.bud.NodeTypes', + + [ + + ], + + function () { + return { + ATTRIBUTE: 2, + CDATA_SECTION: 4, + COMMENT: 8, + DOCUMENT: 9, + DOCUMENT_TYPE: 10, + DOCUMENT_FRAGMENT: 11, + ELEMENT: 1, + TEXT: 3, + PROCESSING_INSTRUCTION: 7, + ENTITY_REFERENCE: 5, + ENTITY: 6, + NOTATION: 12 + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Element', + + [ + 'ephox.peanut.Fun', + 'global!Error', + 'global!console', + 'global!document' + ], + + function (Fun, Error, console, document) { + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw 'HTML must have a single root node'; + } + return fromDom(div.childNodes[0]); + }; + + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + + var fromDom = function (node) { + if (node === null || node === undefined) throw new Error('Node cannot be not null or undefined'); + return { + dom: Fun.constant(node) + }; + }; + + return { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Selectors', + + [ + 'ephox.bud.NodeTypes', + 'ephox.compass.Arr', + 'ephox.perhaps.Option', + 'ephox.sugar.api.Element', + 'global!Error', + 'global!document' + ], + + function (NodeTypes, Arr, Option, Element, Error, document) { + /* + * There's a lot of code here; the aim is to allow the browser to optimise constant comparisons, + * instead of doing object lookup feature detection on every call + */ + var STANDARD = 0; + var MSSTANDARD = 1; + var WEBKITSTANDARD = 2; + var FIREFOXSTANDARD = 3; + + var selectorType = (function () { + var test = document.createElement('span'); + // As of Chrome 34 / Safari 7.1 / FireFox 34, everyone except IE has the unprefixed function. + // Still check for the others, but do it last. + return test.matches !== undefined ? STANDARD : + test.msMatchesSelector !== undefined ? MSSTANDARD : + test.webkitMatchesSelector !== undefined ? WEBKITSTANDARD : + test.mozMatchesSelector !== undefined ? FIREFOXSTANDARD : + -1; + })(); + + + var ELEMENT = NodeTypes.ELEMENT; + var DOCUMENT = NodeTypes.DOCUMENT; + + var is = function (element, selector) { + var elem = element.dom(); + if (elem.nodeType !== ELEMENT) return false; // documents have querySelector but not matches + + // As of Chrome 34 / Safari 7.1 / FireFox 34, everyone except IE has the unprefixed function. + // Still check for the others, but do it last. + else if (selectorType === STANDARD) return elem.matches(selector); + else if (selectorType === MSSTANDARD) return elem.msMatchesSelector(selector); + else if (selectorType === WEBKITSTANDARD) return elem.webkitMatchesSelector(selector); + else if (selectorType === FIREFOXSTANDARD) return elem.mozMatchesSelector(selector); + else throw new Error('Browser lacks native selectors'); // unfortunately we can't throw this on startup :( + }; + + var bypassSelector = function (dom) { + // Only elements and documents support querySelector + return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || + // IE fix for complex queries on empty nodes: http://jsfiddle.net/spyder/fv9ptr5L/ + dom.childElementCount === 0; + }; + + var all = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? [] : Arr.map(base.querySelectorAll(selector), Element.fromDom); + }; + + var one = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom); + }; + + return { + all: all, + is: is, + one: one + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Compare', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Selectors' + ], + + function (Arr, Fun, Selectors) { + var eq = function (e1, e2) { + return e1.dom() === e2.dom(); + }; + + var member = function (element, elements) { + return Arr.exists(elements, Fun.curry(eq, element)); + }; + + return { + eq: eq, + member: member, + + // Only used by DomUniverse. Remove (or should Selectors.is move here?) + is: Selectors.is + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Traverse', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.scullion.Struct', + 'ephox.sugar.alien.Recurse', + 'ephox.sugar.api.Compare', + 'ephox.sugar.api.Element' + ], + + function (Type, Arr, Fun, Option, Struct, Recurse, Compare, Element) { + // The document associated with the current element + var owner = function (element) { + return Element.fromDom(element.dom().ownerDocument); + }; + + var documentElement = function (element) { + // TODO: Avoid unnecessary wrap/unwrap here + var doc = owner(element); + return Element.fromDom(doc.dom().documentElement); + }; + + // The window element associated with the element + var defaultView = function (element) { + var el = element.dom(); + var defaultView = el.ownerDocument.defaultView; + return Element.fromDom(defaultView); + }; + + var parent = function (element) { + var dom = element.dom(); + return Option.from(dom.parentNode).map(Element.fromDom); + }; + + var findIndex = function (element) { + return parent(element).bind(function (p) { + // TODO: Refactor out children so we can avoid the constant unwrapping + var kin = children(p); + var index = Arr.findIndex(kin, function (elem) { + return Compare.eq(element, elem); + }); + + return index > -1 ? Option.some(index) : Option.none(); + }); + }; + + var parents = function (element, isRoot) { + var stop = Type.isFunction(isRoot) ? isRoot : Fun.constant(false); + return internalParents(element, stop); + }; + + var internalParents = function (element, stop) { + return parent(element).fold(function () { + return []; + }, function (v) { + var ret = [ v ]; + return stop(v) ? ret : ret.concat(internalParents(v, stop)); + }); + }; + + var siblings = function (element) { + // TODO: Refactor out children so we can just not add self instead of filtering afterwards + var filterSelf = function (elements) { + return Arr.filter(elements, function (x) { + return !Compare.eq(element, x); + }); + }; + + return parent(element).map(children).map(filterSelf).getOr([]); + }; + + var offsetParent = function (element) { + var dom = element.dom(); + return Option.from(dom.offsetParent).map(Element.fromDom); + }; + + var prevSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.previousSibling).map(Element.fromDom); + }; + + var nextSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.nextSibling).map(Element.fromDom); + }; + + var prevSiblings = function (element) { + // This one needs to be reversed, so they're still in DOM order + return Arr.reverse(Recurse.toArray(element, prevSibling)); + }; + + var nextSiblings = function (element) { + return Recurse.toArray(element, nextSibling); + }; + + var children = function (element) { + var dom = element.dom(); + return Arr.map(dom.childNodes, Element.fromDom); + }; + + var child = function (element, index) { + var children = element.dom().childNodes; + return Option.from(children[index]).map(Element.fromDom); + }; + + var firstChild = function (element) { + return child(element, 0); + }; + + var lastChild = function (element) { + return child(element, element.dom().childNodes.length - 1); + }; + + var spot = Struct.immutable('element', 'offset'); + var leaf = function (element, offset) { + var cs = children(element); + return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset); + }; + + return { + owner: owner, + defaultView: defaultView, + documentElement: documentElement, + parent: parent, + findIndex: findIndex, + parents: parents, + siblings: siblings, + prevSibling: prevSibling, + offsetParent: offsetParent, + prevSiblings: prevSiblings, + nextSibling: nextSibling, + nextSiblings: nextSiblings, + children: children, + child: child, + firstChild: firstChild, + lastChild: lastChild, + leaf: leaf + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Insert', + + [ + 'ephox.sugar.api.Traverse' + ], + + function (Traverse) { + var before = function (marker, element) { + var parent = Traverse.parent(marker); + parent.each(function (v) { + v.dom().insertBefore(element.dom(), marker.dom()); + }); + }; + + var after = function (marker, element) { + var sibling = Traverse.nextSibling(marker); + sibling.fold(function () { + var parent = Traverse.parent(marker); + parent.each(function (v) { + append(v, element); + }); + }, function (v) { + before(v, element); + }); + }; + + var prepend = function (parent, element) { + var firstChild = Traverse.firstChild(parent); + firstChild.fold(function () { + append(parent, element); + }, function (v) { + parent.dom().insertBefore(element.dom(), v.dom()); + }); + }; + + var append = function (parent, element) { + parent.dom().appendChild(element.dom()); + }; + + var appendAt = function (parent, element, index) { + Traverse.child(parent, index).fold(function () { + append(parent, element); + }, function (v) { + before(v, element); + }); + }; + + var wrap = function (element, wrapper) { + before(element, wrapper); + append(wrapper, element); + }; + + return { + before: before, + after: after, + prepend: prepend, + append: append, + appendAt: appendAt, + wrap: wrap + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.InsertAll', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Insert' + ], + + function (Arr, Insert) { + var before = function (marker, elements) { + Arr.each(elements, function (x) { + Insert.before(marker, x); + }); + }; + + var after = function (marker, elements) { + Arr.each(elements, function (x, i) { + var e = i === 0 ? marker : elements[i - 1]; + Insert.after(e, x); + }); + }; + + var prepend = function (parent, elements) { + Arr.each(elements.slice().reverse(), function (x) { + Insert.prepend(parent, x); + }); + }; + + var append = function (parent, elements) { + Arr.each(elements, function (x) { + Insert.append(parent, x); + }); + }; + + return { + before: before, + after: after, + prepend: prepend, + append: append + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Remove', + + [ + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Traverse' + ], + + function (InsertAll, Traverse) { + var empty = function (element) { + // requires IE 9 + element.dom().textContent = ''; + }; + + var remove = function (element) { + var dom = element.dom(); + if (dom.parentNode !== null) + dom.parentNode.removeChild(dom); + }; + + var unwrap = function (wrapper) { + var children = Traverse.children(wrapper); + if (children.length > 0) + InsertAll.before(wrapper, children); + remove(wrapper); + }; + + return { + empty: empty, + remove: remove, + unwrap: unwrap + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.peanut.Thunk', + + [ + ], + + function () { + + var cached = function (f) { + var called = false; + var r; + return function() { + if (!called) { + called = true; + r = f.apply(null, arguments); + } + return r; + }; + }; + + return { + cached: cached + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Node', + + [ + 'ephox.bud.NodeTypes' + ], + + function (NodeTypes) { + var name = function (element) { + var r = element.dom().nodeName; + return r.toLowerCase(); + }; + + var type = function (element) { + return element.dom().nodeType; + }; + + var value = function (element) { + return element.dom().nodeValue; + }; + + var isType = function (t) { + return function (element) { + return type(element) === t; + }; + }; + + var isComment = function (element) { + return type(element) === NodeTypes.COMMENT || name(element) === '#comment'; + }; + + var isElement = isType(NodeTypes.ELEMENT); + var isText = isType(NodeTypes.TEXT); + var isDocument = isType(NodeTypes.DOCUMENT); + + return { + name: name, + type: type, + value: value, + isElement: isElement, + isText: isText, + isDocument: isDocument, + isComment: isComment + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Body', + + [ + 'ephox.peanut.Thunk', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Node', + 'global!document' + ], + + function (Thunk, Element, Node, document) { + + // Node.contains() is very, very, very good performance + // http://jsperf.com/closest-vs-contains/5 + var inBody = function (element) { + // Technically this is only required on IE, where contains() returns false for text nodes. + // But it's cheap enough to run everywhere and Sugar doesn't have platform detection (yet). + var dom = Node.isText(element) ? element.dom().parentNode : element.dom(); + + // use ownerDocument.body to ensure this works inside iframes. + // Normally contains is bad because an element "contains" itself, but here we want that. + return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom); + }; + + var body = Thunk.cached(function () { + var body = document.body; + if (body === null || body === undefined) throw 'Body is not available yet'; + return Element.fromDom(body); + }); + + return { + body: body, + inBody: inBody + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.PredicateFilter', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Body', + 'ephox.sugar.api.Traverse' + ], + + function (Arr, Body, Traverse) { + // maybe TraverseWith, similar to traverse but with a predicate? + + var all = function (predicate) { + return descendants(Body.body(), predicate); + }; + + var ancestors = function (scope, predicate, isRoot) { + return Arr.filter(Traverse.parents(scope, isRoot), predicate); + }; + + var siblings = function (scope, predicate) { + return Arr.filter(Traverse.siblings(scope), predicate); + }; + + var children = function (scope, predicate) { + return Arr.filter(Traverse.children(scope), predicate); + }; + + var descendants = function (scope, predicate) { + var result = []; + + // Recurse.toArray() might help here + Arr.each(Traverse.children(scope), function (x) { + if (predicate(x)) { + result = result.concat([ x ]); + } + result = result.concat(descendants(x, predicate)); + }); + return result; + }; + + return { + all: all, + ancestors: ancestors, + siblings: siblings, + children: children, + descendants: descendants + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.SelectorFilter', + + [ + 'ephox.sugar.api.PredicateFilter', + 'ephox.sugar.api.Selectors' + ], + + function (PredicateFilter, Selectors) { + var all = function (selector) { + return Selectors.all(selector); + }; + + // For all of the following: + // + // jQuery does siblings of firstChild. IE9+ supports scope.dom().children (similar to Traverse.children but elements only). + // Traverse should also do this (but probably not by default). + // + + var ancestors = function (scope, selector, isRoot) { + // It may surprise you to learn this is exactly what JQuery does + // TODO: Avoid all this wrapping and unwrapping + return PredicateFilter.ancestors(scope, function (e) { + return Selectors.is(e, selector); + }, isRoot); + }; + + var siblings = function (scope, selector) { + // It may surprise you to learn this is exactly what JQuery does + // TODO: Avoid all the wrapping and unwrapping + return PredicateFilter.siblings(scope, function (e) { + return Selectors.is(e, selector); + }); + }; + + var children = function (scope, selector) { + // It may surprise you to learn this is exactly what JQuery does + // TODO: Avoid all the wrapping and unwrapping + return PredicateFilter.children(scope, function (e) { + return Selectors.is(e, selector); + }); + }; + + var descendants = function (scope, selector) { + return Selectors.all(selector, scope); + }; + + return { + all: all, + ancestors: ancestors, + siblings: siblings, + children: children, + descendants: descendants + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.impl.ClosestOrAncestor', + + [ + 'ephox.classify.Type', + 'ephox.perhaps.Option' + ], + + function (Type, Option) { + return function (is, ancestor, scope, a, isRoot) { + return is(scope, a) ? + Option.some(scope) : + Type.isFunction(isRoot) && isRoot(scope) ? + Option.none() : + ancestor(scope, a, isRoot); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.SelectorFind', + + [ + 'ephox.perhaps.Option', + 'ephox.sugar.api.SelectorFilter', + 'ephox.sugar.api.Selectors', + 'ephox.sugar.impl.ClosestOrAncestor' + ], + + function (Option, SelectorFilter, Selectors, ClosestOrAncestor) { + // It's ridiculous to spend all that time finding everything and then just get the first. + // Two suggestions: + // * An internal SelectorFilter module that doesn't Element.fromDom() everything + // * Re-implement using Selectors.one() instead of Selectors.all() + + var first = function (selector) { + return Option.from(SelectorFilter.all(selector)[0]); + }; + + var ancestor = function (scope, selector, isRoot) { + return Option.from(SelectorFilter.ancestors(scope, selector, isRoot)[0]); + }; + + var sibling = function (scope, selector) { + return Option.from(SelectorFilter.siblings(scope, selector)[0]); + }; + + var child = function (scope, selector) { + return Option.from(SelectorFilter.children(scope, selector)[0]); + }; + + var descendant = function (scope, selector) { + return Option.from(SelectorFilter.descendants(scope, selector)[0]); + }; + + var closest = function (scope, selector, isRoot) { + return ClosestOrAncestor(Selectors.is, ancestor, scope, selector, isRoot); + }; + + return { + first: first, + ancestor: ancestor, + sibling: sibling, + child: child, + descendant: descendant, + closest: closest + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.api.Ephemera', + + [ + 'ephox.peanut.Fun', + 'ephox.salmon.style.Styles', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFind' + ], + + function (Fun, Styles, Attr, Remove, SelectorFind) { + var uploadContainer = Styles.resolve('upload-image-container'); + var blobId = 'data-' + Styles.resolve('image-blob'); + + var cleanup = function (element) { + SelectorFind.child(element, 'img').each(cleanImg); + Remove.unwrap(element); + }; + + var cleanImg = function (element) { + Attr.remove(element, 'class'); + }; + + return { + uploadContainer: Fun.constant(uploadContainer), + blobId: Fun.constant(blobId), + cleanup: cleanup + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Elements', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Traverse', + 'global!document' + ], + + function (Arr, Element, Traverse, document) { + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + return Traverse.children(Element.fromDom(div)); + }; + + var fromTags = function (tags, scope) { + return Arr.map(tags, function (x) { + return Element.fromTag(x, scope); + }); + }; + + var fromText = function (texts, scope) { + return Arr.map(texts, function (x) { + return Element.fromText(x, scope); + }); + }; + + var fromDom = function (nodes) { + return Arr.map(nodes, Element.fromDom); + }; + + return { + fromHtml: fromHtml, + fromTags: fromTags, + fromText: fromText, + fromDom: fromDom + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define('ephox.powerpaste.tinymce.UndoRewriter', + [ + 'ephox.compass.Arr', + 'ephox.salmon.api.Ephemera', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Elements', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.SelectorFilter' + ], + function(Arr, UiEphemera, Element, Elements, InsertAll, SelectorFilter) { + var unwrapHistory = function(editor) { + //Start undomanager hack + for (var i = 0; i < editor.undoManager.data.length; i ++) { + //get the content of every undomanager back stack level + var content = editor.undoManager.data[i].content; + var temp = Element.fromTag('div'); + InsertAll.append(temp, Elements.fromHtml(content)); + //Find uploaded image containers + var uploadContainers = SelectorFilter.descendants(temp, '.' + UiEphemera.uploadContainer()); + //Strip the containers + Arr.each(uploadContainers, UiEphemera.cleanup); + editor.undoManager.data[i].content = temp.dom().innerHTML; + } + }; + + var resrcHistory = function(editor, b, result) { + for (var i = 0; i < editor.undoManager.data.length; i ++) { + editor.undoManager.data[i].content = editor.undoManager.data[i].content.split(b.objurl()).join(result.location); + } + }; + + return { + unwrapHistory: unwrapHistory, + resrcHistory: resrcHistory + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.epithet.Global', + + [ + ], + + function () { + return Function('return this;')(); + } +); + + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.epithet.Resolve', + + [ + 'ephox.epithet.Global' + ], + + function (Global) { + var path = function (parts, scope) { + var o = scope || Global; + for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) + o = o[parts[i]]; + return o; + }; + + var resolve = function (p, scope) { + var parts = p.split('.'); + return path(parts, scope); + }; + + return { + path: path, + resolve: resolve + }; + } +); + + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.core.Global', + + [ + 'ephox.epithet.Resolve' + ], + + function (Resolve) { + var unsafe = function (name, scope) { + return Resolve.resolve(name, scope); + }; + + var getOrDie = function (name, scope) { + var actual = unsafe(name, scope); + + // In theory, TBIO should refuse to load below IE10. But we'll enforce it here too. + if (actual === undefined) throw name + ' not available on this browser'; + return actual; + }; + + return { + getOrDie: getOrDie + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.URL', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * IE10 and above per + * https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL + * + * Also Safari 6.1+ + * Safari 6.0 has 'webkitURL' instead, but doesn't support flexbox so we + * aren't supporting it anyway + */ + var url = function () { + return Global.getOrDie('URL'); + }; + + var createObjectURL = function (blob) { + return url().createObjectURL(blob); + }; + + var revokeObjectURL = function (u) { + url().revokeObjectURL(u); + }; + + return { + createObjectURL: createObjectURL, + revokeObjectURL: revokeObjectURL + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.api.BlobCache', + + [ + 'ephox.compass.Obj', + 'ephox.numerosity.api.URL', + 'ephox.perhaps.Option', + 'ephox.scullion.Struct' + ], + + function (Obj, URL, Option, Struct) { + var blobInfo = Struct.immutable('id', 'blob', 'objurl', 'data'); + + return function () { + var blobCache = {}; + + var add = function (id, blob, objurl, data) { + var info = blobInfo(id, blob, objurl, data); + blobCache[id] = info; + return info; + }; + + var get = function (id) { + return Option.from(blobCache[id]); + }; + + var release = function (info) { + URL.revokeObjectURL(info.objurl()); + }; + + var lookupByData = function (data) { + return Option.from(Obj.find(blobCache, function (c) { + return c.data().result === data; + })); + }; + + var remove = function (id) { + var o = blobCache[id]; + delete blobCache[id]; + if (o !== undefined) release(o); + }; + + var destroy = function () { + Obj.each(blobCache, release); + blobCache = {}; + }; + + return { + add: add, + get: get, + remove: remove, + lookupByData: lookupByData, + destroy: destroy + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.porkbun.Event', + + [ + 'ephox.compass.Arr', + 'ephox.scullion.Struct' + ], + function (Arr, Struct) { + + /** :: ([String]) -> Event */ + return function (fields) { + var struct = Struct.immutable.apply(null, fields); + + var handlers = []; + + var bind = function (handler) { + if (handler === undefined) { + throw 'Event bind error: undefined handler'; + } + handlers.push(handler); + }; + + var unbind = function(handler) { + var index = Arr.indexOf(handlers, handler); + if (index !== -1) { + handlers.splice(index, 1); + } + }; + + var trigger = function (/* values */) { + // scullion does Array prototype slice, we don't need to as well + var event = struct.apply(null, arguments); + Arr.each(handlers, function (handler) { + handler(event); + }); + }; + + return { + bind: bind, + unbind: unbind, + trigger: trigger + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.porkbun.Events', + + [ + 'ephox.compass.Obj' + ], + + function (Obj) { + + /** :: {name : Event} -> Events */ + var create = function (typeDefs) { + var registry = Obj.map(typeDefs, function (event) { + return { + bind: event.bind, + unbind: event.unbind + }; + }); + + var trigger = Obj.map(typeDefs, function (event) { + return event.trigger; + }); + + return { + registry: registry, + trigger: trigger + }; + }; + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.api.ImageTracker', + + [ + 'ephox.compass.Arr', + 'ephox.salmon.style.Styles', + 'ephox.salmon.api.Ephemera', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.SelectorFilter' + ], + + function (Arr, Styles, Ephemera, Event, Events, Attr, SelectorFilter) { + var uploadAttr = 'data-' + Styles.resolve('image-upload'); + + var findById = function (body, id) { + return SelectorFilter.descendants(body, 'img[' + uploadAttr + '="' + id + '"]'); + }; + + var findAll = function (body) { + // Find all images that are registered in the blob tracker, but aren't uploading + return SelectorFilter.descendants(body, 'img:not([' + uploadAttr + '])[' + Ephemera.blobId() + ']'); + }; + + return function () { + var imgStack = []; + var response = []; + + var events = Events.create({ + complete: Event(['response']) + }); + + var register = function (img, id) { + Attr.set(img, uploadAttr, id); + imgStack.push(id); + }; + + var deregister = function (id) { + imgStack = Arr.filter(imgStack, function (val, index) { + return val !== id; + }); + if (inProgress() === false) finished(); + }; + + var result = function (bool, element) { + response.push({ + 'success': bool, + 'element': element.dom() + }); + }; + + var report = function (id, images, success) { + Arr.each(images, function (img) { + Attr.remove(img, uploadAttr); + result(success, img); + }); + deregister(id); + }; + + var finished = function () { + events.trigger.complete(response); + response = []; + }; + + var inProgress = function () { + return imgStack.length > 0; + }; + + var isActive = function (id) { + return Arr.contains(imgStack, id); + }; + + return { + findById: findById, + findAll: findAll, + register: register, + report: report, + inProgress: inProgress, + isActive: isActive, + events: events.registry + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.highway.Merger', + + [ + 'ephox.classify.Type' + ], + + function (Type) { + + var shallow = function (old, nu) { + return nu; + }; + + var deep = function (old, nu) { + var bothObjects = Type.isObject(old) && Type.isObject(nu); + return bothObjects ? deepMerge(old, nu) : nu; + }; + + var baseMerge = function (merger) { + return function() { + var objects = Array.prototype.slice.call(arguments, 0); + if (objects.length === 0) throw "Can't merge zero objects"; + + var ret = {}; + for (var i = 0; i < objects.length; i++) { + var curObject = objects[i]; + // FIX Merger 14/02/2012 Replace with the functional iterators / maps + for (var key in curObject) if (Object.prototype.hasOwnProperty.call(curObject, key)) { + ret[key] = merger(ret[key], curObject[key]); + } + } + return ret; + }; + }; + + var deepMerge = baseMerge(deep); + var merge = baseMerge(shallow); + + return { + deepMerge: deepMerge, + merge: merge + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.scullion.ADT', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.peanut.Fun', + 'global!Array' + ], + + function (Type, Arr, Obj, Fun, Array) { + /* + * Generates a church encoded ADT. No, I'm not going to explain what that is here. + * + * The aim of this file is to replace the extreme ADT syntax we have been using + * (50 lines of code for a simple variant with 4 cases). Specifying the ADT + * can now be done in one line per case, and proper validation is included. + * + * For syntax and use, look at the test code. + */ + var generate = function (cases) { + // validation + if (!Type.isArray(cases)) { + throw 'cases must be an array'; + } + if (cases.length === 0) { + throw 'there must be at least one case'; + } + // adt is mutated to add the individual cases + var adt = {}; + Arr.each(cases, function (acase, count) { + var keys = Obj.keys(acase); + + // validation + if (keys.length !== 1) { + throw 'one and only one name per case'; + } + + var key = keys[0]; + var value = acase[key]; + + // validation + if (adt[key] !== undefined) { + throw 'duplicate key detected:' + key; + } else if (key === 'cata') { + throw 'cannot have a case named cata (sorry)'; + } else if (!Type.isArray(value)) { + // this implicitly checks if acase is an object + throw 'case arguments must be an array'; + } + // + // constructor for key + // + adt[key] = function () { + var args = Array.prototype.slice.call(arguments); + // validation + if (args.length !== value.length) { + throw 'Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + args.length; + } + + + // + // the fold function for key + // + return { + fold: function (/* arguments */) { + // runtime validation + if (arguments.length !== cases.length) { + throw 'Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length; + } + var target = arguments[count]; + return target.apply(null, args); + } + }; + }; + }); + + return adt; + }; + return { + generate: generate + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.hermes.api.ImageAsset', + + [ + 'ephox.highway.Merger', + 'ephox.scullion.ADT' + ], + + function (Merger, ADT) { + /* + * An arbitrary common data structure for handling both local image files + * and images from web urls. + */ + var adt = ADT.generate([ + { 'blob': // Local image. W3C blob object (or File). + [ // NOTE File is just a subclass of Blob + 'id', // unique ID + 'blob', // the entire blob object + 'objurl', // an object URL - THIS MUST BE RELEASED WHEN DONE + 'data' // FileReader instance - already complete - loaded using readAsDataURL(). + // we're storing this rather than result in the hope it will + // keep the string native rather than convert to JS + ] + }, + { 'url': ['id', 'url', 'raw'] } // Remote image. JS image object/element loaded via url + + ]); + + var cata = function (subject, onFile, onImage) { + return subject.fold(onFile, onImage); + }; + + return Merger.merge(adt, { + cata: cata + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.perhaps.Result', + + [ + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + function (Fun, Option) { + var value = function (r) { + return result(function (e, v) { + return v(r); + }); + }; + + var error = function (message) { + return result(function (e, v) { + return e(message); + }); + }; + + var result = function (fold) { + + var is = function (v) { + return fold(Fun.constant(false), function (o) { + return o === v; + }); + }; + + var isValue = function () { + return fold(Fun.constant(false), Fun.constant(true)); + }; + + var isError = Fun.not(isValue); + + var getOr = function (a) { + return fold(Fun.constant(a), Fun.identity); + }; + + var getOrThunk = function (f) { + return fold(f, Fun.identity); + }; + + var getOrDie = function () { + return fold(function (m) { + Fun.die(m)(); + }, Fun.identity); + }; + + var or = function (opt) { + return fold(Fun.constant(opt), value); + }; + + var orThunk = function (f) { + return fold(f, value); + }; + + var map = function (f) { + return bind(function (a) { + return value(f(a)); + }); + }; + + var each = map; + + var bind = function (f) { + return fold(error, f); + }; + + var exists = function (f) { + return fold(Fun.constant(false), f); + }; + + var forall = function (f) { + return fold(Fun.constant(true), f); + }; + + var toOption = function () { + return fold(Option.none, Option.some); + }; + + return { + is: is, + isValue: isValue, + isError: isError, + getOr: getOr, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOption: toOption + }; + }; + + return { + value: value, + error: error + }; + + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.alien.Toggler', + + [ + ], + + function () { + return function (turnOff, turnOn, initial) { + var active = initial || false; + + var on = function () { + turnOn(); + active = true; + }; + + var off = function () { + turnOff(); + active = false; + }; + + var toggle = function () { + var f = active ? off : on; + f(); + }; + + var isOn = function () { + return active; + }; + + return { + on: on, + off: off, + toggle: toggle, + isOn: isOn + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Class', + + [ + 'ephox.sugar.alien.Toggler', + 'ephox.sugar.api.Attr' + ], + + function (Toggler, Attr) { + /* + * ClassList is IE10 minimum: + * https://developer.mozilla.org/en-US/docs/Web/API/Element.classList + * + * Note that IE doesn't support the second argument to toggle (at all). + * If it did, the toggler could be better. + */ + + var add = function (element, clazz) { + element.dom().classList.add(clazz); + }; + + var remove = function (element, clazz) { + var classList = element.dom().classList; + classList.remove(clazz); + + // classList is a "live list", so this is up to date already + if (classList.length === 0) { + // No more classes left, remove the class attribute as well + Attr.remove(element, 'class'); + } + }; + + var toggle = function (element, clazz) { + return element.dom().classList.toggle(clazz); + }; + + var toggler = function (element, clazz) { + var classList = element.dom().classList; + var off = function () { + classList.remove(clazz); + }; + var on = function () { + classList.add(clazz); + }; + return Toggler(off, on, has(element, clazz)); + }; + + var has = function (element, clazz) { + var classList = element.dom().classList; + // Cereal has a nasty habit of calling this with a text node >.< + return classList !== undefined && classList.contains(clazz); + }; + + // set deleted, risks bad performance. Be deterministic. + + return { + add: add, + remove: remove, + toggle: toggle, + toggler: toggler, + has: has + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.ui.UploadUi', + + [ + 'ephox.salmon.api.Ephemera', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFind', + 'ephox.sugar.api.Traverse' + ], + + function (Ephemera, Class, Element, Insert, InsertAll, Remove, SelectorFind, Traverse) { + var removeUi = function (image) { + SelectorFind.ancestor(image, '.' + Ephemera.uploadContainer()).each(function (wrapper) { + var children = Traverse.children(wrapper); + InsertAll.before(wrapper, children); + Remove.remove(wrapper); + }); + }; + + var addUi = function (image) { + var block = Element.fromTag('div'); + Class.add(block, Ephemera.uploadContainer()); + Insert.before(image, block); + Insert.append(block, image); + }; + + return { + removeUi: removeUi, + addUi: addUi + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.api.UploadUtils', + + [ + 'ephox.compass.Arr', + 'ephox.hermes.api.ImageAsset', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.perhaps.Result', + 'ephox.salmon.api.Ephemera', + 'ephox.salmon.ui.UploadUi', + 'ephox.scullion.ADT', + 'ephox.scullion.Struct', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.SelectorFind', + 'global!console' + ], + + function (Arr, ImageAsset, Fun, Option, Result, UiEphemera, UploadUi, Adt, Struct, Attr, SelectorFind, console) { + var imageBlob = Struct.immutable('image', 'blobInfo'); + + var uploadResult = Adt.generate([ + { 'failure': [ 'error' ] }, + { 'success': [ 'result', 'images', 'blob' ] } + ]); + + /* Register any not already active id in the image tracker and return Some if it isn't already active */ + var prepareForUpload = function (imageTracker, id, image) { + // If this ID is already active, don't actually trigger the upload a second time + var alreadyActive = imageTracker.isActive(id); + + // Register the id so ImageTracker can find it + imageTracker.register(image, id); + + // Add the spinner wrapper. + UploadUi.addUi(image); + + // separate the actual upload call so we don't have the img element in closure + return !alreadyActive ? Option.some(id) : Option.none(); + }; + + /* With each uploaded image, remove the uploading UI, update its src, and remove from the blob cache. + * Return the blob info identified by the id + */ + var updateImages = function (blobCache, images, id, result) { + Arr.each(images, function (img) { + Attr.set(img, 'src', result.location); + Attr.remove(img, UiEphemera.blobId()); + }); + + return removeFromCache(blobCache, id, images); + }; + + /* Upload a particular image, finding it afterwards and updating its source */ + var handleUpload = function (uploadManager, imageTracker, blobCache, container, id, blob, callback) { + var internalError = function () { + console.error('Internal error with blob cache', id); + // anything over 500 is a generic error + callback(uploadResult.failure({status: Fun.constant(666)})); + }; + + uploadManager.upload(blob, id, function (response) { + var freshImgs = imageTracker.findById(container, id); + + // remove the image UI no matter what happened + Arr.each(freshImgs, UploadUi.removeUi); + + response.fold(function (err) { + callback(uploadResult.failure(err)); + }, function (result) { + updateImages(blobCache, freshImgs, id, result).fold(internalError, function (blobInfo) { + callback(uploadResult.success(result, freshImgs, blobInfo)); + }); + }); + + imageTracker.report(id, freshImgs, response.isValue()); + }); + }; + + var addToCache = function (blobCache, id, blob, objurl, data, image) { + var blobInfo = blobCache.lookupByData(data.result).getOrThunk(function () { return blobCache.add(id, blob, objurl, data); }); + Attr.set(image, UiEphemera.blobId(), blobInfo.id()); + return Result.value(imageBlob(image, blobInfo)); + }; + + + var findInCache = function (blobCache, image) { + var id = Attr.get(image, UiEphemera.blobId()); + return blobCache.get(id).fold(function () { + return Result.error(id); + }, function (blobInfo) { + return Result.value(imageBlob(image, blobInfo)); + }); + }; + + var removeFromCache = function (blobCache, id, images) { + return blobCache.get(id).fold(function () { + return Result.error('Internal error with blob cache'); + }, function (blobInfo) { + blobCache.remove(id); + return Result.value(blobInfo); + }); + }; + + /* Find all of the assets in the container, and return the (blobInfo, img) pairs */ + var registerAssets = function (blobCache, container, assets) { + return Arr.bind(assets, function (asset) { + return ImageAsset.cata(asset, function (id, blob, objurl, data) { + var freshImg = SelectorFind.descendant(container, 'img[src="' + objurl + '"]'); + return freshImg.fold(function () { + return [ Result.error('Image that was just inserted could not be found: ' + objurl) ]; + }, function (img) { + return [ addToCache(blobCache, id, blob, objurl, data, img) ]; + }); + }, Fun.constant([])); + }); + }; + + var findBlobs = function(imageTracker, blobCache, container) { + var images = imageTracker.findAll(container); + if (imageTracker.inProgress()) return []; + return Arr.map(images, function (image) { + return findInCache(blobCache, image); + }); + }; + + return { + prepareForUpload: prepareForUpload, + handleUpload: handleUpload, + registerAssets: registerAssets, + findBlobs: findBlobs + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.FormData', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * IE10 and above per + * https://developer.mozilla.org/en-US/docs/Web/API/FormData + */ + return function () { + var f = Global.getOrDie('FormData'); + return new f(); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!Math", [], function () { return Math; }); +ephox.bolt.module.api.define("global!isFinite", [], function () { return isFinite; }); +ephox.bolt.module.api.define("global!isNaN", [], function () { return isNaN; }); +ephox.bolt.module.api.define("global!parseFloat", [], function () { return parseFloat; }); +(function (define, require, demand) { +define( + 'ephox.violin.util.Validate', + + [ + 'global!Math', + 'global!isFinite', + 'global!isNaN', + 'global!parseFloat' + ], + + function(Math, isFinite, isNaN, parseFloat) { + var vType = function(expectedType) { + return function(name, value) { + var t = typeof value; + if (t !== expectedType) throw name + ' was not a ' + expectedType + '. Was: ' + value + ' (' + t + ')'; + }; + }; + + var vString = vType('string'); + + var vChar = function(name, value) { + vString(name, value); + var length = value.length; + if (length !== 1) throw name + ' was not a single char. Was: ' + value; + }; + + var vNumber = vType('number'); + + var vInt = function(name, value) { + vNumber(name, value); + if (value !== Math.abs(value)) throw name + ' was not an integer. Was: ' + value; + }; + + var pNum = function(value) { + return !isNaN(parseFloat(value)) && isFinite(value); + }; + + var vNat = function(name, value) { + vInt(name, value); + if (value < 0) throw name + ' was not a natural number. Was: ' + value; + }; + + return { + vString: vString, + vChar: vChar, + vInt: vInt, + vNat: vNat, + pNum: pNum + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +/** + * "violin" - stringed instrument, or rather, an instrument for dealing with strings. + */ +define( + "ephox.violin.Strings", + + [ + 'ephox.violin.util.Validate' + ], + + function (Validate) { + //common method + var checkRange = function(str, substr, start) { + if (substr === "") return true; + if (str.length < substr.length) return false; + var x = str.substr(start, start + substr.length); + return x === substr; + }; + + /** Given a string and object, perform template-replacements on the string, as specified by the object. + * Any template fields of the form ${name} are replaced by the string or number specified as obj["name"] + * Based on Douglas Crockford's 'supplant' method for template-replace of strings. Uses different template format. + */ + var supplant = function(str, obj) { + var isStringOrNumber = function(a) { + var t = typeof a; + return t === "string" || t === "number"; + }; + + return str.replace(/\${([^{}]*)}/g, + function (a, b) { + var value = obj[b]; + return isStringOrNumber(value) ? value : a; + } + ); + }; + + var ignoringCase = function(fn) { + var map = function(a, fn) { + var r = []; + for (var i = 0; i < a.length; i++) r.push(fn(a[i])); + return r; + }; + + return function() { + var args = map(arguments, function(x) { + return typeof x === "string" ? x.toLowerCase() : x; + }); + return fn.apply(this, args); + }; + }; + + /** Does 'str' start with 'prefix'? + * Note: all strings start with the empty string. + * More formally, for all strings x, startsWith(x, ""). + * This is so that for all strings x and y, startsWith(y + x, y) + */ + var startsWith = function(str, prefix) { + return checkRange(str, prefix, 0); + }; + + var startsWithIgnoringCase = /* str, prefix */ ignoringCase(startsWith); + + /** Does 'str' end with 'suffix'? + * Note: all strings end with the empty string. + * More formally, for all strings x, endsWith(x, ""). + * This is so that for all strings x and y, endsWith(x + y, y) + */ + var endsWith = function(str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + + var endsWithIgnoringCase = /* str, suffix */ ignoringCase(endsWith); + + /** Return the first 'count' letters from 'str'. + * e.g. first("abcde", 2) === "ab" + */ + var first = function(str, count) { + return str.substr(0, count); + }; + + /** Return the last 'count' letters from 'str'. + * e.g. last("abcde", 2) === "de" + */ + var last = function(str, count) { + return str.substr(str.length - count, str.length); + }; + + var removeAppendage = function(checkFn, chopFn) { + return function(str, appendage) { + return checkFn(str, appendage) ? chopFn(str, str.length - appendage.length) : str; + }; + }; + + var removeLeading = /* str, prefix */ removeAppendage(startsWith, last); + var removeTrailing = /* str, suffix */ removeAppendage(endsWith, first); + + var append = function(a, b) { + return a + b; + }; + + var prepend = function(a, b) { + return b + a; + }; + + var ensureAppendage = function(checkFn, concatter) { + return function(str, appendage) { + return checkFn(str, appendage) ? str : concatter(str, appendage); + }; + }; + + var ensureLeading = /* str, prefix */ ensureAppendage(startsWith, prepend); + var ensureTrailing = /* str, suffix */ ensureAppendage(endsWith, append); + + /** removes all leading and trailing spaces */ + var trim = function(str) { + return str.replace(/^\s+|\s+$/g, ''); + }; + + var lTrim = function(str) { + return str.replace(/^\s+/g, ''); + }; + + var rTrim = function(str) { + return str.replace(/\s+$/g, ''); + }; + + /** Does 'str' contain 'substr'? + * Note: all strings contain the empty string. + */ + var contains = function(str, substr) { + return str.indexOf(substr) != -1; + }; + + var containsIgnoringCase = /* str, substr */ ignoringCase(contains); + + var htmlEncodeDoubleQuotes = function(str) { + return str.replace(/\"/gm, """); + }; + + var equals = function(a, b) { + return a === b; + }; + var equalsIgnoringCase = /* a, b */ ignoringCase(equals); + + var head = function(str) { + if (str === "") throw "head on empty string"; + return str.substr(0, 1); + }; + + var toe = function(str) { + if (str === "") throw "toe on empty string"; + return str.substr(str.length - 1, str.length); + }; + + var tail = function(str) { + if (str === "") throw "tail on empty string"; + return str.substr(1, str.length - 1); + }; + + var torso = function(str) { + if (str === "") throw "torso on empty string"; + return str.substr(0, str.length - 1); + }; + + var capitalize = function(str) { + if (str === "") return str; + return head(str).toUpperCase() + tail(str); + }; + + var repeat = function(str, num) { + Validate.vString('str', str); + Validate.vNat('num', num); + var r = ''; + for (var i = 0; i < num; i++) { + r += str; + } + return r; + }; + + var pad = function(combiner) { + return function(str, c, width) { + Validate.vString('str', str); + Validate.vChar('c', c); + Validate.vNat('width', width); + var l = str.length; + return l >= width ? str : combiner(str, repeat(c, width - l)); + }; + }; + + var padLeft = pad(function(s, padding) { return padding + s; }); + var padRight = pad(function(s, padding) { return s + padding; }); + + return { + supplant: supplant, + startsWith: startsWith, + startsWithIgnoringCase: startsWithIgnoringCase, + endsWith: endsWith, + endsWithIgnoringCase: endsWithIgnoringCase, + first: first, + last: last, + removeLeading: removeLeading, + removeTrailing: removeTrailing, + ensureLeading: ensureLeading, + ensureTrailing: ensureTrailing, + trim: trim, + lTrim: lTrim, + rTrim: rTrim, + contains: contains, + containsIgnoringCase: containsIgnoringCase, + htmlEncodeDoubleQuotes: htmlEncodeDoubleQuotes, + equals: equals, + equalsIgnoringCase: equalsIgnoringCase, + head: head, + repead: repeat, + padLeft: padLeft, + padRight: padRight, + toe: toe, + tail: tail, + torso: torso, + capitalize: capitalize + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.services.UploadCommon', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'ephox.numerosity.api.FormData', + 'ephox.scullion.Struct', + 'ephox.violin.Strings' + ], + + function (Type, Arr, FormData, Struct, Strings) { + var failureObject = Struct.immutable('message', 'status', 'contents'); + + var known = [ 'jpg', 'png', 'gif', 'jpeg' ]; // I welcome more suggestions + + var buildFilename = function (file, identifier) { + if (Type.isString(file.type) && Strings.startsWith(file.type, 'image/')) { + var filetype = file.type.substr('image/'.length); + + // If it's a known extension, use it, otherwise just don't provide an extension + return Arr.contains(known, filetype) ? identifier + '.' + filetype : identifier; + } else { + // things that aren't image/xxx can just have the default filename with no extension + return identifier; + } + }; + + var getFilename = function (file, identifier) { + // file.name is the default, but if it's a blob the default name is 'blob' + // TBIO-3151: On IE11 internet sites the filename ends in '.tmp' and we don't want to upload that. + var useFilename = Type.isString(file.name) && !Strings.endsWith(file.name, '.tmp'); + return useFilename ? file.name : buildFilename(file, identifier); + }; + + var buildExtra = function (fieldName, file, filename) { + var formData = FormData(); + formData.append(fieldName, file, filename); + + return { + data: formData, + // override Jax, which sets this to application/json (triggering pre-flight) + contentType: false, + // stop JQuery processing the data + processData: false + }; + }; + + return { + failureObject: failureObject, + getFilename: getFilename, + buildExtra: buildExtra + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.XMLHttpRequest', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * IE8 and above per + * https://developer.mozilla.org/en/docs/XMLHttpRequest + */ + return function () { + var f = Global.getOrDie('XMLHttpRequest'); + return new f(); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.jax.base.Ajax', + + [ + 'ephox.classify.Type', + 'ephox.compass.Obj', + 'ephox.highway.Merger', + 'ephox.numerosity.api.XMLHttpRequest', + 'ephox.perhaps.Result', + 'ephox.violin.Strings', + 'global!console' + ], + + function (Type, Obj, Merger, XMLHttpRequest, Result, Strings, console) { + var accepts = { + '*': '*/*', + text: 'text/plain', + html: 'text/html', + xml: 'application/xml, text/xml', + json: 'application/json, text/javascript' + }; + + /* + * + * This could be done better, but that would involve an API change. Or move some of it to numerosity. + * Start by replicating JQuery API, and unravel later. + * + */ + + var ajax = function (url, success, error, extra) { + var base = { + url: url, + contentType: 'application/json', + processData: false, + type: 'GET' + }; + + var options = Merger.merge(base, extra); + // This would be nice, but IE doesn't support responseType 'json' - might be an excuse to bring in platform detection + /* + if (Type.isString(options.responseType)) + request.responseType = options.responseType; + */ + + var request = XMLHttpRequest(); + + request.open(options.type.toUpperCase(), options.url, true); // enforced async! enforced type as String! + + if (Type.isString(options.contentType)) { // set to string here, but overridden for form posting by TBIO-1255 + request.setRequestHeader('Content-Type', options.contentType); + } + + // I'm not 100% sure why JQuery does this, but eh why not + var odt = options.dataType; + var a = Type.isString(odt) && odt !== '*' ? + accepts[odt] + ', ' + accepts['*'] + '; q=0.01' : + accepts['*']; + + request.setRequestHeader('Accept', a); + + if (options.xhrFields !== undefined && options.xhrFields.withCredentials === true) { + request.withCredentials = true; // IE10 minimum + } + + // Do this last, so the extra headers can override the above + if (Type.isObject(options.headers)) Obj.each(options.headers, function (v, k) { + if (!Type.isString(k) && !Type.isString(v)) console.error('Request header data was not a string: ', k ,' -> ', v); + else request.setRequestHeader(k, v); + }); + + var onSuccess = function (data, status, jqxhr) { + success(data); + }; + + var onError = function (jqxhr) { + error('Could not load url "' + url + '": ' + jqxhr.status + ' ' + jqxhr.statusText, jqxhr.status, jqxhr.responseText); + }; + + var parseJson = function (jqxhr) { + // If we do this inside the try block, an error in the success callback will be caught + // by the "response was not JSON" catch block. + try { + return Result.value(JSON.parse(jqxhr.response)); + } catch (e) { + return Result.error({ + status: jqxhr.status, + statusText: 'Response was not JSON', + responseText: jqxhr.responseText + }); + } + }; + + var validateData = function (request) { + var data = options.dataType === 'json' ? parseJson(request) : Result.value(request.response); + data.fold(onError, function (xhrData) { + onSuccess(xhrData, request.statusText, request); + }); + }; + + var onLoad = function () { + if (request.status === 0) { + // Local files and Cors errors return status 0. + // The only way we can decifer a local request is request url starts with 'file:' and allow local files to succeed. + if (Strings.startsWith(options.url, 'file:')) validateData(request); + else error('Unknown HTTP error (possible cross-domain request)', request.status, request.responseText); + + } else if ( request.status < 100 || request.status >= 400) { + // Technically only network errors trigger onerror; HTTP errors trigger onload. + // In practice only IE does this. But we need to handle it. + onError(request); + } else { + validateData(request); + } + }; + + request.onerror = onError; + request.onload = onLoad; + // I suspect refactoring this at all will break stuff + if (options.data === undefined) { + request.send(); + } else { + request.send(options.data); + } + }; + + return { + ajax: ajax + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.JSON', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * IE8 and above per + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON + */ + var json = function () { + return Global.getOrDie('JSON'); + }; + + var parse = function (obj) { + return json().parse(obj); + }; + + var stringify = function (obj) { + return json().stringify(obj); + }; + + return { + parse: parse, + stringify: stringify + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.jax.plain.Ajax', + + [ + 'ephox.highway.Merger', + 'ephox.jax.base.Ajax', + 'ephox.numerosity.api.JSON' + ], + + function (Merger, Ajax, JSON) { + var get = function (url, success, error, extra) { + Ajax.ajax(url, success, error, Merger.merge({ + dataType: 'text', + type: 'GET' + }, extra)); + }; + + var post = function (url, data, success, error, extra) { + Ajax.ajax(url, success, error, Merger.merge({ + dataType: 'text', + data: JSON.stringify(data), + type: 'POST' + }, extra)); + }; + + return { + get: get, + post: post + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +// An implementation of the algorithm specified in section 5.3 of RFC 3986. +// See http://tools.ietf.org/html/rfc3986#section-5.3 +define( + 'ephox.yuri.resolve.Recompose', + + [ + ], + + function () { + var recompose = function (transformed) { + var result = ''; + + if (transformed.protocol !== '') { + result += transformed.protocol; + result += ':'; + } + + if (transformed.authority !== '') { + result += '//'; + result += transformed.authority; + } + + result += transformed.path; + + if (transformed.query !== '') { + result += '?'; + result += transformed.query; + } + + if (transformed.anchor !== '') { + result += '#'; + result += transformed.anchor; + } + + return result; + }; + + return { + recompose: recompose + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +// Based on parseUri 1.2.2 +// (c) Steven Levithan <stevenlevithan.com> +// MIT License +// http://blog.stevenlevithan.com/archives/parseuri +// +// Forked by Ephox on 2011-02-07. Source modified. +define( + 'ephox.yuri.api.Parser', + + [ + 'ephox.highway.Merger' + ], + + function (Merger) { + var defaultOptions = { + strictMode: false, + key: [ 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor' ], + q: { + name: 'queryKey', + parser: /(?:^|&)([^&=]*)=?([^&]*)/g + }, + parser: { + strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + } + }; + + var parseUri = function (str, options) { + var o = options, + m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str), + uri = {}, + i = 14; + + while (i--) uri[o.key[i]] = m[i] || ''; + + uri[o.q.name] = {}; + uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { + if ($1) uri[o.q.name][$1] = $2; + }); + + return uri; + }; + + var parse = function (str, options) { + var augmentedOptions = Merger.merge(defaultOptions, options); + return parseUri(str, augmentedOptions); + }; + + return { + parse: parse + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +// An implementation of the algorithm specified in section 5.2.4 of RFC 3986. +// See http://tools.ietf.org/html/rfc3986#section-5.2.4 +define( + 'ephox.yuri.normalize.Dots', + + [ + 'ephox.violin.Strings' + ], + + function (Strings) { + var removeLastSegment = function (path) { + return Strings.removeTrailing(path, lastSegment(path)); + }; + + var firstSegment = function (path) { + return path.match(/(^\/?.*?)(\/|$)/)[1]; + }; + + var lastSegment = function (path) { + return path.substring(path.lastIndexOf('/')); + }; + + var remove = function (path) { + // 1. + var input = path; + var output = ''; + + // 2. + while (input !== '') { + // 2. A + if (Strings.startsWith(input, '../')) { + input = Strings.removeLeading(input, '../'); + } else if (Strings.startsWith(input, './')) { + input = Strings.removeLeading(input, './'); + // 2. B + } else if (Strings.startsWith(input, '/./')) { + input = '/' + Strings.removeLeading(input, '/./'); + } else if (input === '/.') { + input = '/'; + // 2. C + } else if (Strings.startsWith(input, '/../')) { + input = '/' + Strings.removeLeading(input, '/../'); + output = removeLastSegment(output); + } else if (input === '/..') { + input = '/'; + output = removeLastSegment(output); + // 2. D + } else if (input === '.' || input === '..') { + input = ''; + // 2. E + } else { + var first = firstSegment(input); + input = Strings.removeLeading(input, first); + output += first; + } + } + + // 3. + return output; + }; + + return { + remove: remove + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +// An implementation of the algorithm specified in section 5.2.3 of RFC 3986. +// See http://tools.ietf.org/html/rfc3986#section-5.2.3 +define( + 'ephox.yuri.resolve.Merge', + + [ + 'ephox.violin.Strings' + ], + + function (Strings) { + var merge = function (base, rel, baseAuthority) { + if (baseAuthority !== '' && base === '') + return '/' + rel; + + var last = base.substring(base.lastIndexOf('/') + 1); + return Strings.removeTrailing(base, last) + rel; + }; + + return { + merge: merge + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +// An implementation of the algorithm specified in section 5.2.2 of RFC 3986. +// See http://tools.ietf.org/html/rfc3986#section-5.2.2 +define( + 'ephox.yuri.resolve.Transform', + + [ + 'ephox.violin.Strings', + 'ephox.yuri.api.Parser', + 'ephox.yuri.normalize.Dots', + 'ephox.yuri.resolve.Merge' + ], + + function (Strings, Parser, Dots, Merge) { + var transform = function (base, relative) { + var options = { strictMode: true }; + + var b = Parser.parse(base, options); + var rel = Parser.parse(relative, options); + + var ret = {}; + + if (rel.protocol !== '') { + ret.protocol = rel.protocol; + ret.authority = rel.authority; + ret.path = Dots.remove(rel.path); + ret.query = rel.query; + } else { + if (rel.authority !== '') { + ret.authority = rel.authority; + ret.path = Dots.remove(rel.path); + ret.query = rel.query; + } else { + if (rel.path === '') { + ret.path = b.path; + if (rel.query !== '') { + ret.query = rel.query; + } else { + ret.query = b.query; + } + } else { + if (Strings.startsWith(rel.path, '/')) { + ret.path = Dots.remove(rel.path); + } else { + ret.path = Merge.merge(b.path, rel.path, base.authority); + ret.path = Dots.remove(ret.path); + } + ret.query = rel.query; + } + ret.authority = b.authority; + } + ret.protocol = b.protocol; + } + + ret.anchor = rel.anchor; + + return ret; + }; + + return { + transform: transform + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.yuri.api.Resolver', + + [ + 'ephox.yuri.resolve.Recompose', + 'ephox.yuri.resolve.Transform' + ], + + function (Recompose, Transform) { + var resolve = function (base, relative) { + var transformed = Transform.transform(base, relative); + return Recompose.recompose(transformed); + }; + + return { + resolve: resolve + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.services.UploadDirect', + + [ + 'ephox.classify.Type', + 'ephox.highway.Merger', + 'ephox.jax.plain.Ajax', + 'ephox.numerosity.api.JSON', + 'ephox.perhaps.Result', + 'ephox.salmon.services.UploadCommon', + 'ephox.violin.Strings', + 'ephox.yuri.api.Resolver' + ], + + function (Type, Merger, Ajax, JSON, Result, UploadCommon, Strings, Resolver) { + return function (settings) { + + /* + * If a base is not provided by the config, use the directory where the + * POST acceptor lives + */ + var resolveBase = function () { + var fullBase = settings.url; + // The base is the string up to the last slash, unless that slash is at the start of the string. + var lastSlash = fullBase.lastIndexOf('/'); + var base = lastSlash > 0 ? fullBase.substr(0, lastSlash) : fullBase; + + var _responseBase = settings.basePath === undefined ? base : settings.basePath; + return Strings.endsWith(_responseBase, '/') ? _responseBase : _responseBase + '/'; + }; + + // pre-calculate, don't need to do this on every upload + var responseBase = resolveBase(); + + + /* + * ELJ upload handler result location consists of: + * + * - If the response looks like a URL, use that as the filename + * - Otherwise use the source filename + * - take the filename, and resolve it relative to the base provided by the config + */ + var calculateLocation = function (response, filename) { + var splits = response.split(/\s+/); + + // If the response text is a simple string with no whitespace, it's a URL + var serverFilename = (splits.length === 1 && splits[0] !== '') ? splits[0] : filename; + + // Resolve the settings base url to the response + return Resolver.resolve(responseBase, serverFilename); + }; + + // ELJ style direct uploader, form field name 'image' + var upload = function (blobInfo, identifier, callback) { + var file = blobInfo.blob(); + var failure = function (message, status, contents) { + callback(Result.error(UploadCommon.failureObject(message, status, contents))); + }; + + var filename = UploadCommon.getFilename(file, identifier); + + var useCreds = settings.credentials !== true ? {} : { + xhrFields: { + withCredentials: true + } + }; + + var extra = Merger.merge(useCreds, UploadCommon.buildExtra('image', file, filename)); + + var success = function (_response) { + var response; + // This is difficult to refactor; response is either a json parse failure, a json object, or a string. + try { + var json = JSON.parse(_response); + // we have JSON, make sure it's valid + if (!Type.isString(json.location)) { + failure('JSON response did not contain a string location', 500, _response); + return; + } else { + // we now support adding a base URL ELJ style, so we have to unwrap the JSON into a string + response = json.location; + } + } catch (e) { + // not JSON, assume it's an ELJ style url response + response = _response; + } + + var loc = calculateLocation(response, filename); + + callback(Result.value({ + // convert ELJ style response to TBIO expected response + location: loc + })); + }; + + Ajax.post(settings.url, {}, success, failure, extra); + }; + + return { + upload: upload + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!setTimeout", [], function () { return setTimeout; }); +(function (define, require, demand) { +define( + 'ephox.salmon.services.UploadFunction', + + [ + 'ephox.classify.Type', + 'ephox.perhaps.Result', + 'ephox.salmon.services.UploadCommon', + 'ephox.scullion.Struct', + 'global!console', + 'global!setTimeout' + ], + + function (Type, Result, UploadCommon, Struct, console, setTimeout) { + var imageObjectApi = Struct.immutable('id', 'filename', 'blob', 'base64'); + + // Customer handler function + return function (handler) { + + var upload = function (blobInfo, identifier, callback) { + var failure = function (message) { + // SimpleError handles the variety of callback message types, so just pass it straight through + callback(Result.error(message)); + }; + + var success = function (result) { + if (!Type.isString(result)) { + console.error('Image upload result was not a string'); + failure(''); + } else { + callback(Result.value({ + // convert to TBIO expected response + location: result + })); + } + }; + + var filename = UploadCommon.getFilename(blobInfo.blob(), identifier); + + var api = imageObjectApi(identifier, filename, blobInfo.blob(), blobInfo.data().result); + + // wrap the custom handler in a setTimeout so that if it throws an error, that doesn't break the core editor + setTimeout(function () { + handler(api, success, failure); + }, 0); + }; + + return { + upload: upload + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.salmon.api.Uploaders', + + [ + 'ephox.salmon.services.UploadCommon', + 'ephox.salmon.services.UploadDirect', + 'ephox.salmon.services.UploadFunction' + ], + + function (UploadCommon, UploadDirect, UploadFunction) { + var direct = function (settings) { + return UploadDirect(settings); + }; + + var custom = function (handler) { + return UploadFunction(handler); + }; + + var failureObject = function (message, status, contents) { + return UploadCommon.failureObject(message, status, contents); + }; + + var getFilename = function (file, identifier) { + return UploadCommon.getFilename(file, identifier); + }; + + var buildExtra = function (fieldName, file, filename) { + return UploadCommon.buildExtra(fieldName, file, filename); + }; + + return { + direct: direct, + custom: custom, + failureObject: failureObject, + getFilename: getFilename, + buildExtra: buildExtra + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.imageupload.EphoxUploader', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.powerpaste.imageupload.TinyUploader', + 'ephox.powerpaste.imageupload.UploadError', + 'ephox.powerpaste.tinymce.UndoRewriter', + 'ephox.salmon.api.BlobCache', + 'ephox.salmon.api.ImageTracker', + 'ephox.salmon.api.UploadUtils', + 'ephox.salmon.api.Uploaders', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element' + ], + + function (Arr, Fun, Option, TinyUploader, UploadError, UndoRewriter, BlobCache, ImageTracker, UploadUtils, Uploaders, Attr, Element) { + var enabled = function (editor, settings) { + // Use polish dependencies. + var blobCache = BlobCache(); + var imageTracker = ImageTracker(); + var errorHandler = UploadError(); + var errors = UploadError(editor, settings.url); + + // UploadDirect will need an error handler that is tiny specific. + var uploadManager = Uploaders.direct(settings); + + var getBody = function () { + return Element.fromDom(editor.getBody()); + }; + + var updateImage = function (result, images, b) { + Arr.each(images, function (img) { + Attr.set(img, 'data-mce-src', result.location); + }); + + // undo hack. + UndoRewriter.resrcHistory(editor, b, result); + }; + + imageTracker.events.complete.bind(function (event) { + //Other undo hack. + UndoRewriter.unwrapHistory(editor); + }); + + var uploadImage = function(id, blob, showError) { + UploadUtils.handleUpload(uploadManager, imageTracker, blobCache, getBody(), id, blob, function (upResult) { + upResult.fold(function (err) { + // show error dialog + showError(err); + }, updateImage); + }); + }; + + var prepareForUpload = function (info, showError) { + UploadUtils.prepareForUpload(imageTracker, info.blobInfo().id(), info.image()).each(function (id) { + uploadImage(id, info.blobInfo(), showError); + }); + }; + + var uploadAssets = function (assets) { + var showError = errors.instance(); + var candidates = UploadUtils.registerAssets(blobCache, getBody(), assets); + Arr.each(candidates, function (candidate) { + candidate.fold(function (err) { + // a blob we do not know about. + console.error(err); + }, function(info) { + prepareForUpload(info, showError); + }); + }); + }; + + // Need to fill this in. + var reconstitute = function () { + var showError = errors.instance(); + var imageBlobs = UploadUtils.findBlobs(imageTracker, blobCache, getBody()); + Arr.each(imageBlobs, function (imageBlob) { + imageBlob.fold(function (id) { + // Report the failure. + imageTracker.report(id, Option.none(), false); + }, function(info) { + prepareForUpload(info, showError); + }); + }); + }; + + var uploadImages = function (assets) { + reconstitute(); + + uploadAssets(assets); + }; + + var getLocalURL = function (id, blob, objurl, data) { + return objurl; + }; + + return { + uploadImages: uploadImages, + prepareImages: Fun.noop, //Images are already in Ephox uploader's required format (blobs) + getLocalURL: getLocalURL + }; + }; + + + var disabled = function(editor) { + + var tinyUploader = TinyUploader(editor); + + return { + uploadImages: Fun.noop, + prepareImages: tinyUploader.prepareImages, //Convert images back to base64 so they aren't unusable + getLocalURL: tinyUploader.getLocalURL //As above + }; + }; + + return function (editor, settings) { + return settings ? enabled(editor, settings) : disabled(editor); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.imageupload.UploaderFactory', + + [ + 'ephox.powerpaste.imageupload.EphoxUploader', + 'ephox.powerpaste.imageupload.TinyUploader' + ], + function (EphoxUploader, TinyUploader) { + return function (editor) { + //We'll only need to use ephox's uploader if Tiny's 4.0-4.1 and we have an images_upload_url setting + var ephoxUploadSettings = !editor.uploadImages && editor.settings.images_upload_url ? + { + url: editor.settings.images_upload_url, + basePath: editor.settings.images_upload_base_path, + credentials: editor.settings.images_upload_credentials + } : null; + return !editor.uploadImages ? EphoxUploader(editor, ephoxUploadSettings) : TinyUploader(editor); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.tinymce.Util', + + [ + ], + + function () { + var bind = function(func, t) { + return function() { + return func.apply(t, arguments); + }; + }; + + // Useful utilities that may exist in libraries but aren't as common. + // Currently we're providing our own implementation for these but want to track them. + var ephoxGetComputedStyle = function(node) { + if (node.ownerDocument.defaultView) { + return node.ownerDocument.defaultView.getComputedStyle(node, null); + } + return node.currentStyle || {}; + }; + + var log = function(msg) { + if (typeof(console) !== 'undefined' && console.log) { + console.log(msg); + } + }; + + var compose = function(funs) { + var args = Array.prototype.slice.call(funs).reverse(); + return function(input) { + var r = input; + for (var i = 0; i < args.length; i++) { + var fun = args[i]; + r = fun(r); + } + return r; + }; + }; + + var extend = function(obj) { + tinymce.each(Array.prototype.slice.call(arguments, 1), function(element){ + for (var prop in element) { + obj[prop] = element[prop]; + } + }); + return obj; + }; + + return { + each: tinymce.each, + trim: tinymce.trim, + bind: bind, + extend: extend, + ephoxGetComputedStyle: ephoxGetComputedStyle, + log: log, + compose: compose + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +/** + * Source code in this file has been taken under a commercial license from tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js + * Copyright 2009, Moxiecode Systems AB + */ +define( + 'ephox.powerpaste.legacy.tinymce.Clipboard', + + [ + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Util) { + var each = tinymce.each; + // Note that there is only ever one instance of this module - it's not created specifically for each editor. + + // Private function that does the actual work of grabbing the clipboard content. + // This can then be shared between the onpaste and onKeyDown listeners. + var grabContent = function(ed, callback, e) { + var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY; + + // Check if browser supports direct plaintext access + if (e.clipboardData && e.clipboardData.getData('text/html')) { + e.preventDefault(); + var data = e.clipboardData.getData('text/html'); + var matched = data.match(/<html[\s\S]+<\/html>/i); + // some browsers such as firefox don't wrap the content in a html tag + var content = matched === null ? data : matched[0]; + return callback(content); + } + + if (dom.get('_mcePaste')) + return; + + // Create container to paste into + n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste'}, '\uFEFF<br _mce_bogus="1">'); + + // If contentEditable mode we need to find out the position of the closest element + if (body != ed.getDoc().body) + posY = dom.getPos(ed.selection.getStart(), body).y; + else + posY = body.scrollTop; + + // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles + dom.setStyles(n, { + position : 'absolute', + left : -10000, + top : posY, + width : 1, + height : 1, + overflow : 'hidden' + }); + + if (tinymce.isIE) { + // Select the container + rng = dom.doc.body.createTextRange(); + rng.moveToElementText(n); + rng.execCommand('Paste'); + + // Remove container + dom.remove(n); + + // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due + // to IE security settings so we pass the junk though better than nothing right + if (n.innerHTML === '\uFEFF') { + ed.execCommand('mcePasteWord'); + e.preventDefault(); + return; + } + + // Process contents + callback(n.innerHTML); + + // Block the real paste event + return tinymce.dom.Event.cancel(e); + } else { + var block = function(e) { + e.preventDefault(); + }; + + // Block mousedown and click to prevent selection change + dom.bind(ed.getDoc(), 'mousedown', block); + dom.bind(ed.getDoc(), 'keydown', block); + + // If pasting inside the same element and the contents is only one block + // remove the block and keep the text since Firefox will copy parts of pre and h1-h6 as a pre element + if (tinymce.isGecko) { + rng = ed.selection.getRng(true); + if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) { + nodes = dom.select('p,h1,h2,h3,h4,h5,h6,pre', n); + + if (nodes.length == 1) + dom.remove(nodes.reverse(), true); + } + } + + or = ed.selection.getRng(); + + // Move caret into hidden div + n = n.firstChild; + rng = ed.getDoc().createRange(); + rng.setStart(n, 0); + rng.setEnd(n, 1); + sel.setRng(rng); + + // Wait a while and grab the pasted contents + window.setTimeout(function() { + var h = '', nl = dom.select('div.mcePaste'); + + // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string + Util.each(nl, function(n) { + var child = n.firstChild; + + // WebKit inserts a DIV container with lots of odd styles + if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) { + dom.remove(child, 1); + } + + // WebKit duplicates the divs so we need to remove them + Util.each(dom.select('div.mcePaste', n), function(n) { + dom.remove(n, 1); + }); + + // Remove apply style spans + Util.each(dom.select('span.Apple-style-span', n), function(n) { + dom.remove(n, 1); + }); + + // Remove bogus br elements + Util.each(dom.select('br[_mce_bogus]', n), function(n) { + dom.remove(n); + }); + + h += n.innerHTML; + }); + + // Remove the nodes + Util.each(nl, function(n) { + dom.remove(n); + }); + + // Restore the old selection + if (or) + sel.setRng(or); + + callback(h); + + // Unblock events ones we got the contents + dom.unbind(ed.getDoc(), 'mousedown', block); + dom.unbind(ed.getDoc(), 'keydown', block); + }, 0); + } + }; + + /** Creates the function to attach to the onpaste event so that the pasted content can be intercepted. + * + * The returned function should capture the pasted content and pass it as the argument to the provided callback function. + * + * @param ed the editor this function is for. + * @param callback the function to call with the clipboard content as the argument + */ + var getOnPasteFunction = function(ed, callback) { + return function(e) { + grabContent(ed, callback, e); + }; + }; + + /** Creates the function to attach to the onKeyDown event so that the pasted content can be intercepted. If no onKeyDown function is required in the current browser + * this should return null. + * + * The returned function should capture the pasted content and pass it as the argument to the provided callback function. + * + * @param ed the editor this function is for. + * @param callback the function to call with the clipboard content as the argument + */ + var getOnKeyDownFunction = function(ed, callback) { + return function(e) { + // Is it's Opera or older FF use key handler + if (tinymce.isOpera || navigator.userAgent.indexOf('Firefox/2') > 0) { + if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) + grabContent(ed, callback, e); + } + }; + }; + + return { + getOnPasteFunction: getOnPasteFunction, + getOnKeyDownFunction: getOnKeyDownFunction + }; + }); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.Insert', + + [ + + ], + + function () { + var insert = function(fragment, editor) { + var document = editor.getDoc(), marker, markerId = "ephoxInsertMarker", selection = editor.selection, dom = editor.dom; + selection.setContent('<span id="' + markerId + '"> </span>'); + marker = dom.get(markerId); + var leadingText = document.createDocumentFragment(); + while (fragment.firstChild && !dom.isBlock(fragment.firstChild)) { + leadingText.appendChild(fragment.firstChild); + } + var trailingText = document.createDocumentFragment(); + while (fragment.lastChild && !dom.isBlock(fragment.lastChild)) { + trailingText.appendChild(fragment.lastChild); + } + + marker.parentNode.insertBefore(leadingText, marker); + dom.insertAfter(trailingText, marker); + + if (fragment.firstChild) { + if (dom.isBlock(fragment.firstChild)) { + while (!dom.isBlock(marker.parentNode) && marker.parentNode !== dom.getRoot()) { + marker = dom.split(marker.parentNode, marker); + } + if (!dom.is(marker.parentNode, 'td,th') && marker.parentNode !== dom.getRoot()) { + marker = dom.split(marker.parentNode, marker); + } + } + + dom.replace(fragment, marker); + } else { + dom.remove(marker); + } + }; + + return { + insert: insert + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.tinymce.Settings', + + [ + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Util) { + var settings_clean = { + strip_class_attributes: 'all', + retain_style_properties: 'none' + }; + + var settings_inline = { + strip_class_attributes: 'none', + retain_style_properties: 'valid' + }; + + var getImportSettings = function(pasteType, defaultSettings) { + if (pasteType && typeof(pasteType) != 'string') { + return pasteType; + } + + switch (pasteType) { + case 'clean': return settings_clean; + case 'merge': return settings_inline; + default: return defaultSettings; + } + }; + + var getSettingsFor = function(pasteWordAs, pasteHtmlAs, base64Images) { + var s = getImportSettings(pasteWordAs, pasteHtmlAs); + s = Util.extend(s, {base_64_images: base64Images}); + return s; + }; + + var create = function(pasteWordAs, pasteHtmlAs, base64Images) { + var wordSettings = getSettingsFor(pasteWordAs, settings_clean, base64Images); + var htmlSettings = getSettingsFor(pasteHtmlAs, settings_inline, base64Images); + + var activeSettings = htmlSettings; + + var setWordContent = function(wordContent) { + activeSettings = wordContent ? wordSettings : htmlSettings; + }; + + var get = function(name) { + return activeSettings[name]; + }; + return { + setWordContent: setWordContent, + get: get + }; + }; + + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.tokens.Attributes', + + [ + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Util) { + var isAttrSpecified = function(attr) { + return attr.specified !== false || (attr.nodeName === 'name' && attr.value !== ''); + }; + + var combineFilters = function(filter1, filter2) { + if (!filter1 || !filter2) { + return filter1 || filter2; + } + return function(name, value) { + return filter2(name, filter1(name, value)); + }; + }; + + var manager = function(node) { + var attributeCount = 0; + var attributes; + var getCachedAttributes = function() { + return attributes; + }; + + var getAttributeMutableFunction; + var getAttributes = function() { + return getAttributeMutableFunction(); + }; + + getAttributeMutableFunction = function() { + attributes = {}; + attributeCount = 0; + // Load from native. + Util.each(node.attributes, function(attr) { + var name = attr.nodeName, value = attr.value; + if (isAttrSpecified(attr)) { + if (value !== null && value !== undefined) { + attributes[name] = value; + attributeCount++; + } + } + }); + if (attributes.style === undefined && node.style.cssText) { + attributes.style = node.style.cssText; + attributeCount++; + } + getAttributeMutableFunction = getCachedAttributes; + return attributes; + }; + + var getAttributeCount = function() { + getAttributeMutableFunction(); + return attributeCount; + }; + + var unappliedFilter; + var unfilteredGetAttributes; + + var filter = function(f) { + if (!unappliedFilter) { + unfilteredGetAttributes = getAttributeMutableFunction; + } + + unappliedFilter = combineFilters(unappliedFilter, f); + // Defer applying the filter until we absolutely have to. + getAttributeMutableFunction = function() { + getAttributeMutableFunction = unfilteredGetAttributes; + eachAttribute(function(name, value) { + var newValue = unappliedFilter(name, value); + if (newValue === null) { + node.removeAttribute(name); + delete attributes[name]; + attributeCount--; + } else if (newValue !== value) { + if (name === 'class') { + node.className = newValue; + } else { + node.setAttribute(name, newValue); + } + attributes[name] = newValue; + } + }); + getAttributeMutableFunction = getCachedAttributes; + return attributes; + }; + }; + + var get = function(name) { + return getAttributeMutableFunction()[name]; + }; + + var eachAttribute = function(callback) { + Util.each(getAttributeMutableFunction(), function(value, name) { + callback(name, value); + }); + }; + + return { + get: get, + each: eachAttribute, + filter: filter, + getAttributes: getAttributes, + getAttributeCount: getAttributeCount + }; + }; + return { + manager: manager + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.tokens.Token', + + [ + 'ephox.powerpaste.legacy.data.tokens.Attributes', + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Attributes, Util, TokenTypes) { + var START_ELEMENT_TYPE = 'startElement'; + var END_ELEMENT_TYPE = 'endElement'; + var TEXT_TYPE = 'text'; + var COMMENT_TYPE = 'comment'; + + var attributeManager = Attributes.manager; + + /** + * Converts a style name from the CSS version (e.g. text-align) to the + * DOM property equivalent (textAlign). + * + * @param name the style name to convert. + * @returns the style name in DOM form. + */ + var convertStyleName = function(name) { + return name.replace(/-(.)/g, function(regex, capture) { + return capture.toUpperCase(); + }); + }; + + /** + * Converts a style name from the DOM version (e.g. textAlign) to the + * CSS equivalent (text-align). This is the reverse of convertStyleName. + * + * @param name the style name to convert. + * @returns the style name in CSS form. + */ + var convertStyleNameBack = function(name) { + return name.replace(/([A-Z])/g, function(regex, capture) { + return '-' + capture.toLowerCase(); + }); + }; + + // This is shared across all instances because if we ever see an mso- style in the normal iteration + // we can be certain they are included and don't need the extra check. + var seenMsoStyle = false; + var eachNativeStyle = function(node, syntheticStyles, callback) { + var i, len = node.style.length, name, value, styles; + styles = syntheticStyles || node.getAttribute("style"); + if (styles === undefined || styles === null || !styles.split) { + styles = node.style.cssText; + } + Util.each(styles.split(';'), function(declaration) { + var idx = declaration.indexOf(':'); + if (idx > 0) { + name = Util.trim(declaration.substring(0, idx)); + if (name.toUpperCase() === name) { + name = name.toLowerCase(); + } + name = convertStyleNameBack(name); + value = Util.trim(declaration.substring(idx + 1)); + if (!seenMsoStyle) seenMsoStyle = name.indexOf('mso-') === 0; + callback(name, value); + } + }); + if (!seenMsoStyle) { + // IE9 preserves unknown styles but provides no way to iterate them. + // To deal with that, we look for the specific custom styles we care about. + value = node.style['mso-list']; + if (value) { + callback('mso-list', value); + } + } + }; + + var token = function(node, endNode, syntheticStyles) { + var tokenType; + var tagName; + var tokenText; + var attributeStore; + var tokenStyles; + switch (node.nodeType) { + case 1: + if (endNode) { + tokenType = END_ELEMENT_TYPE; + } else { + tokenType = START_ELEMENT_TYPE; + attributeStore = attributeManager(node); + + tokenStyles = {}; + eachNativeStyle(node, syntheticStyles, function(name, value) { + tokenStyles[name] = value; + }); + } + if (node.scopeName !== "HTML" && node.scopeName && node.tagName && node.tagName.indexOf(':') <= 0) { + tagName = (node.scopeName + ":" + node.tagName).toUpperCase(); + } else { + tagName = node.tagName; + } + + break; + case 3: + tokenType = TEXT_TYPE; + tokenText = node.nodeValue; + break; + case 8: + tokenType = COMMENT_TYPE; + tokenText = node.nodeValue; + break; + default: + Util.log("WARNING: Unsupported node type encountered: " + node.nodeType); + break; + } + + var getNode = function() { + // Make sure all filters are applied. + if (attributeStore) attributeStore.getAttributes(); + return node; + }; + + var tag = function() { + return tagName; + }; + + var type = function() { + return tokenType; + }; + + var text = function() { + return tokenText; + }; + + var toString = function() { + return "Type: " + tokenType + ", Tag: " + tagName + " Text: " + tokenText; + }; + + var getAttribute = function(name) { + return attributeStore.get(name.toLowerCase()); + }; + + var filterAttributes = function(filter) { + if (tokenType === START_ELEMENT_TYPE) { + attributeStore.filter(filter); + } + }; + + var filterStyles = function(filter) { + if (type() === START_ELEMENT_TYPE) { + var css = ""; + Util.each(tokenStyles, function(value, name) { + var newValue = filter(name, value); + if (newValue === null) { + if (node.style.removeProperty) { + node.style.removeProperty(convertStyleName(name)); + } else { + node.style.removeAttribute(convertStyleName(name)); + } + delete tokenStyles[name]; + } else { + css += name + ': ' + newValue + '; '; + tokenStyles[name] = newValue; + } + }); + css = css ? css : null; + filterAttributes(function(name, value) { + if (name === 'style') { + return css; + } + return value; + }); + node.style.cssText = css; + } + }; + + var getAttributeCount = function() { + return attributeStore.getAttributeCount(); + }; + + var attributes = function(callback) { + attributeStore.each(callback); + }; + + var getStyle = function(name) { + return tokenStyles[name]; + }; + + var styles = function(callback) { + Util.each(tokenStyles, function(value, name) { + callback(name, value); + }); + }; + + var getComputedStyle = function() { + return Util.ephoxGetComputedStyle(node); + }; + + var isWhitespace = function() { + return tokenType === TEXT_TYPE && /^[\s\u00A0]*$/.test(tokenText); + }; + + return { + getNode: getNode, + tag: tag, + type: type, + text: text, + toString: toString, + getAttribute: getAttribute, + filterAttributes: filterAttributes, + filterStyles: filterStyles, + getAttributeCount: getAttributeCount, + attributes: attributes, + getStyle: getStyle, + styles: styles, + getComputedStyle: getComputedStyle, + isWhitespace: isWhitespace + }; + }; + + var createStartElement = function(tag, attributes, styles, document) { + var node = document.createElement(tag), css = ""; + Util.each(attributes, function(value, name) { + node.setAttribute(name, value); + }); + Util.each(styles, function(value, name) { + css += name + ":" + value + ";"; + node.style[convertStyleName(name)] = value; + }); + return token(node, false, css !== "" ? css : null); + }; + + var createEndElement = function(tag, document) { + return token(document.createElement(tag), true); + }; + + var createComment = function(text, document) { + return token(document.createComment(text), false); + }; + + var createText = function(text, document) { + return token(document.createTextNode(text)); + }; + + var FINISHED = createEndElement('HTML', window.document); + + return { + START_ELEMENT_TYPE: START_ELEMENT_TYPE, + END_ELEMENT_TYPE: END_ELEMENT_TYPE, + TEXT_TYPE: TEXT_TYPE, + COMMENT_TYPE: COMMENT_TYPE, + FINISHED: FINISHED, + token: token, + createStartElement: createStartElement, + createEndElement: createEndElement, + createComment: createComment, + createText: createText + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.tokens.Serializer', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Token) { + var create = function(document) { + var currentNode = document.createDocumentFragment(); + var initialNode = currentNode; + + var push = function(node) { + append(node); + currentNode = node; + }; + + var pop = function() { + currentNode = currentNode.parentNode; + }; + + var append = function(node) { + currentNode.appendChild(node); + }; + + var receive = function(token) { + + var startElement = function(token) { + var node = token.getNode().cloneNode(false); + push(node); + }; + + var text = function(token, serializer) { + // IE7 will crash if you clone a text node that's a URL. + // IE8 throws an invalid argument error. + // So while cloning may be faster, we have to create a new node here. + var node = document.createTextNode(token.text()); + append(node); + }; + + switch (token.type()) { + case Token.START_ELEMENT_TYPE: + startElement(token); + break; + case Token.TEXT_TYPE: + text(token); + break; + case Token.END_ELEMENT_TYPE: + pop(); + break; + case Token.COMMENT_TYPE: + // Ignore. + break; + default: + throw { message: 'Unsupported token type: ' + token.type() }; + } + }; + + return { + dom: initialNode, + receive: receive + }; + }; + + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.tokens.Tokenizer', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Token) { + var tokenize = function(html, document) { + var container; + document = document || window.document; + container = document.createElement('div'); + document.body.appendChild(container); + container.style.position = 'absolute'; + container.style.left = '-10000px'; + container.innerHTML = html; + + nextNode = container.firstChild || Token.FINISHED; + + var nodeStack = []; + endNode = false; + + var getTokenForNode = function(node, endTag) { + if (node === Token.FINISHED) { + return node; + } else if (node) { + return Token.token(node, endTag); + } else { + return undefined; + } + }; + + var next = function() { + var currentNode = nextNode; + var currentEndNode = endNode; + if (!endNode && nextNode.firstChild) { + nodeStack.push(nextNode); + nextNode = nextNode.firstChild; + } else if (!endNode && nextNode.nodeType === 1) { + // Empty element. + endNode = true; + } else if (nextNode.nextSibling) { + nextNode = nextNode.nextSibling; + endNode = false; + } else { + nextNode = nodeStack.pop(); + endNode = true; + } + + if (currentNode !== Token.FINISHED && !nextNode) { + document.body.removeChild(container); + nextNode = Token.FINISHED; + } + + return getTokenForNode(currentNode, currentEndNode); + }; + + var hasNext = function() { + return nextNode !== undefined; + }; + + return { + hasNext: hasNext, + next: next + }; + }; + + return { + tokenize: tokenize + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.tokens.Filter', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token', + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Token, Util) { + + var createFilter = function(actualReceiver, clientReset) { + var filter = function(nextFilter, settings, document) { + var deferred; + var receivedTokens, emittedTokens, inTransaction = false; + + var resetState = function() { + if (clientReset) clientReset(api); + inTransaction = false; + receivedTokens = []; + emittedTokens = []; + }; + + var emitTokens = function(tokens) { + Util.each(tokens, function(tok) { + nextFilter.receive(tok); + }); + }; + + var emit = function(token) { + if (inTransaction) { + emittedTokens.push(token); + } else { + nextFilter.receive(token); + } + }; + + var receive = function(token) { + if (clientReset) receivedTokens.push(token); + actualReceiver(api, token); + if (token === Token.FINISHED) { + commit(); + } + }; + + var startTransaction = function() { + inTransaction = true; + }; + + var rollback = function() { + emitTokens(receivedTokens); + resetState(); + }; + + var commit = function() { + emitDeferred(); + emitTokens(emittedTokens); + resetState(); + }; + + var defer = function(token) { + deferred = deferred || []; + deferred.push(token); + }; + + var hasDeferred = function() { + return deferred && deferred.length > 0; + }; + + var emitDeferred = function() { + Util.each(deferred, function(token) { + emit(token); + }); + dropDeferred(); + }; + + var dropDeferred = function() { + deferred = []; + }; + + var api = { + document: document || window.document, + settings: settings || {}, + emit: emit, + receive: receive, + startTransaction: startTransaction, + rollback: rollback, + commit: commit, + defer: defer, + hasDeferred: hasDeferred, + emitDeferred: emitDeferred, + dropDeferred: dropDeferred + }; + + resetState(); + return api; + }; + return filter; + }; + + var createAttributeFilter = function(filter) { + return createFilter(function(api, token) { + token.filterAttributes(Util.bind(filter, api)); + api.emit(token); + }); + }; + + return { + createFilter: createFilter, + createAttributeFilter: createAttributeFilter + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.Text', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Filter, Token) { + var lineBreakElements = /^(P|H[1-6]|T[DH]|LI|DIV|BLOCKQUOTE|PRE|ADDRESS|FIELDSET|DD|DT|CENTER)$/; + var causesLinebreak = function(token) { + return lineBreakElements.test(token.tag()); + }; + var removeFilter = function() { + return null; + }; + + var inP = false; + + return Filter.createFilter(function(api, token) { + var ensureInP = function() { + if (!inP) { + api.emit(Token.createStartElement('P', {}, {}, api.document)); + inP = true; + } + }; + switch (token.type()) { + case Token.TEXT_TYPE: + ensureInP(); + api.emit(token); + break; + case Token.END_ELEMENT_TYPE: + if (inP && (causesLinebreak(token) || token === Token.FINISHED)) { + api.emit(Token.createEndElement('P', api.document)); + inP = false; + } else if (token.tag() === 'BR') { + api.emit(token); + } + break; + case Token.START_ELEMENT_TYPE: + if (token.tag() === 'BR') { + token.filterAttributes(removeFilter); + token.filterStyles(removeFilter); + api.emit(token); + } else if (token.tag() === 'IMG' && token.getAttribute('alt')) { + ensureInP(); + api.emit(Token.createText(token.getAttribute('alt'), api.document)); + } + break; + } + if (token === Token.FINISHED) { + api.emit(token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.data.tokens.Helper', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Token) { + var checkSupportsCustomStyles = function() { + // Firefox 4 preserves these styles in the DOM, but strips them when pasting. + // Since we can't trigger a paste there's no way to detect this situation apart from sniffing. + if (navigator.userAgent.indexOf('Gecko') > 0 && navigator.userAgent.indexOf('WebKit') < 0) return false; + var div = document.createElement('div'); + try { + div.innerHTML = '<p style="mso-list: Ignore;"> </p>'; + } catch (ex) { + // Can't set innerHTML if we're in XHTML mode so just assume we don't get custom styles. + return false; + } + return Token.token(div.firstChild).getStyle('mso-list') === 'Ignore'; + }; + + var supportsCustomStyles = checkSupportsCustomStyles(); + + var spanOrA = function(token) { + return token.tag() === 'A' || token.tag() === 'SPAN'; + }; + + var hasMsoListStyle = function(token) { + var style = token.getStyle('mso-list'); + return style && style !== 'skip'; + }; + + var hasNoAttributes = function(token, allowStyle) { + if (token.type() === Token.START_ELEMENT_TYPE) { + return token.getAttributeCount() === 0 || + (allowStyle && token.getAttributeCount() === 1 && + (token.getAttribute('style') !== null && token.getAttribute('style') !== undefined)); + } else { + return token.type() === Token.END_ELEMENT_TYPE; + } + }; + + return { + hasNoAttributes: hasNoAttributes, + supportsCustomStyles: supportsCustomStyles, + spanOrA: spanOrA, + hasMsoListStyle: hasMsoListStyle + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.list.ListTypes', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token', + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Token, Util) { + var orderedListTypes = [ + { regex: /^\(?[dc][\.\)]$/, type: { tag: 'OL', type: 'lower-alpha' } }, + { regex: /^\(?[DC][\.\)]$/, type: { tag: 'OL', type: 'upper-alpha' } }, + { regex: /^\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\.\)]$/, type: { tag: 'OL', type: 'upper-roman' } }, + { regex: /^\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\.\)]$/, type: { tag: 'OL', type: 'lower-roman' } }, + { regex: /^\(?[0-9]+[\.\)]$/, type: { tag: 'OL' } }, + { regex: /^([0-9]+\.)*[0-9]+\.?$/, type: { tag: 'OL', variant: 'outline' } }, + { regex: /^\(?[a-z]+[\.\)]$/, type: { tag: 'OL', type: 'lower-alpha' } }, + { regex: /^\(?[A-Z]+[\.\)]$/, type: { tag: 'OL', type: 'upper-alpha' } } + ]; + + var ulChars = { + '\u2022': { tag: 'UL', type: 'disc' }, + '\u00B7': { tag: 'UL', type: 'disc' }, + '\u00A7': { tag: 'UL', type: 'square' } + }; + + var ulNonSymbolChars = { + 'o': { tag: 'UL', type: 'circle' }, + '-': { tag: 'UL', type: 'disc' }, + '\u25CF': { tag: 'UL', type: 'disc' } + }; + + var createVariant = function(type, variant) { + var newType = { tag: type.tag, type: type.type, variant: variant }; + if (type.start){ + newType.start = type.start; + } + if (!type.type) delete newType.type; + return newType; + }; + + var guessListType = function(bulletInfo, preferredType, originalToken) { + var listType = null, text, symbolFont, variant; + if (bulletInfo) { + text = bulletInfo.text; + symbolFont = bulletInfo.symbolFont; + } + text = Util.trim(text); + + listType = ulNonSymbolChars[text]; + if (!listType) { + if (symbolFont) { + listType = ulChars[text]; + if (!listType) { + listType = { tag: 'UL', variant: text }; + } else { + listType = createVariant(listType, text); + } + } else { + + Util.each(orderedListTypes, function(def) { + if (def.regex.test(text)) { + if (preferredType && eqListType(def.type, preferredType, true)) { + listType = def.type; + listType.start=parseInt(text); + return false; + } + if (!listType) listType = def.type; + listType.start=parseInt(text); + } + }); + if (listType && !listType.variant) { + if (text.charAt(0) === '(') variant = '()'; + else if (text.charAt(text.length - 1) === ')') variant = ')'; + else variant = '.'; + listType = createVariant(listType, variant); + } + } + } else { + listType = createVariant(listType, text); + } + + if (listType && listType.tag === 'OL' && + originalToken && (originalToken.tag() !== 'P' || /^MsoHeading/.test(originalToken.getAttribute('class')))) { + // Don't convert numbered headings but do convert bulleted headings. + listType = null; + } + + return listType; + }; + + var eqListType = function(t1, t2, ignoreVariant) { + return t1 === t2 || + (t1 && t2 && t1.tag === t2.tag && t1.type === t2.type && + (ignoreVariant || t1.variant === t2.variant)); + }; + + var checkFont = function(token, symbolFont) { + if (token.type() == Token.START_ELEMENT_TYPE) { + font = token.getStyle('font-family'); + if (font) { + symbolFont = (font === 'Wingdings' || font === 'Symbol'); + } else if (/^(P|H[1-6]|DIV)$/.test(token.tag())) { + symbolFont = false; + } + } + return symbolFont; + }; + + return { + guessListType: guessListType, + eqListType: eqListType, + checkFont: checkFont + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.list.CommentHeuristics', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token', + 'ephox.powerpaste.legacy.filters.list.ListTypes', + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Token, ListTypes, Util) { + var isListWithoutCommentsOrStyles = function(token, state) { + var indent, cls, node, symbolFont = false, value, listType; + var checkFont = function(n) { + var font = n.style.fontFamily; + if (font) { + symbolFont = (font === 'Wingdings' || font === 'Symbol'); + } + }; + if (token.type() === Token.START_ELEMENT_TYPE && state.openedTag && token.tag() === 'SPAN') { + node = state.openedTag.getNode(); + checkFont(node); + if (node.childNodes.length > 1 && node.firstChild.tagName === 'A' && node.firstChild.textContent === '') { + node = node.childNodes[1]; + } + while (node.firstChild && (node.firstChild.tagName === 'SPAN' || node.firstChild.tagName === 'A')) { + node = node.firstChild; + checkFont(node); + } + node = node.firstChild; + if (node && node.nodeType === 3) { + value = node.value; + if (!Util.trim(value)) { + // This handles the case where there's a SPAN with nbsps before the bullet such as with roman numerals. + node = node.parentNode.nextSibling; + value = node ? node.value : ''; + } + // Real lists have the bullet with NBSPs either side surrounded in a SPAN. If there's anything else, it's not a list. + if (!node || Util.trim(node.parentNode.textContent) != value) { + return false; + } + listType = ListTypes.guessListType({ text: value, symbolFont: symbolFont }, null, state.originalToken); + if (listType) { + // Don't convert numbered headings to lists. + return node.nextSibling && node.nextSibling.tagName === 'SPAN' && /^[\u00A0\s]/.test(node.nextSibling.firstChild.value) && + (state.openedTag.tag() === 'P' || listType.tag === 'UL'); + } + } else { + return node && node.tagName === 'IMG'; + } + } + return false; + }; + + + var getLeftOffset = function(node, paragraph) { + var parent, child, offset = 0; + parent = node.parentNode; + while (parent !== null && parent !== undefined && parent !== paragraph.parentNode) { + offset += parent.offsetLeft; + parent = parent.offsetParent; + } + return offset; + }; + + /** A simplified memoize function which only supports one or two function parameters. + * + * @param fn + * @param param the funtion p + * @returns + */ + var memoize2 = function(fn) { + var cache = {}; + return function(param1, param2) { + var result, key = param1 + "," + param2; + if (cache.hasOwnProperty(key)) { + return cache[key]; + } + result = fn.call(null, param1, param2); + cache[key] = result; + return result; + }; + }; + + var findStylesInner = function(selector) { + var dotIndex = selector.indexOf('.'); + if (dotIndex >= 0 && Util.trim(selector.substring(dotIndex + 1)) === className) { + match = results[2]; + return false; + } + }; + + var findStyles = memoize2(function(css, className) { + var results, matcher = /([^{]+){([^}]+)}/g, match, el, computedStyle; + matcher.lastIndex = 0; // Firefox Mac reuses the same regex so we need to reset it. + while ((results = matcher.exec(css)) !== null && !match) { + Util.each(results[1].split(','), findStylesInner(selector) + ); + } + if (match) { + el = document.createElement('p'); + el.setAttribute("style", match); + computedStyle = Util.ephoxGetComputedStyle(el); + return computedStyle ? "" + computedStyle.marginLeft : false; + } + return false; + }); + + var indentGuesser = function() { + var listIndentAdjust; + var listIndentAmount; + var guessIndentLevel = function(currentToken, token, styles, bulletInfo) { + var indentAmount, itemIndent, el, level = 1; + + if (bulletInfo && /^([0-9]+\.)+[0-9]+\.?$/.test(bulletInfo.text)) { + // Outline list type so we can just count the number of sections. + return bulletInfo.text.replace(/([0-9]+|\.$)/g, '').length + 1; + } + indentAmount = listIndentAmount || parseInt(findStyles(styles, token.getAttribute('class'))); + + itemIndent = getLeftOffset(currentToken.getNode(), token.getNode()); + if (!indentAmount) { + indentAmount = 48; + } else { + // We might get a 0 item indent if the list CSS code wasn't pasted as happens on Windows. + if (listIndentAdjust) { + itemIndent += listIndentAdjust; + } else if (itemIndent === 0) { + listIndentAdjust = indentAmount; + itemIndent += indentAmount; + } + } + listIndentAmount = indentAmount = Math.min(itemIndent, indentAmount); + level = Math.max(1, Math.floor(itemIndent / indentAmount)) || 1; + return level; + }; + return { + guessIndentLevel: guessIndentLevel + }; + }; + + var styles = function() { + var inStyle = false; + var styles = ""; + var check = function(token) { + if (inStyle && token.type() === Token.TEXT_TYPE) { + styles += token.text(); + return true; + } else if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'STYLE') { + inStyle = true; + return true; + } else if (token.type() === Token.END_ELEMENT_TYPE && token.tag() === 'STYLE') { + inStyle = false; + return true; + } + return false; + }; + return { + check: check + }; + }; + + return { + isListWithoutCommentsOrStyles: isListWithoutCommentsOrStyles, + indentGuesser: indentGuesser, + styles: styles + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.list.Emitter', + + [ + 'ephox.powerpaste.legacy.data.tokens.Token', + 'ephox.powerpaste.legacy.filters.list.ListTypes' + ], + + function (Token, ListTypes) { + var impliedULatLevel = [ 'disc', 'circle', 'square' ]; + + var removeImpliedListType = function(type, level) { + if (type.tag === 'UL') { + if (impliedULatLevel[level - 1] === type.type) { + type = { tag: 'UL' }; + } + } + return type; + }; + + return function(api, document) { + var listTypes = []; + var itemTags = []; + var currentLevel = 0; + var currentListType; + + var openList = function(type, useType) { + var style = {}, attributes={}; + currentLevel++; + if (useType) { + if (type.type) { + style = { 'list-style-type': type.type }; + } + } + if (type.start && type.start>1) { + attributes={start:type.start}; + } + listTypes.push(type); + api.emit(Token.createStartElement(type.tag, attributes, style, document)); + currentListType = type; + }; + + var closeList = function() { + api.emit(Token.createEndElement(listTypes.pop().tag, document)); + currentLevel--; + currentListType = listTypes[listTypes.length - 1]; + }; + + var closeAllLists = function() { + while (currentLevel > 0) { + closeItem(); + closeList(); + } + api.commit(); + }; + + var closeItem = function() { + var tag = itemTags ? itemTags.pop() : 'P'; + if (tag != 'P') { + api.emit(Token.createEndElement(tag, document)); + } + api.emit(Token.createEndElement('LI', document)); + }; + + var openLI = function(paragraphToken, type, skippedPara) { + var style = {}; + if (!paragraphToken) { + style['list-style-type'] = 'none'; + } else { + var leftMargin = paragraphToken.getStyle('margin-left'); + if (leftMargin !== undefined) { + style['margin-left'] = leftMargin; + } + } + if (currentListType && !ListTypes.eqListType(currentListType, type)) { + closeList(); + if (skippedPara) { + api.emit(Token.createStartElement('P', {}, {}, document)); + api.emit(Token.createText('\u00A0', document)); + api.emit(Token.createEndElement('P', document)); + } + openList(type, true); + } + api.emit(Token.createStartElement('LI', {}, style, document)); + if (paragraphToken && paragraphToken.tag() != 'P') { + itemTags.push(paragraphToken.tag()); + paragraphToken.filterStyles(function() { return null; }); + api.emit(paragraphToken); + } else { + itemTags.push('P'); + } + }; + + var openItem = function(level, paragraphToken, type, skippedPara) { + var style = {}, token; + if (!type) return; + if (!currentLevel) currentLevel = 0; + while (currentLevel > level) { + closeItem(); + closeList(); + } + type = removeImpliedListType(type, level); + if (currentLevel == level) { + closeItem(); + openLI(paragraphToken, type, skippedPara); + } else { + // If there's a heading item we opened in the list we need to close it before creating the indented list + if (level > 1 && itemTags.length > 0 && itemTags[itemTags.length - 1] !== 'P') { + api.emit(Token.createEndElement(itemTags[itemTags.length - 1], document)); + itemTags[itemTags.length - 1] = 'P'; + } + while (currentLevel < level) { + openList(type, currentLevel == level - 1); + openLI(currentLevel == level ? paragraphToken : undefined, type); + } + } + }; + var getCurrentLevel = function() { + return currentLevel; + }; + var getCurrentListType = function() { + return currentListType; + }; + return { + openList: openList, + closelist: closeList, + closeAllLists: closeAllLists, + closeItem: closeItem, + openLI: openLI, + openItem: openItem, + getCurrentListType: getCurrentListType, + getCurrentLevel: getCurrentLevel + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.list.ListStates', + + [ + 'ephox.powerpaste.legacy.data.tokens.Helper', + 'ephox.powerpaste.legacy.data.tokens.Token', + 'ephox.powerpaste.legacy.filters.list.CommentHeuristics', + 'ephox.powerpaste.legacy.filters.list.ListTypes', + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Helper, Token, CommentHeuristics, ListTypes, Util) { + var unexpectedToken = function(api, token) { + Util.log("Unexpected token in list conversion: " + token.toString()); + api.rollback(); + }; + + var preferredListType = function(currentType, currentLevel, newLevel) { + if (currentLevel == newLevel) { + return currentType; + } + return null; + }; + + var afterListState = function(api, state, token) { + if (token.type() === Token.TEXT_TYPE && Util.trim(token.text()) === '') { + // Drop whitespace that's potentially between list items. + api.defer(token); + } else if (!state.skippedPara && token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'P' && !Helper.hasMsoListStyle(token)) { + state.openedTag = token; + api.defer(token); + state.nextFilter = skipEmptyParaState; + } else { + noListState(api, state, token); + } + }; + + var skipEmptyParaState = function(api, state, token) { + if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'SPAN' && state.spanCount.length === 0 && + (Helper.supportsCustomStyles || !CommentHeuristics.isListWithoutCommentsOrStyles(token, state)) && !Helper.hasMsoListStyle(token)) { + api.defer(token); + state.spanCount.push(token); + } else if (token.type() === Token.END_ELEMENT_TYPE) { + if (token.tag() === 'SPAN') { + api.defer(token); + state.spanCount.pop(); + } else if (token.tag() === 'P') { + api.defer(token); + state.skippedPara = true; + state.openedTag = null; + state.nextFilter = afterListState; + } else { + // Not an empty paragraph. + state.nextFilter = noListState; + state.nextFilter(api, state, token); + } + } else if (token.isWhitespace()) { + api.defer(token); + } else { + state.nextFilter = noListState; + state.nextFilter(api, state, token); + } + }; + + var msoListSkipState = function(api, state, token) { + if (token.type() === Token.END_ELEMENT_TYPE && token.tag() === state.originalToken.tag()) { + state.nextFilter = afterListState; + } else if (token === Token.FINISHED) { + state.emitter.closeAllLists(); + api.emit(token); + } + // Else drop. + }; + + var noListState = function(api, state, token) { + var closeOutLists = function() { + state.emitter.closeAllLists(); + api.emitDeferred(); + state.openedTag = null; + api.emit(token); + state.nextFilter = noListState; + }; + if (token.type() === Token.START_ELEMENT_TYPE && Helper.hasMsoListStyle(token) && token.tag() !== 'LI') { + var msoList = token.getStyle('mso-list'); + if (false && msoList === 'skip') { + state.nextFilter = msoListSkipState; + state.originalToken = token; + } else { + var lvl = / level([0-9]+)/.exec(token.getStyle('mso-list')); + + if (lvl && lvl[1]) { + state.itemLevel = parseInt(lvl[1], 10) + state.styleLevelAdjust; + // Tokens between lists should be dropped (they're just whitespace anyway) + // however, tokens before a list should be emitted if we find an mso-list style + // since this is the very first token of the list. + if (state.nextFilter === noListState) { + api.emitDeferred(); + } else { + api.dropDeferred(); + } + state.nextFilter = listStartState; + api.startTransaction(); + state.originalToken = token; + state.commentMode = false; + } else { + closeOutLists(); + } + } + } else if (!Helper.supportsCustomStyles && + ((token.type() === Token.COMMENT_TYPE && token.text() === '[if !supportLists]') || + (CommentHeuristics.isListWithoutCommentsOrStyles(token, api)))) { + if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'SPAN') { + state.spanCount.push(token); + } + state.nextFilter = listStartState; + api.startTransaction(); + state.originalToken = state.openedTag; + state.commentMode = true; + state.openedTag = null; + api.dropDeferred(); + } else if (token.type() === Token.END_ELEMENT_TYPE && Helper.spanOrA(token)) { + api.defer(token); + state.spanCount.pop(); + } else if (token.type() === Token.START_ELEMENT_TYPE) { + // Might be the start of an item, store it and see if we get a comment next. + if (Helper.spanOrA(token)) { + api.defer(token); + state.spanCount.push(token); + } else { + if (state.openedTag) { + state.emitter.closeAllLists(); + api.emitDeferred(); + } + state.openedTag = token; + api.defer(token); + } + } else { + closeOutLists(); + } + }; + + var afterNoBulletListState = function(api, state, token) { + if (token.type() === Token.END_ELEMENT_TYPE && state.originalToken.tag() === token.tag()) { + state.nextFilter = afterListState; + state.styleLevelAdjust = -1; + } + api.emit(token); + }; + + var listStartState = function(api, state, token) { + if (token.type() == Token.START_ELEMENT_TYPE && token.getStyle('mso-list') === 'Ignore') { + state.nextFilter = findListTypeState; + } if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'SPAN') { + state.spanCount.push(token); + if (state.commentMode && token.getAttribute("style") === "" || token.getAttribute("style") === null) { + state.nextFilter = findListTypeState; + } + // Otherwise drop. + } else if (token.tag() === 'A') { + if (token.type() === Token.START_ELEMENT_TYPE) { + state.spanCount.push(token); + } else { + state.spanCount.pop(); + } + } else if (token.type() === Token.TEXT_TYPE) { + if (state.commentMode) { + state.nextFilter = findListTypeState; + state.nextFilter(api, state, token); + } else { + // List type without a bullet, we should treat it as a paragraph. + var start = state.originalToken; + var spans = state.spanCount; + state.emitter.closeAllLists(); + api.emit(start); + Util.each(spans, Util.bind(api.emit, api)); + api.emit(token); + api.commit(); + state.originalToken = start; + state.nextFilter = afterNoBulletListState; + } + } else if (!state.commentMode && token.type() === Token.COMMENT_TYPE) { + // Drop. We seem to be getting custom styles and comments. + } else { + unexpectedToken(api, token); + } + }; + + var findListTypeState = function(api, state, token) { + if (token.type() === Token.TEXT_TYPE) { + if (token.isWhitespace()) { + // Ignore whitespace node, it's padding before the actual list type. + } else { + state.nextFilter = beforeSpacerState; + state.bulletInfo = { text: token.text(), symbolFont: state.symbolFont }; + } + } else if (Helper.spanOrA(token)) { + // Drop open and close span tags. + if (token.type() === Token.START_ELEMENT_TYPE) { + state.spanCount.push(token); + } else { + state.spanCount.pop(); + } + } else if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'IMG') { + // Custom list image type. We can't access the image so use a normal bullet instead. + // EditLive! may want this to come through as a CSS reference. + state.nextFilter = beforeSpacerState; + state.bulletInfo = { text: '\u2202', symbolFont: true }; + } else { + unexpectedToken(api, token); + } + }; + + var beforeSpacerState = function(api, state, token) { + if (token.type() === Token.START_ELEMENT_TYPE && Helper.spanOrA(token)) { + state.spanCount.push(token); + state.nextFilter = spacerState; + } else if (token.type() === Token.END_ELEMENT_TYPE && Helper.spanOrA(token)) { + state.spanCount.pop(); + state.nextFilter = closeSpansState; + } else if (token.type() === Token.END_ELEMENT_TYPE && token.tag() === 'IMG') { + // Drop + } else { + unexpectedToken(api, token); + } + }; + + var spacerState = function(api, state, token) { + if (token.type() === Token.END_ELEMENT_TYPE) { + if (Helper.spanOrA(token)) { + state.spanCount.pop(); + } + state.nextFilter = closeSpansState; + } + // Drop all other tokens. + }; + + var closeSpansState = function(api, state, token) { + var moveToItemContentState = function(includeToken) { + state.nextFilter = itemContentState; + if (state.commentMode) state.itemLevel = state.indentGuesser.guessIndentLevel(token, state.originalToken, state.styles.styles, state.bulletInfo); + state.listType = ListTypes.guessListType(state.bulletInfo, preferredListType(state.emitter.getCurrentListType(), state.emitter.getCurrentLevel(), state.itemLevel), state.originalToken); + if (state.listType) { + state.emitter.openItem(state.itemLevel, state.originalToken, state.listType, state.skippedPara); + api.emitDeferred(); + while (state.spanCount.length > 0) { + api.emit(state.spanCount.shift()); + } + if (includeToken) { + api.emit(token); + } + } else { + Util.log("Unknown list type: " + state.bulletInfo.text + " Symbol font? " + state.bulletInfo.symbolFont); + api.rollback(); + } + }; + + if (token.type() === Token.TEXT_TYPE || token.type() === Token.START_ELEMENT_TYPE) { + moveToItemContentState(true); + } else if (token.type() === Token.COMMENT_TYPE) { + moveToItemContentState(token.text() !== '[endif]'); + } else if (token.type() === Token.END_ELEMENT_TYPE) { + if (Helper.spanOrA(token)) { + state.spanCount.pop(); + } + } else { + unexpectedToken(api, token); + } + }; + + var itemContentState = function(api, state, token) { + if (token.type() === Token.END_ELEMENT_TYPE && token.tag() === state.originalToken.tag()) { + state.nextFilter = afterListState; + state.skippedPara = false; + } else { + api.emit(token); + } + }; + + var initial = noListState; + return { + initial: initial + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.list.Lists', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Helper', + 'ephox.powerpaste.legacy.data.tokens.Token', + 'ephox.powerpaste.legacy.filters.list.CommentHeuristics', + 'ephox.powerpaste.legacy.filters.list.Emitter', + 'ephox.powerpaste.legacy.filters.list.ListStates', + 'ephox.powerpaste.legacy.filters.list.ListTypes', + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Filter, Helper, Token, CommentHeuristics, Emitter, ListStates, ListTypes, Util) { + + var activeState = {}; + + var resetActiveState = function(api) { + //It would be nice if this was creating a fresh object, but listStartState() expects state mutation when api.commit() is called + activeState.nextFilter = ListStates.initial; + activeState.itemLevel = 0; + activeState.originalToken = null; + activeState.commentMode = false; + activeState.openedTag = null; + activeState.symbolFont = false; + activeState.listType = null; + activeState.indentGuesser = CommentHeuristics.indentGuesser(); + activeState.emitter = Emitter(api, api.document); + activeState.styles = CommentHeuristics.styles(); + activeState.spanCount = []; + activeState.skippedPara = false; + activeState.styleLevelAdjust = 0; + activeState.bulletInfo = undefined; + }; + + resetActiveState({}); + + var resetState = function(api) { + resetActiveState(api); + }; + + var receive = function(api, token) { + if (activeState.styles.check(token)) { + return; + } + activeState.symbolFont = ListTypes.checkFont(token, activeState.symbolFont); + activeState.nextFilter(api, activeState, token); + }; + + return Filter.createFilter(receive, resetState); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +/** + * Source code in this file has been taken under a commercial license from tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js + * Copyright 2009, Moxiecode Systems AB + */ +define( + 'ephox.powerpaste.legacy.tinymce.BrowserFilters', + + [ + 'ephox.powerpaste.legacy.tinymce.Util' + ], + + function (Util) { + var trailingSpaceCharacter = function(content) { + var h = content; + // Strip a trailing non-breaking, zero-width space which Firefox tends to insert. + var hasCrazySpace = h.charCodeAt(h.length - 1) === 65279; + return hasCrazySpace ? + h.substring(0, h.length - 1) : + content; + }; + + // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser + var removeBrNextToBlock = function(content) { + return (/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/).test(content) ? + content.replace(/(?:<br> [\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br> [\s\r\n]+|<br>)*/g, '$1') : + content; + }; + + // Replace multiple BR elements with uppercase BR to keep them intact when collapseBr runs + var capitaliseMultipleBr = function(content) { + return content.replace(/<br><br>/g, '<BR><BR>'); + }; + + // Replace single br elements with space since they are word wrapping + var removeSingleBr = function(content) { + return content.replace(/<br>/g, ' '); + }; + + // Collapse double brs into a single BR + var collapseBr = function(content) { + return content.replace(/<BR><BR>/g, '<br>'); + }; + + var baseFilters = [trailingSpaceCharacter]; + + var filters = (tinymce.isIE && document.documentMode >= 9) ? + [collapseBr, removeSingleBr, capitaliseMultipleBr, removeBrNextToBlock].concat(baseFilters) : + baseFilters; + + var allFilters = Util.compose(filters); + + return { + all: allFilters, + textOnly: trailingSpaceCharacter + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.FilterInlineStyles', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + var removeStyles = /^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\..*)$/; + + var filterFunction = function(styleFilter) { + return function(name, value) { + var preserve = false; + switch (styleFilter) { + case 'all': + case '*': + preserve = true; + break; + case 'valid': + preserve = !removeStyles.test(name); + break; + case undefined: + case 'none': + preserve = name === 'list-style-type'; + break; + default: + preserve = (',' + styleFilter + ',').indexOf(',' + name + ',') >= 0; + break; + } + return preserve ? value : null; + }; + }; + + return Filter.createFilter(function(api, token) { + var styleFilter = api.settings.get('retain_style_properties'); + token.filterStyles(filterFunction(styleFilter)); + api.emit(token); + }); + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.InferListTags', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Filter, Token) { + return Filter.createFilter(function(api, token) { + if (api.seenList) { + // As soon as we see a UL or OL tag we know we're getting complete lists. + api.emit(token); + } else if (api.inferring) { + if (token.tag() === 'LI') { + if (token.type() === Token.START_ELEMENT_TYPE) { + api.inferring++; + } else { + api.inferring--; + if (!api.inferring) { + api.needsClosing = true; + } + } + } + api.emit(token); + } else { + if (token.tag() === 'OL' || token.tag() === 'UL') { + api.seenList = true; + } else if (token.tag() === 'LI') { + api.inferring = 1; + if (!api.needsClosing) { + api.emit(Token.createStartElement('UL', {}, {}, api.document)); + } + } + if (api.needsClosing && !api.inferring && !token.isWhitespace()) { + api.needsClosing = false; + api.emit(Token.createEndElement('UL', api.document)); + } + api.emit(token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripBookmarks', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + if (name === 'name' || name === 'id') { + return null; + } + return value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripClassAttributes', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + var classFilter; + if (name === 'class') { + classFilter = this.settings.get('strip_class_attributes'); + switch (classFilter) { + case 'mso': + return value.indexOf('Mso') === 0 ? null : value; + case 'none': + return value; + default: + return null; + } + } + return value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripEmptyInlineElements', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Helper', + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Filter, Helper, Token) { + var deferred = []; + var open = []; + var hasContent = false; + + var removeMatchingSpan = function(len, pos) { + var j, token, opened = 1; + for (j = pos + 1; j < len; j++) { + token = deferred[j]; + if (token && token.tag() === 'SPAN') { + if (token.type() === Token.START_ELEMENT_TYPE) { + opened++; + } else if (token.type() === Token.END_ELEMENT_TYPE) { + opened--; + if (opened === 0) { + // Save reallocating a shorter array, just null it out. + deferred[j] = null; + return; + } + } + } + } + }; + + var flushDeferred = function(api) { + if (hasContent) { + var tok, len = deferred.length, i; + for (i = 0; i < len; i++) { + tok = deferred[i]; + if (!tok) continue; + if (tok.type() === Token.START_ELEMENT_TYPE && tok.tag() === 'SPAN' && Helper.hasNoAttributes(tok)) { + // Omit token and find the last end span and remove it too. + removeMatchingSpan(len, i); + } else { + api.emit(tok); + } + } + } + deferred = []; + open = []; + hasContent = false; + }; + + var internalDefer = function(api, token) { + deferred.push(token); + open = open || []; + if (token.type() === Token.START_ELEMENT_TYPE) { + open.push(token); + } else if (token.type() === Token.END_ELEMENT_TYPE) { + open.pop(); + if (open.length === 0) { + // Didn't find anything to keep so dump everything. + flushDeferred(api, token); + return; + } + } + }; + + return Filter.createFilter(function(api, token) { + var inlineTags = ',FONT,EM,STRONG,SAMP,ACRONYM,CITE,CODE,DFN,KBD,TT,B,I,U,S,SUB,SUP,INS,DEL,VAR,SPAN,'; + + deferred = deferred || []; + + var alwaysKeep = function(token) { + return !(inlineTags.indexOf(',' + token.tag() + ',') >= 0 && Helper.hasNoAttributes(token, true)); + }; + + if (deferred.length === 0) { + if (token.type() === Token.START_ELEMENT_TYPE) { + if (alwaysKeep(token)) { + api.emit(token); + } else { + internalDefer(api, token); + } + } else { + api.emit(token); + } + } else { + if (!hasContent) hasContent = alwaysKeep(token); + internalDefer(api, token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripEmptyStyleAttributes', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + if (name === 'style' && value === '') { + return null; + } + return value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripLangAttribute', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + return name === 'lang' ? null : value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( +'ephox.powerpaste.legacy.filters.StripImages', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Filter, Token) { + return Filter.createFilter(function(api, token) { + if (token.tag() === 'IMG') { + if (token.type() === Token.END_ELEMENT_TYPE && api.skipEnd) { + api.skipEnd = false; + return; + } else if (token.type() === Token.START_ELEMENT_TYPE) { + if (/^file:/.test(token.getAttribute('src'))) { + api.skipEnd = true; + return; + } else if (api.settings.get('base_64_images') && /^data:image\/.*;base64/.test(token.getAttribute('src'))) { + api.skipEnd = true; + return; + } + } + } + api.emit(token); + }); + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripMetaAndLinkElements', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createFilter(function(api, token) { + if (token.tag() !== 'META' && token.tag() !== 'LINK') { + api.emit(token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripNoAttributeA', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Helper', + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Filter, Helper, Token) { + var keepA = function(token) { + return !Helper.hasNoAttributes(token) && !/^OLE_LINK/.test(token.getAttribute('name')); + }; + + var stack = []; + + return Filter.createFilter(function(api, token) { + var open; + if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'A') { + stack.push(token); + if (keepA(token)) { + api.defer(token); + } + } else if (token.type() === Token.END_ELEMENT_TYPE && token.tag() === 'A') { + open = stack.pop(); + if (keepA(open)) { + api.defer(token); + } + if (stack.length === 0) { + api.emitDeferred(); + } + } else if (api.hasDeferred()) { + api.defer(token); + } else { + api.emit(token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripScripts', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter', + 'ephox.powerpaste.legacy.data.tokens.Token' + ], + + function (Filter, Token) { + var script = false; + return Filter.createFilter(function(api, token) { + if (token.tag() === 'SCRIPT') { + script = token.type() === Token.START_ELEMENT_TYPE; + } else if (!script) { + token.filterAttributes(function(name, value) { + if (/^on/.test(name) || name === 'language') return null; + return value; + }); + api.emit(token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.wordimport.CommonFilters', + + [ + 'ephox.powerpaste.legacy.filters.FilterInlineStyles', + 'ephox.powerpaste.legacy.filters.InferListTags', + 'ephox.powerpaste.legacy.filters.StripBookmarks', + 'ephox.powerpaste.legacy.filters.StripClassAttributes', + 'ephox.powerpaste.legacy.filters.StripEmptyInlineElements', + 'ephox.powerpaste.legacy.filters.StripEmptyStyleAttributes', + 'ephox.powerpaste.legacy.filters.StripLangAttribute', + 'ephox.powerpaste.legacy.filters.StripImages', + 'ephox.powerpaste.legacy.filters.StripMetaAndLinkElements', + 'ephox.powerpaste.legacy.filters.StripNoAttributeA', + 'ephox.powerpaste.legacy.filters.StripScripts' + ], + + function (FilterInlineStyles, InferListTags, StripBookmarks, StripClassAttributes, StripEmptyInlineElements, StripEmptyStyleAttributes, StripLangAttribute, StripImages, StripMetaAndLinkElements, StripNoAttributeA, StripScripts) { + return [ + StripScripts, + StripBookmarks, + StripImages, + FilterInlineStyles, + StripLangAttribute, + StripEmptyStyleAttributes, + StripClassAttributes, + StripNoAttributeA, + StripEmptyInlineElements, + StripMetaAndLinkElements, + InferListTags + ]; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripFormattingAttributes', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createFilter(function(api, token) { + token.filterAttributes(function(name, value) { + if (name === 'align') return null; + if ((token.tag() === 'UL' || token.tag() === 'OL') && + name === 'type') return null; + return value; + }); + api.emit(token); + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripNamespaceDeclarations', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + if (/^xmlns(:|$)/.test(name)) { + return null; + } + return value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripOPTags', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createFilter(function(api, token) { + if (!token.tag || !/^([OVWXP]|U[0-9]+|ST[0-9]+):/.test(token.tag())) { + api.emit(token); + } + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripTocLinks', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + if (name === 'href' && (value.indexOf('#_Toc') >= 0 || value.indexOf('#_mso') >= 0)) { + return null; + } + return value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.filters.StripVMLAttributes', + + [ + 'ephox.powerpaste.legacy.data.tokens.Filter' + ], + + function (Filter) { + return Filter.createAttributeFilter(function(name, value) { + if (/^v:/.test(name)) { + return null; + } + return value; + }); + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.wordimport.WordOnlyFilters', + + [ + 'ephox.powerpaste.legacy.filters.StripFormattingAttributes', + 'ephox.powerpaste.legacy.filters.StripNamespaceDeclarations', + 'ephox.powerpaste.legacy.filters.StripOPTags', + 'ephox.powerpaste.legacy.filters.StripTocLinks', + 'ephox.powerpaste.legacy.filters.StripVMLAttributes', + 'ephox.powerpaste.legacy.filters.list.Lists' + ], + + function (StripFormattingAttributes, StripNamespaceDeclarations, StripOPTags, StripTocLinks, StripVMLAttributes, Lists) { + return [ + StripOPTags, + Lists, + StripTocLinks, + StripVMLAttributes, + StripNamespaceDeclarations, + StripFormattingAttributes + ]; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.legacy.wordimport.WordImport', + + [ + 'ephox.powerpaste.legacy.data.tokens.Serializer', + 'ephox.powerpaste.legacy.data.tokens.Tokenizer', + 'ephox.powerpaste.legacy.filters.Text', + 'ephox.powerpaste.legacy.filters.list.Lists', + 'ephox.powerpaste.legacy.tinymce.BrowserFilters', + 'ephox.powerpaste.legacy.wordimport.CommonFilters', + 'ephox.powerpaste.legacy.wordimport.WordOnlyFilters' + ], + + function (Serializer, Tokenizer, Text, Lists, BrowserFilters, CommonFilters, WordOnlyFilters) { + var buildPipeline = function(filters, sink, settings, document) { + var i, filter = sink; + for (i = filters.length - 1; i >= 0; i--) { + //This is calling the function defined by Filter.createFilter(). + //The best description I can come up with is "function composition using CPS". + //Filters are run in reverse order to the loop, which is reversed so the arrays below define the order. + //And then the sink comes last (which means it's injected on the first pass of the loop). + filter = filters[i](filter, settings, document); + } + return filter; + }; + + var runPipeline = function(content, settings, document, requiredFilters) { + var serializer = Serializer.create(document); + var tokenizer = Tokenizer.tokenize(content, document); + pipeline = buildPipeline(requiredFilters, serializer, settings, document); + while (tokenizer.hasNext()) { + pipeline.receive(tokenizer.next()); + } + return serializer.dom; + }; + + /** + * Accepts a string of content to filter and returns a filtered DOM structure. + * + * @param inputContent the content to filter + * @param settings the settings object + * @param document the target document that the content will be inserted into + * @return a DOM fragment with the filtered content. + */ + var filter = function(inputContent, settings, document) { + var content = BrowserFilters.all(inputContent); + + var detectedAsWordContent = isWordContent(content); + settings.setWordContent(detectedAsWordContent); + + var requiredFilters = CommonFilters; + if (detectedAsWordContent) { + requiredFilters = WordOnlyFilters.concat(CommonFilters); + } + return runPipeline(content, settings, document, requiredFilters); + }; + + var filterPlainText = function(inputContent, settings, document) { + var content = BrowserFilters.textOnly(inputContent); + + return runPipeline(content, settings, document, [Text]); + }; + + var isWordContent = function(content) { + return content.indexOf('<o:p>') >= 0 || // IE, Safari, Opera + content.indexOf('p.MsoNormal, li.MsoNormal, div.MsoNormal') >= 0 || // Firefox Mac + content.indexOf('MsoListParagraphCxSpFirst') >= 0 || // Windows list only selection + content.indexOf('<w:WordDocument>') >= 0; // Firefox Windows + }; + + return { + filter: filter, + filterPlainText: filterPlainText, + isWordContent: isWordContent + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.LegacyTinyDialog', + [ + 'ephox.powerpaste.legacy.data.Insert', + 'ephox.powerpaste.legacy.tinymce.Settings', + 'ephox.powerpaste.legacy.wordimport.WordImport', + 'global!setTimeout' + ], + function(Insert, Settings, WordImport, setTimeout){ + return function(editor, translate) { + var showDialog = function(content){ + + var filterAndInsert = function(importSetting) { + var data = {content: content}; + + // run pre-filters + editor.fire('PastePreProcess', data); + + // run main filter, always strip images + var settings = Settings.create(importSetting || editor.settings.powerpaste_word_import, importSetting || editor.settings.powerpaste_html_import, true); + var fragment = WordImport.filter(data.content, settings, editor.getDoc()); + + // run post-filters + editor.fire('PastePostProcess', fragment); + //Set undo step + editor.undoManager.transact(function() { + // insert the DocumentFragment object into the editor + Insert.insert(fragment, editor); + }); + }; + + //introduce the prompt option + var cleanOrMerge = function(setting) { + return setting === 'clean' || setting === 'merge'; + }; + + var openDialog =function() { + var win; + + var clean = function() { + win.close(); + filterAndInsert('clean'); + }; + var merge = function() { + win.close(); + filterAndInsert('merge'); + }; + + var controls = [{ + text: translate('cement.dialog.paste.clean'), + onclick: clean + }, + { + text: translate('cement.dialog.paste.merge'), + onclick: merge + }]; + + var winSettings = { + title: translate('cement.dialog.paste.title'), + spacing: 10, + padding: 10, + items: [{ + type: 'container', + html: translate('cement.dialog.paste.instructions') + }], + buttons: controls + }; + + win = editor.windowManager.open(winSettings); + + //IE appears to require that we blur the iframe + setTimeout(function() { + if (win) { + win.getEl().focus(); + } + }, 1); + }; + + if (WordImport.isWordContent(content) && !cleanOrMerge(editor.settings.powerpaste_word_import)) { + openDialog(); + } else if (!cleanOrMerge(editor.settings.powerpaste_html_import)) { + openDialog(); + } else { + filterAndInsert(); + } + + }; + + return { + showDialog: showDialog + }; + + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.LegacyPowerPaste', + [ + 'ephox.powerpaste.i18n.I18n', + 'ephox.powerpaste.legacy.tinymce.Clipboard', + 'ephox.powerpaste.tinymce.LegacyTinyDialog' + ], + function (I18n, Clipboard, LegacyTinyDialog) { + return function (editor, settings) { + var t = this, onPaste, onKeyDown; + + var tinyDialog = LegacyTinyDialog(editor, I18n.translate); + + var handlerAdapter = function(handler) { + return function(e) { + handler(e); + }; + }; + + // Register the getClipboardContent function onpaste and with the magical keyboard shortcuts for browsers that don't support that (Opera & FF2). + onPaste = Clipboard.getOnPasteFunction(editor, tinyDialog.showDialog); + editor.on('paste', handlerAdapter(onPaste)); + + onKeyDown = Clipboard.getOnKeyDownFunction(editor, tinyDialog.showDialog); + editor.on('keydown', handlerAdapter(onKeyDown)); + + editor.addCommand('mceInsertClipboardContent', function(ui, data) { + tinyDialog.showDialog(data.content || data); + }); + + if (editor.settings.paste_preprocess) { + editor.on('PastePreProcess', function(e) { + editor.settings.paste_preprocess.call(t, t, e); + }); + } + + }; + + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.epithet.Id', + + [ + ], + + function () { + + /** + * Generate a unique identifier. + * + * The unique portion of the identifier only contains an underscore + * and digits, so that it may safely be used within HTML attributes. + * + * The chance of generating a non-unique identifier has been minimized + * by combining the current time, a random number and a one-up counter. + * + * @param {string} prefix Prepended to the identifier + * @return {string} Unique identifier + */ + var unique = 0; + + var generate = function (prefix) { + var date = new Date(); + var time = date.getTime(); + var random = Math.floor(Math.random() * 1000000000); + + unique++; + + return prefix + "_" + random + unique + String(time); + }; + + return { + generate: generate + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.DeviceType', + + [ + 'ephox.peanut.Fun' + ], + + function (Fun) { + return function(osObj, browserObj, userAgent) { + var isiPad = osObj.isiOS() && ( userAgent.search(/iPad/i) !== -1 ); + var isiPhone = osObj.isiOS() && !isiPad; + var isAndroid3 = osObj.isAndroid() && ( osObj.version.major === 3 ); + var isAndroid4 = osObj.isAndroid() && ( osObj.version.major === 4 ); + var isTablet = isiPad || isAndroid3 || ( isAndroid4 && userAgent.search(/mobile/i) === -1 ); + var isTouch = ( osObj.isiOS() || osObj.isAndroid() ); + var isPhone = isTouch && !isTablet; + + return { + isiPad : Fun.constant(isiPad), + isiPhone: Fun.constant(isiPhone), + isTablet: Fun.constant(isTablet), + isPhone: Fun.constant(isPhone), + isTouch: Fun.constant(isTouch), + isAndroid: osObj.isAndroid, + isiOS: osObj.isiOS + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.Platform', + + [ + ], + + function () { + var create = function(browserName, browserVersion, osName) { + return { + browser: { + current: browserName, + version: browserVersion + }, + os: { + current: osName + } + }; + }; + + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.GetterHelper', + + [ + ], + + function () { + var getter = function(value) { + return function() { + return value; + }; + }; + + // Adapter between settings like IsMSIE and functions like EditLiveJava.browser.isIE() + var attachGetters = function(scope, current, options) { + for (var i = 0; i < options.length; i++) { + scope['is' + options[i].name] = getter(options[i].name === current); + } + }; + + return { + getter: getter, + attachGetters: attachGetters + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.Result', + + [ + 'ephox.fred.core.GetterHelper' + ], + + function (GetterHelper) { + var create = function(options, current, version) { + //------------------------------------------------------------------------- + var attachGetters = GetterHelper.attachGetters; + //------------------------------------------------------------------------- + + var result = {}; + result.current = current; + result.version = version; + attachGetters(result, result.current, options); + return result; + }; + + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.SearchInfo', + + [ + 'ephox.violin.Strings' + ], + + function (V) { + var contains = V.contains; + var checkContains = function(x) { + return function(uastring) { + return contains(uastring, x); + }; + }; + + var chromeFrameChecker = function() { + try { + var i = new ActiveXObject('ChromeTab.ChromeFrame'); + return !!i; + } catch(e) { + return false; + } + }; + + var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; + + var create = function(isChromeFrameEnabled) { + var browsers = [ + { + name : 'Spartan', + versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], + search: function(uastring) { + var monstrosity = contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit'); + return monstrosity; + } + }, + { + name : 'ChromeFrame', + versionRegexes: [/.*?chromeframe\/([0-9]+)\.([0-9]+).*/, normalVersionRegex], + search: function(uastring) { + return contains(uastring, 'chromeframe') ? isChromeFrameEnabled() : false; + } + }, + { + name : 'Chrome', + versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, normalVersionRegex], + search : function(uastring) { + return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe'); + } + }, + { + name : 'IE', + versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], + search: function(uastring) { + var containsIE = (contains(uastring, 'msie') || contains(uastring, 'trident')); + var containsChromeFrame = contains(uastring, 'chromeframe'); + return containsChromeFrame ? containsIE && !isChromeFrameEnabled() : containsIE; + } + }, + { + name : 'Opera', + versionRegexes: [normalVersionRegex, /.*?opera\/([0-9]+)\.([0-9]+).*/], + search : checkContains('opera') + }, + { + name : 'Firefox', + versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], + search : checkContains('firefox') + }, + { + name : 'Safari', + versionRegexes: [normalVersionRegex], + search : checkContains('safari') + }, + { + name : 'Envjs', + versionRegexes: [/.*?envjs\/\ ?([0-9]+)\.([0-9]+).*/], + search : checkContains('envjs') + } + ]; + + var oses = [ + { + name : 'Windows', + search : checkContains('win'), + versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name : 'iOS', + search : function(uastring) { + return contains(uastring, 'iphone') || contains(uastring, 'ipad'); + }, + versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name : 'Android', + search : checkContains('android'), + versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name : 'OSX', + search : checkContains('os x'), + versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] + }, + { + name : 'Linux', + search : checkContains('linux') + }, + { name : 'Solaris', + search : checkContains('sunos') + }, + { + name : 'FreeBSD', + search : checkContains('freebsd') + } + ]; + + + return { + browsers: browsers, + oses: oses + }; + }; + + return { + create: create, + chromeFrameChecker: chromeFrameChecker + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.SpecTester', + + [ + ], + + function () { + var meetsSpec = function(spec, browserVersion) { + var t = typeof spec; + if (t === 'boolean') { + return !! spec; + } else if (t === 'object') { + var min = spec.minimum; + return browserVersion.major > min.major || (browserVersion.major === min.major && browserVersion.minor >= min.minor); + } + + throw('invalid spec'); + }; + + return { + meetsSpec: meetsSpec + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.Fn', + + [ + ], + + function () { + var findOneInArrayOr = function(array, theDefault, predicate) { + for (var i = 0; i < array.length; i++) { + var x = array[i]; + if (predicate(x, i, array)) return x; + } + return theDefault; + }; + + return { + findOneInArrayOr: findOneInArrayOr + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.UaStringDetector', + + [ + 'ephox.fred.core.Fn' + ], + + function (Fn) { + var detect = function(scope, userAgent) { + //------------------------------------------------------------------------- + var findOneInArrayOr = Fn.findOneInArrayOr; + //------------------------------------------------------------------------- + + var agent = String(userAgent).toLowerCase(); + return findOneInArrayOr(scope, {name: undefined}, function(x) { + return x.search(agent); + }); + }; + + return { + detect: detect + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.core.VersionDetector', + + [ + ], + + function () { + var detectVersion = function(currentBrowser, agent) { + function firstMatch(regexes, s) { + for (var i = 0; i < regexes.length; i++) { + var x = regexes[i]; + if (x.test(s)) return x; + } + return undefined; + } + + function find(regexes, agent) { + var r = firstMatch(regexes, agent); + if (!r) return { major : 0, minor : 0 }; + var group = function(i) { + return Number(agent.replace(r, '$' + i)); + }; + return { + major : group(1), + minor : group(2) + }; + } + + var cleanedAgent = String(agent).toLowerCase(); + var versionRegexes = currentBrowser.versionRegexes; + + if (!versionRegexes) return { major : 0, minor : 0 }; + return find(versionRegexes, cleanedAgent); + }; + + return { + detectVersion: detectVersion + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fred.PlatformDetection', + + [ + 'ephox.fred.core.DeviceType', + 'ephox.fred.core.Platform', + 'ephox.fred.core.Result', + 'ephox.fred.core.SearchInfo', + 'ephox.fred.core.SpecTester', + 'ephox.fred.core.UaStringDetector', + 'ephox.fred.core.VersionDetector' + ], + + function (DeviceType, Platform, Result, SearchInfo, SpecTester, UaStringDetector, VersionDetector) { + //------------------------------------------------------------------------- + var detectVersion = VersionDetector.detectVersion; + var makeResult = Result.create; + var meetsSpec = SpecTester.meetsSpec; + var detectFromUaString = UaStringDetector.detect; + //------------------------------------------------------------------------- + + var isSupported = function(supportMatrix, os, browser, browserVersion) { + if (!!(supportMatrix[os])) { + if (!!(supportMatrix[os][browser])) { + return meetsSpec(supportMatrix[os][browser], browserVersion); + } else { + return !!(supportMatrix[os]["All"]); + } + } else { + return false; + } + }; + + var isSupportedPlatform = function(matrix, platform) { + var browser = platform.browser; + var os = platform.os; + return isSupported(matrix, os.current, browser.current, browser.version); + }; + + var doDetect = function(userAgent, chromeFrameChecker) { + var si = SearchInfo.create(chromeFrameChecker); + + var browsers = si.browsers; + var oses = si.oses; + + var os = detectFromUaString(oses, userAgent); + var osName = os.name; + var osVersion = detectVersion(os, userAgent); + + var browser = detectFromUaString(browsers, userAgent); + var browserName = browser.name; + var browserVersion = detectVersion(browser, userAgent); + + + var osObj = makeResult(oses, osName, osVersion); + var browserObj = makeResult(browsers, browserName, browserVersion); + + var deviceType = DeviceType(osObj, browserObj, userAgent); + + var supported = function(supportMatrix) { + return isSupported(supportMatrix, osName, browserName, browserVersion); + }; + + return { + browser : browserObj, + os : osObj, + deviceType: deviceType, + isSupported : supported + }; + }; + + var detect = function() { + return doDetect(navigator.userAgent, SearchInfo.chromeFrameChecker); + }; + + return { + Platform: Platform, + detect: detect, + doDetect: doDetect, + isSupported: isSupported, + isSupportedPlatform: isSupportedPlatform + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.FileReader', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * IE10 and above per + * https://developer.mozilla.org/en-US/docs/Web/API/FileReader + */ + return function () { + var f = Global.getOrDie('FileReader'); + return new f(); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.hermes.utils.ImageExtract', + + [ + 'ephox.compass.Arr', + 'ephox.epithet.Id', + 'ephox.fred.PlatformDetection', + 'ephox.hermes.api.ImageAsset', + 'ephox.numerosity.api.FileReader', + 'ephox.numerosity.api.URL', + 'ephox.scullion.Struct' + ], + + function (Arr, Id, PlatformDetection, ImageAsset, FileReader, URL, Struct) { + var blobStruct = Struct.immutable('id', 'obj', 'objurl'); + + var blob = function (obj) { + return blobStruct(Id.generate('image'), obj, URL.createObjectURL(obj)); + }; + + var platform = PlatformDetection.detect(); + + /** + * Converts a list of blobs into a list of ImageAssets. This is + * asynchronous. The assets are passed to the callback + * @param blobs the list of blobs + * @param callback the callback function for the {ephox.hermes.asset.ImageAsset[]} + */ + var fromBlobs = function (blobs, callback) { + // edge case: where a drop of a non-file takes place + if (blobs.length === 0) { + callback([]); + return; + } + + var processed = []; + + var addAsset = function (asset) { + processed.push(asset); + if (processed.length === blobs.length) callback(processed); + }; + + var readBlob = function (blobData, f) { + var fr = FileReader(); + fr.onload = function(e) { + f(blobData, e.target); + }; + fr.readAsDataURL(blobData); + }; + + Arr.each(blobs, function (b) { + var uuid = b.id(); + var blobData = b.obj(); + var objurl = b.objurl(); + readBlob(blobData, function (b, data) { + var asset = ImageAsset.blob(uuid, b, objurl, data); + addAsset(asset); + }); + }); + }; + + /** + * Converts a list of files into a list of ImageAssets. This is + * asynchronous. The assets are passed to the callback + * @param files the list of files + * @param callback the callback function for the {ephox.hermes.asset.ImageAsset[]} + */ + var toAssets = function (files, callback) { + var blobs = Arr.map(files, function (file) { + return blob(file); + }); + + fromBlobs(blobs, callback); + }; + + var toFiles = function (event) { + return event.raw().target.files || event.raw().dataTransfer.files; + }; + + // The following functions are browser-specific ways of determining + // whether a drag event contains files from the FILE SYSTEM and + // NOT files being dragged from the host page + var isFilesIe = function (types) { + return types.length === 1 && Arr.contains(types, 'Files'); + }; + + var isFilesFF = function (types) { + return !Arr.contains(types, 'text/_moz_htmlcontext'); + }; + + var isFilesWebkit = function (types) { + return Arr.contains(types, 'Files'); + }; + + var isFilesOthers = function (types) { + // just assume we have files. It will just show a different + // drop container and the browser will do nothing + return true; + }; + + var fileDetection = function(){ + if( platform.browser.isChrome() + || platform.browser.isSafari() + || platform.browser.isOpera() ) { + return isFilesWebkit; + }else if( platform.browser.isFirefox() ) { + return isFilesFF; + }else if( platform.browser.isIE() ) { + return isFilesIe; + } + return isFilesOthers; + }; + + var isFiles = fileDetection(); + + /** + * Maps raw global!Image objects to internal image assets, + * suitable for adding to a gallery or the editor socket. + * @param [global!Image] images to process + * @return {ephox.hermes.asset.ImageAsset[]} mapped image assets + */ + var fromImages = function (images) { + return Arr.map(images, function (img) { + var uuid = Id.generate('image'); + return ImageAsset.url(uuid, img.src, img); + }); + }; + + return { + blob: blob, + toAssets: toAssets, + toFiles: toFiles, + isFiles: isFiles, + fromImages: fromImages, + fromBlobs: fromBlobs + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.hermes.api.ImageExtract', + + [ + 'ephox.hermes.utils.ImageExtract' + ], + + function (ImageExtract) { + /** + * Converts a list of files into a list of ImageAssets. This is + * asynchronous. The assets are passed to the callback + * @param files the list of files + * @param callback the callback function for the {ephox.hermes.asset.ImageAsset[]} + */ + var toAssets = function (files, callback) { + return ImageExtract.toAssets(files, callback); + }; + + /** + * Converts a list of blobs into a list of ImageAssets. This is + * asynchronous. The assets are passed to the callback + * @param blobs the list of blobs + * @param callback the callback function for the {ephox.hermes.asset.ImageAsset[]} + */ + var fromBlobs = function (blobs, callback) { + return ImageExtract.fromBlobs(blobs, callback); + }; + + return { + toAssets: toAssets, + fromBlobs: fromBlobs, + blob: ImageExtract.blob + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.ModernPowerDrop', + [ + 'ephox.compass.Arr', + 'ephox.hermes.api.ImageAsset', + 'ephox.hermes.api.ImageExtract', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element', + 'global!tinymce' + ], + function (Arr, ImageAsset, ImageExtract, Attr, Element, tinymce) { + return function (editor, url, settings, uploader) { + + var draggingInternally, imageRegex = /^image\/(jpe?g|png|gif|bmp)$/i; + + editor.on('dragstart dragend', function(e) { + draggingInternally = e.type === 'dragstart'; + }); + + editor.on('dragover dragend dragleave', function(e) { + e.preventDefault(); + }); + + var extractImages = function (event) { + + //TODO: make this more explicit why it's been done + var files = event.target.files || event.dataTransfer.files; + + return Arr.filter(files, function (file) { + //If the file type tests as an image + return imageRegex.test(file.type); + }); + + }; + + var stringifyImages = function (assets) { + + return Arr.map(assets, function (asset) { + + var image = Element.fromTag('img'); + + var src = ImageAsset.cata(asset, + //If we're using PP's uploader, return the blob url, otherwise the data url + uploader.getLocalURL, + function (id, url, raw) { return url; } + ); + + Attr.set(image, 'src', src); + + return image.dom().outerHTML; + + }).join(''); + + }; + + var processImages = function (images) { + + ImageExtract.toAssets(images, function (assets) { + + var stringHTML = stringifyImages(assets); + + //Content insertion + editor.insertContent(stringHTML, {merge: editor.settings.paste_merge_formats !== false}); + + uploader.uploadImages(assets); + + }); + + }; + + editor.on('drop', function (e) { + + //If we're not dragging from within tiny + if (!draggingInternally) { + + //If RangeUtils are exposed (4.2) + if (tinymce.dom.RangeUtils && tinymce.dom.RangeUtils.getCaretRangeFromPoint) { + + var rng = tinymce.dom.RangeUtils.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc()); + + //Set selection to where the mouse is pointing + if (rng) editor.selection.setRng(rng); + + } + + var images = extractImages(e); + + if (images.length > 0) processImages(images); + + e.preventDefault(); + + } + + }); + + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.Blob', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * IE10 and above per + * https://developer.mozilla.org/en-US/docs/Web/API/Blob + */ + return function (parts, properties) { + var f = Global.getOrDie('Blob'); + return new f(parts, properties); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.numerosity.api.Uint8Array', + + [ + 'ephox.numerosity.core.Global' + ], + + function (Global) { + /* + * https://developer.mozilla.org/en-US/docs/Web/API/Uint8Array + * + * IE10 and above per + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays + */ + return function (arr) { + var f = Global.getOrDie('Uint8Array'); + return new f(arr); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!parseInt", [], function () { return parseInt; }); +(function (define, require, demand) { +define( + 'ephox.bowerbird.codes.HexToBlob', + + [ + 'ephox.numerosity.api.Blob', + 'ephox.numerosity.api.Uint8Array', + 'global!Array', + 'global!Math', + 'global!String', + 'global!parseInt' + ], + + function (Blob, Uint8Array, Array, Math, String, parseInt) { + // This function is an unholy combination of two Stack Overflow posts: + // http://stackoverflow.com/questions/3745666/how-to-convert-from-hex-to-ascii-in-javascript + // http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript + + // This all hinges on each hex digit being two characters. + // Bytes are only 0-255 (hex 0-FF) though, so that's a pretty safe assumption. + var toBytes = function (hex) { + // Pre-allocating the array speeds things up + var parts = new Array(hex.length / 2); + for (var i = 0; i < hex.length; i += 2) { + var h = hex.substr(i, 2); + + var index = Math.floor(i / 2); // Chrome works with indexes like 1.5, but I don't trust JS + parts[index] = parseInt(h, 16); + } + return parts; + }; + + var convert = function (input, contentType) { + if (input.length === 0) throw 'Zero length content passed to Hex conversion'; + + var byteNumbers = toBytes(input); + var byteArray = Uint8Array(byteNumbers); + return Blob([byteArray], {type: contentType}); + }; + + return { + convert: convert + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.bowerbird.core.Species', + + [ + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + function (Fun, Option) { + var PICT_SIG = '{\\pict{'; + var PICT_ID_REF = 'i'; + var SHP_SIG = '{\\shp{'; + var SHP_ID_REF = 's'; + + var getIndex = function (match, str, idx) { + return str.indexOf(match, idx); + }; + + var common = function (start, end, bower, regex, idRef) { + if (start === -1 || end === -1) return Option.none(); + else return Option.some({ + start: Fun.constant(start), + end: Fun.constant(end), + bower: bower, // I wish we had types + regex: Fun.constant(regex), + idRef: Fun.constant(idRef) + }); + }; + + var extractBower = function (str, start, end) { + return function () { + return str.substring(start, end); + }; + }; + + var endBracket = function (str, idx) { + var nesting = 0; + var max = str.length; + var open, close; + do { + open = str.indexOf('{', idx); + close = str.indexOf('}', idx); + if (close > open && open !== -1) { + // is open bracket { + idx = open + 1; + ++nesting; + } else if ((open > close || open < 0) && close !== -1) { + // is closed bracket } + idx = close + 1; + --nesting; + } + if (idx > max || close === -1) return -1; + } while (nesting > 0); + return idx; + }; + + var pict = function (str, idx, start) { + var end = start === -1 ? start : endBracket(str, start); + var bower = extractBower(str, start, end); + var hexRegex = /([a-hA-H0-9]+)\}$/; + return common(start, end, bower, hexRegex, PICT_ID_REF); + }; + + var shp = function (str, idx, start) { + var end = start === -1 ? start : endBracket(str, start); + var bower = extractBower(str, start, end); + // On windows or ie there is this unique object which is 32bits long that we don't want to capture + // {\*\blipuid 2c98da434043a6e60b0c2f43b22569bc} + // there are ideas for optimising the capture which will make this regex redundant see TBIO-3070 + var hexRegex = /([a-hA-H0-9]{64,})(?:\}.*)/; + return common(start, end, bower, hexRegex, SHP_ID_REF); + }; + + // Can identify 2 types of embedded RTF images, pict & shp, if we find more this needs to become generic. + // It's complex because this is now a parser and either can come first. + var identify = function (str, idx) { + var pictStart = getIndex(PICT_SIG, str, idx); + var shpStart = getIndex(SHP_SIG, str, idx); + + if (pictStart === -1 && shpStart === -1) return Option.none(); + else if (pictStart === -1) return shp(str, idx, shpStart); + else if (shpStart === -1) return pict(str, idx, pictStart); + else if (pictStart < shpStart) return pict(str, idx, pictStart); + else if (shpStart < pictStart) return shp(str, idx, shpStart); + else return Option.none(); // this should never happen, but just in case + }; + + return { + identify: identify, + endBracket: endBracket + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.bowerbird.core.Rtf', + + [ + 'ephox.bowerbird.codes.HexToBlob', + 'ephox.bowerbird.core.Species', + 'ephox.perhaps.Option' + ], + + function (HexToBlob, Species, Option) { + + var nextBower = function (s, currentIndex) { + // the next nest of info that contains all the data about an image + return Species.identify(s, currentIndex); + }; + + var extractContentType = function (pict) { + // + // The following picture types are ignored at the moment: + // \emfblip, \macpict, \pmmetafileN, \wmetafileN, \dibitmapN, \wbitmapN. + // + if (pict.indexOf('\\pngblip') >= 0) return Option.some('image/png'); + else if (pict.indexOf('\\jpegblip') >= 0) return Option.some('image/jpeg'); + else return Option.none(); + }; + + var isValidHex = function (s) { + return s.length % 2 === 0; + }; + + var removeCrLf = function (s) { + return s.replace(/\r/g, '').replace(/\n/g, ''); + }; + + var extractOnlyGroup = function (s, regex) { + var result = s.match(regex); + return result !== null ? Option.some(result[1]) : Option.none(); + }; + + var extractHex = function (bower, regex) { + return extractOnlyGroup(bower, regex).filter(isValidHex); + }; + + var extractId = function (pict) { + var re = /\\shplid(\d+)/; + return extractOnlyGroup(pict, re); + }; + + var imageFromData = function (data) { + // extract a nest of data + var bower = data.bower(); + var regex = data.regex(); + return extractId(bower).bind(function (id) { + return extractContentType(bower).bind(function (contentType) { + return extractHex(bower, regex).map(function (hex) { + return { + 'id': data.idRef() + id, + 'contentType': contentType, + 'blob' : HexToBlob.convert(hex, contentType) + }; + }); + }); + }); + }; + + var extractBowers = function (rtf) { + var images = []; + var length = function () { + return rtf.length; // break + }; + + var addImage = function (data) { + var image = imageFromData(data); + image.each(function (image) { + images.push(image); + }); + return data.end() + 1; + }; + + var currentIndex = 0; + while (currentIndex < rtf.length) { + currentIndex = nextBower(rtf, currentIndex).fold(length, addImage); + } + return images; + }; + + var images = function (rtf) { + return extractBowers(removeCrLf(rtf)); + }; + + return { + nextBower: nextBower, + extractId: extractId, + extractContentType: extractContentType, + extractHex: extractHex, + images: images + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.bowerbird.api.Rtf', + + [ + 'ephox.bowerbird.core.Rtf' + ], + + function (Rtf) { + var images = function (rtf) { + return Rtf.images(rtf); + }; + + return { + images: images + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.flash.Correlation', + + [ + 'ephox.compass.Arr', + 'ephox.hermes.api.ImageExtract', + 'ephox.perhaps.Option', + 'ephox.scullion.Struct', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Class' + ], + + function (Arr, ImageExtract, Option, Struct, Attr, Class) { + var rtfData = Struct.immutable('id', 'url'); + + var byCode = function (image, unique, _index) { + var candidate = Arr.find(unique, function (u) { + return Attr.get(image, 'data-image-id') === u.id(); + }); + + return Option.from(candidate); + }; + + var byPosition = function (image, unique, index) { + return Option.from(unique[index]); + }; + + var converters = { + local: byPosition, + code: byCode + }; + + var convert = function (images, imageData, callback) { + var unique = []; + + // create the blob struct from the RTF data, and keep a record of unique ID -> url + var blobs = Arr.bind(imageData, function (i) { + var isUnique = !Arr.exists(unique, function (d) { return d.id() === i.id; }); + + if (isUnique) { + var blob = ImageExtract.blob(i.blob); + + unique.push(rtfData(i.id, blob.objurl())); + + return [blob]; + } else { + return []; + } + }); + + // load the blob data before updating the document and then firing the callback + ImageExtract.fromBlobs(blobs, function (assets) { + + Arr.each(images, function (image, i) { + // TODO: Standardise the names of these data attributes. Probably namespaced. + var type = Attr.get(image, 'data-image-type'); + var converter = converters[type] !== undefined ? converters[type] : Option.none; + converter(image, unique, i).each(function (candidate) { + Attr.set(image, 'src', candidate.url()); + }); + Class.remove(image, 'rtf-data-image'); + Attr.remove(image, 'data-image-type'); + Attr.remove(image, 'data-image-id'); + }); + + callback(assets); + }); + }; + + return { + convert: convert + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.style.Styles', + + [ + 'ephox.flour.style.Resolver' + ], + + function (Resolver) { + var styles = Resolver.create('ephox-cement'); + + return { + resolve: styles.resolve + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.flash.HelpCopy', + + [ + 'ephox.cement.style.Styles', + 'ephox.fred.PlatformDetection', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.InsertAll' + ], + + function (Styles, PlatformDetection, Class, Element, InsertAll) { + + var modifierKey = function () { + var platform = PlatformDetection.detect(); + var mac = platform.os.isOSX(); + return mac ? ['\u2318'] : ['Ctrl']; + }; + + var pressEscape = function (translations) { + return Element.fromHtml( + '<p>' + translations('cement.dialog.flash.press-escape') + '</p>' + ); + }; + + var paste = function (translations) { + var container = Element.fromTag('div'); + Class.add(container, Styles.resolve('flashbin-helpcopy')); + + var key = modifierKey(); + + var instructions = Element.fromHtml( + '<p>' + translations('cement.dialog.flash.trigger-paste') + '</p>'); + var kbd = Element.fromHtml( + '<div>' + + '<span class="ephox-polish-help-kbd">' + + key + + '</span>' + + ' + ' + + '<span class="ephox-polish-help-kbd">V</span>' + + '</div>' + ); + + Class.add(kbd, Styles.resolve('flashbin-helpcopy-kbd')); + + InsertAll.append(container, [ instructions, kbd, pressEscape(translations) ]); + + return container; + }; + + var noflash = function (translations) { + var container = Element.fromTag('div'); + Class.add(container, Styles.resolve('flashbin-helpcopy')); + + var instructions = Element.fromHtml( + '<p>' + translations('cement.dialog.flash.missing') + '</p>' + ); + + InsertAll.append(container, [ instructions, pressEscape(translations) ]); + + return container; + }; + + var indicator = function (translations) { + var loading = Element.fromTag('div'); + Class.add(loading, Styles.resolve('flashbin-loading')); + + var spinner = Element.fromTag('div'); + Class.add(spinner, Styles.resolve('flashbin-loading-spinner')); + + var loadNote = Element.fromTag('p'); + loadNote.dom().innerHTML = translations('loading.wait'); + + InsertAll.append(loading, [spinner, loadNote]); + + return loading; + }; + + return { + paste: paste, + noflash: noflash, + indicator: indicator + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!window", [], function () { return window; }); +(function (define, require, demand) { +define( + 'ephox.sugar.api.Css', + + [ + 'ephox.classify.Type', + 'ephox.compass.Obj', + 'ephox.perhaps.Option', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Body', + 'ephox.sugar.api.Element', + 'ephox.violin.Strings', + 'global!Error', + 'global!console', + 'global!window' + ], + + function (Type, Obj, Option, Attr, Body, Element, Strings, Error, console, window) { + var internalSet = function (dom, property, value) { + // This is going to hurt. Apologies. + // JQuery coerces numbers to pixels for certain property names, and other times lets numbers through. + // we're going to be explicit; strings only. + if (!Type.isString(value)) { + console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); + throw new Error('CSS value must be a string: ' + value); + } + + // removed: support for dom().style[property] where prop is camel case instead of normal property name + dom.style.setProperty(property, value); + }; + + var set = function (element, property, value) { + var dom = element.dom(); + internalSet(dom, property, value); + }; + + var setAll = function (element, css) { + var dom = element.dom(); + + Obj.each(css, function (v, k) { + internalSet(dom, k, v); + }); + }; + + /* + * NOTE: For certain properties, this returns the "used value" which is subtly different to the "computed value" (despite calling getComputedStyle). + * Blame CSS 2.0. + * + * https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + */ + var get = function (element, property) { + var dom = element.dom(); + /* + * IE9 and above per + * https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle + * + * Not in numerosity, because it doesn't memoize and looking this up dynamically in performance critical code would be horrendous. + * + * JQuery has some magic here for IE popups, but we don't really need that. + * It also uses element.ownerDocument.defaultView to handle iframes but that hasn't been required since FF 3.6. + */ + var styles = window.getComputedStyle(dom); + var r = styles.getPropertyValue(property); + + // jquery-ism: If r is an empty string, check that the element is not in a document. If it isn't, return the raw value. + // Turns out we do this a lot. + var v = (r === '' && !Body.inBody(element)) ? getUnsafeProperty(dom, property) : r; + + // undefined is the more appropriate value for JS. JQuery coerces to an empty string, but screw that! + return v === null ? undefined : v; + }; + + var getUnsafeProperty = function (dom, property) { + // removed: support for dom().style[property] where prop is camel case instead of normal property name + return dom.style.getPropertyValue(property); + }; + + /* + * Gets the raw value from the style attribute. Useful for retrieving "used values" from the DOM: + * https://developer.mozilla.org/en-US/docs/Web/CSS/used_value + * + * Returns NONE if the property isn't set, or the value is an empty string. + */ + var getRaw = function (element, property) { + var dom = element.dom(); + var raw = getUnsafeProperty(dom, property); + + return Option.from(raw).filter(function (r) { return r.length > 0; }); + }; + + var isValidValue = function (tag, property, value) { + var element = Element.fromTag(tag); + set(element, property, value); + var style = getRaw(element, property); + return style.isSome(); + }; + + var remove = function (element, property) { + var dom = element.dom(); + /* + * IE9 and above - MDN doesn't have details, but here's a couple of random internet claims + * + * http://help.dottoro.com/ljopsjck.php + * http://stackoverflow.com/a/7901886/7546 + */ + dom.style.removeProperty(property); + + if (Attr.has(element, 'style') && Strings.trim(Attr.get(element, 'style')) === '') { + // No more styles left, remove the style attribute as well + Attr.remove(element, 'style'); + } + }; + + var preserve = function (element, f) { + var oldStyles = Attr.get(element, 'style'); + var result = f(element); + var restore = oldStyles === undefined ? Attr.remove : Attr.set; + restore(element, 'style', oldStyles); + return result; + }; + + var copy = function (source, target) { + target.dom().style.cssText = source.dom().style.cssText; + }; + + var reflow = function (e) { + /* NOTE: + * do not rely on this return value. + * It's here so the closure compiler doesn't optimise the property access away. + */ + return e.dom().offsetWidth; + }; + + return { + copy: copy, + set: set, + preserve: preserve, + setAll: setAll, + remove: remove, + get: get, + getRaw: getRaw, + isValidValue: isValidValue, + reflow: reflow + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!navigator", [], function () { return navigator; }); +(function (define, require, demand) { +define( + 'ephox.cement.flash.FlashInfo', + + [ + 'ephox.cement.flash.HelpCopy', + 'ephox.cement.style.Styles', + 'ephox.fred.PlatformDetection', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'global!navigator' + ], + + function (HelpCopy, Styles, PlatformDetection, Fun, Class, Css, Element, Insert, InsertAll, navigator) { + var platform = PlatformDetection.detect(); + + // separated out to constrain the scope of the JSHint override + var ieFlash = function () { + /* global ActiveXObject */ + return new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); + }; + + var hasFlash = function () { + try { + var flashObj = platform.browser.isIE() ? ieFlash() : navigator.plugins['Shockwave Flash']; + return flashObj !== undefined; + } catch (err) { + return false; + } + }; + + var noflash = function (container, _bin, reflow, translations) { + var help = HelpCopy.noflash(translations); + Insert.append(container, help); + + return { + reset: Fun.noop + }; + }; + + var flash = function (container, bin, reflow, translations) { + var help = HelpCopy.paste(translations); + var indicator = HelpCopy.indicator(translations); + + InsertAll.append(container, [ indicator, help, bin.element() ]); + + var indicatorHide = function () { + /* + X-browser magic that makes the flash blocker/s info display nicely with the cement spinner + */ + Css.setAll(indicator, { + 'height': '0', + 'padding': '0' + }); + }; + + var reset = function () { + Css.set(help, 'display', 'block'); + Css.set(indicator, 'display', 'none'); + reflow(); + }; + + var busy = function () { + Css.set(help, 'display', 'none'); + Css.set(indicator, 'display', 'block'); + Css.remove(indicator, 'height'); + Css.remove(indicator, 'padding'); + reflow(); + }; + + bin.events.spin.bind(busy); + bin.events.reset.bind(reset); + bin.events.hide.bind(indicatorHide); + + return { + reset: reset + }; + }; + + return function (bin, reflow, cementConfig) { + console.log(bin, reflow, cementConfig) + var container = Element.fromTag('div'); + var style = 'flashbin-wrapper-' + (platform.os.isOSX() ? 'cmd' : 'ctrl'); + + Class.add(container, Styles.resolve(style)); + + var loader = hasFlash() ? flash : noflash; + var info = loader(container, bin, reflow, cementConfig.translations); + + return { + element: Fun.constant(container), + reset: info.reset + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!clearInterval", [], function () { return clearInterval; }); +ephox.bolt.module.api.define("global!setInterval", [], function () { return setInterval; }); +(function (define, require, demand) { +define( + 'ephox.cement.alien.WaitForFlash', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'global!clearInterval', + 'global!setInterval' + ], + + function (Type, Arr, clearInterval, setInterval) { + return function (obj, flashFunctions, callback) { + var functionsReady = function (dom) { + // Plugin objects register functions on their DOM node *after* they load, until then they are undefined. + return Arr.forall(flashFunctions, function (name) { + return Type.isFunction(dom[name]); + }); + }; + + var search = function () { + // Sometimes we never get the onload callback, but PercentLoaded reaches 100 indicating it is actually running. + // If that happens, once the functions are available we are good to go. + var dom = obj.dom(); + if (Type.isFunction(dom.PercentLoaded) && dom.PercentLoaded() === 100 && functionsReady(dom)) { + stop(); + callback(); + } + }; + + var waiting = true; + var reference = setInterval(search, 500); + + var stop = function () { + if (waiting) { + clearInterval(reference); + waiting = false; + } + }; + return { + stop: stop + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.epithet.Namespace', + + [ + 'ephox.epithet.Global' + ], + + function (Global) { + var step = function (o, part) { + if (o[part] === undefined || o[part] === null) + o[part] = {}; + return o[part]; + }; + + var namespace = function (name, target) { + var o = target || Global; + var parts = name.split('.'); + for (var i = 0; i < parts.length; ++i) + o = step(o, parts[i]); + return o; + }; + + return { + namespace: namespace + }; + } +); + + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.oilspill.callback.Globaliser', + + [ + 'ephox.epithet.Namespace' + ], + + function (Namespace) { + var install = function (namespace) { + var manager = Namespace.namespace(namespace); + manager.callbacks = {}; + + var count = 0; + var next = function () { + var ref = 'callback_' + count; + count++; + return ref; + }; + + var global = function (ref) { + return namespace + '.callbacks.' + ref; + }; + + var register = function (callback, permanent) { + var ref = next(); + manager.callbacks[ref] = function () { + if (!permanent) unregister(ref); + callback.apply(null, arguments); + }; + return global(ref); + }; + + var ephemeral = function (callback) { + return register(callback, false); + }; + + var permanent = function (callback) { + return register(callback, true); + }; + + var unregister = function (spec) { + var ref = spec.substring(spec.lastIndexOf('.') + 1); + if (manager.callbacks[ref] !== undefined) + delete manager.callbacks[ref]; + }; + + manager.ephemeral = ephemeral; + manager.permanent = permanent; + manager.unregister = unregister; + + return manager; + }; + + return { + install: install + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.PredicateFind', + + [ + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.sugar.api.Body', + 'ephox.sugar.api.Compare', + 'ephox.sugar.api.Element', + 'ephox.sugar.impl.ClosestOrAncestor' + ], + + function (Type, Arr, Fun, Option, Body, Compare, Element, ClosestOrAncestor) { + var first = function (predicate) { + return descendant(Body.body(), predicate); + }; + + var ancestor = function (scope, predicate, isRoot) { + var element = scope.dom(); + var stop = Type.isFunction(isRoot) ? isRoot : Fun.constant(false); + + while (element.parentNode) { + element = element.parentNode; + var el = Element.fromDom(element); + + if (predicate(el)) return Option.some(el); + else if (stop(el)) break; + } + return Option.none(); + }; + + var closest = function (scope, predicate, isRoot) { + // This is required to avoid ClosestOrAncestor passing the predicate to itself + var is = function (scope) { + return predicate(scope); + }; + return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot); + }; + + var sibling = function (scope, predicate) { + var element = scope.dom(); + if (!element.parentNode) return Option.none(); + + return child(Element.fromDom(element.parentNode), function (x) { + return !Compare.eq(scope, x) && predicate(x); + }); + }; + + var child = function (scope, predicate) { + var result = Arr.find(scope.dom().childNodes, + Fun.compose(predicate, Element.fromDom)); + return Option.from(result).map(Element.fromDom); + }; + + var descendant = function (scope, predicate) { + var descend = function (element) { + for (var i = 0; i < element.childNodes.length; i++) { + if (predicate(Element.fromDom(element.childNodes[i]))) + return Option.some(Element.fromDom(element.childNodes[i])); + + var res = descend(element.childNodes[i]); + if (res.isSome()) + return res; + } + + return Option.none(); + }; + + return descend(scope.dom()); + }; + + return { + first: first, + ancestor: ancestor, + closest: closest, + sibling: sibling, + child: child, + descendant: descendant + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.PredicateExists', + + [ + 'ephox.sugar.api.PredicateFind' + ], + + function (PredicateFind) { + var any = function (predicate) { + return PredicateFind.first(predicate).isSome(); + }; + + var ancestor = function (scope, predicate, isRoot) { + return PredicateFind.ancestor(scope, predicate, isRoot).isSome(); + }; + + var closest = function (scope, predicate, isRoot) { + return PredicateFind.closest(scope, predicate, isRoot).isSome(); + }; + + var sibling = function (scope, predicate) { + return PredicateFind.sibling(scope, predicate).isSome(); + }; + + var child = function (scope, predicate) { + return PredicateFind.child(scope, predicate).isSome(); + }; + + var descendant = function (scope, predicate) { + return PredicateFind.descendant(scope, predicate).isSome(); + }; + + return { + any: any, + ancestor: ancestor, + closest: closest, + sibling: sibling, + child: child, + descendant: descendant + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Focus', + + [ + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.sugar.api.Compare', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.PredicateExists', + 'ephox.sugar.api.Traverse', + 'global!document' + ], + + function (Fun, Option, Compare, Element, PredicateExists, Traverse, document) { + var focus = function (element) { + element.dom().focus(); + }; + + var blur = function (element) { + element.dom().blur(); + }; + + var hasFocus = function (element) { + var doc = Traverse.owner(element).dom(); + return element.dom() === doc.activeElement; + }; + + var active = function (_doc) { + var doc = _doc !== undefined ? _doc.dom() : document; + return Option.from(doc.activeElement).map(Element.fromDom); + }; + + var focusInside = function (element) { + // Only call focus if the focus is not already inside it. + var doc = Traverse.owner(element); + var inside = active(doc).filter(function (a) { + return PredicateExists.closest(a, Fun.curry(Compare.eq, element)); + }); + + inside.fold(function () { + focus(element); + }, Fun.noop); + }; + + /** + * Return the descendant element that has focus. + * Use instead of SelectorFind.descendant(container, ':focus') + * because the :focus selector relies on keyboard focus. + */ + var search = function (element) { + return active(Traverse.owner(element)).filter(function (e) { + return element.dom().contains(e.dom()); + }); + }; + + return { + hasFocus: hasFocus, + focus: focus, + blur: blur, + active: active, + search: search, + focusInside: focusInside + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!clearTimeout", [], function () { return clearTimeout; }); +ephox.bolt.module.api.define("global!unescape", [], function () { return unescape; }); +(function (define, require, demand) { +define( + 'ephox.cement.flash.Flashbin', + + [ + 'ephox.cement.alien.WaitForFlash', + 'ephox.cement.style.Styles', + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.epithet.Id', + 'ephox.fred.PlatformDetection', + 'ephox.oilspill.callback.Globaliser', + 'ephox.perhaps.Option', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Focus', + 'ephox.sugar.api.Insert', + 'global!clearTimeout', + 'global!console', + 'global!setTimeout', + 'global!unescape', + 'global!window' + ], + + function (WaitForFlash, Styles, Arr, Obj, Id, PlatformDetection, Globaliser, Option, Event, Events, Class, Css, Element, Focus, Insert, clearTimeout, console, setTimeout, unescape, window) { + var globaliser = Globaliser.install('ephox.flash'); + var platform = PlatformDetection.detect(); + var unbinders = Option.none(); + + return function (swfLoc) { + var events = Events.create({ + response: Event(['rtf']), + spin: Event([]), + cancel: Event([]), + error: Event(['message']), + reset: Event([]), + hide: Event([]) + }); + + var hasLoaded = false; + + var target = Element.fromTag('div'); + Class.add(target, Styles.resolve('flashbin-target')); + + var process = function (rtfData) { + // The setTimeout here is to detach it from the event stack/queue, so that the UI is updated + // during this block. + setTimeout(function () { + events.trigger.response(unescape(rtfData)); + }, 0); + }; + + var loadComplete = function () { + waiting.stop(); + if (hasLoaded) return; + hasLoaded = true; + try { + var dom = bin.dom(); + Obj.each(flashFunctionMapping, function (v, k) { + var f = dom[k]; + f.call(dom, v); // plugin requires 'this' to be set correctly + }); + events.trigger.reset(); + clearOverTime(); + focus(); + } catch (e) { + console.log('Flash dialog - Error during onLoad ', e); + } + }; + + var onloadCallback = globaliser.permanent(loadComplete); + + var flashFunctionMapping = { + 'setSpinCallback': globaliser.permanent(events.trigger.spin), + 'setPasteCallback': globaliser.permanent(process), + 'setEscapeCallback': globaliser.permanent(events.trigger.cancel), + 'setErrorCallback': globaliser.permanent(events.trigger.error) + }; + + var createObject = function () { + var swf = swfLoc.replace(/^https?:\/\//, '//'); + var flashVars = 'onLoad=' + onloadCallback; + + // + // NOTE: the wmode (window mode) of "opaque" here has been suggested as on various forums as + // required to get the swf to focus on Firefox. e.g. + // http://stackoverflow.com/questions/7921690/how-do-i-make-my-flash-object-get-focus-on-load + // This setting did not seem to cause problems on our other supported browsers. + // Please do not return this setting to "transparent" without serious testing. + // + var commonParams = + ' <param name="allowscriptaccess" value="always">' + + ' <param name="wmode" value="opaque">' + + ' <param name="FlashVars" value="' + flashVars + '">'; + + if (platform.browser.isIE() && platform.browser.version.major === 10) { + var id = Id.generate('flash-bin'); + return Element.fromHtml( + '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="' + id + '">' + + '<param name="movie" value="' + swf + '">' + + commonParams + + '</object>'); + } else { + return Element.fromHtml( + '<object type="application/x-shockwave-flash" data="' + swf + '">' + + commonParams + + '</object>'); + } + }; + + var bin = createObject(); + + var binStealth = function () { + Css.setAll(bin, { + 'width' : '2px', + 'height': '2px' + }); + }; + + binStealth(); + var waiting = WaitForFlash(bin, Obj.keys(flashFunctionMapping), loadComplete); + + Insert.append(target, bin); + + var element = function () { + return target; + }; + + var focus = function () { + if (platform.browser.isFirefox()) { + // On Firefox, pasting into flash also fires a paste event wherever the window selection is + window.getSelection().removeAllRanges(); + } + Focus.focus(bin); + }; + + var timerHandle = null; + + var overTime = function () { + Class.add(target, Styles.resolve('flash-activate')); + Css.remove(bin, 'height'); + Css.remove(bin, 'width'); + events.trigger.hide(); + }; + + var clearOverTime = function () { + clearTimeout(timerHandle); + Class.remove(target, Styles.resolve('flash-activate')); + binStealth(); + }; + + var activate = function () { + // TODO: improvement create a custom poll event for .swf has loaded, then fire overtime. + timerHandle = setTimeout(overTime, 3000); + events.trigger.spin(); + Css.set(target, 'display', 'block'); + focus(); + }; + + var deactivate = function () { + Css.set(target, 'display', 'none'); + unbinders.each(function (unbinders) { + Arr.each(unbinders, function (unbinder) { + unbinder.unbind(); + }); + }); + }; + + var destroy = function () { + deactivate(); + Arr.each(Obj.values(flashFunctionMapping), function (s) { + globaliser.unregister(s); + }); + globaliser.unregister(onloadCallback); + waiting.stop(); // in case the user cancels + }; + + return { + focus: focus, + element: element, + activate: activate, + deactivate: deactivate, + destroy: destroy, + events: events.registry + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.impl.FilteredEvent', + + [ + 'ephox.peanut.Fun', + 'ephox.sugar.api.Element' + ], + + function (Fun, Element) { + + var mkEvent = function (target, x, y, stop, prevent, kill, raw) { + // switched from a struct to manual Fun.constant() because we are passing functions now, not just values + return { + 'target': Fun.constant(target), + 'x': Fun.constant(x), + 'y': Fun.constant(y), + 'stop': stop, + 'prevent': prevent, + 'kill': kill, + 'raw': Fun.constant(raw) + }; + }; + + var handle = function (filter, handler) { + return function (rawEvent) { + if (!filter(rawEvent)) return; + + // IE9 minimum + var target = Element.fromDom(rawEvent.target); + + var stop = function () { + rawEvent.stopPropagation(); + }; + + var prevent = function () { + rawEvent.preventDefault(); + }; + + var kill = Fun.compose(prevent, stop); // more of a sequence than a compose, but same effect + + // FIX: Don't just expose the raw event. Need to identify what needs standardisation. + var evt = mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent); + handler(evt); + }; + }; + + var binder = function (element, event, filter, handler, useCapture) { + var wrapped = handle(filter, handler); + // IE9 minimum + element.dom().addEventListener(event, wrapped, useCapture); + + return { + unbind: Fun.curry(unbind, element, event, wrapped, useCapture) + }; + }; + + var bind = function (element, event, filter, handler) { + return binder(element, event, filter, handler, false); + }; + + var capture = function (element, event, filter, handler) { + return binder(element, event, filter, handler, true); + }; + + var unbind = function (element, event, handler, useCapture) { + // IE9 minimum + element.dom().removeEventListener(event, handler, useCapture); + }; + + return { + bind: bind, + capture: capture + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.DomEvent', + + [ + 'ephox.peanut.Fun', + 'ephox.sugar.impl.FilteredEvent' + ], + + function (Fun, FilteredEvent) { + var filter = Fun.constant(true); // no filter on plain DomEvents + + var bind = function (element, event, handler) { + return FilteredEvent.bind(element, event, filter, handler); + }; + + var capture = function (element, event, handler) { + return FilteredEvent.capture(element, event, filter, handler); + }; + + return { + bind: bind, + capture: capture + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.flash.FlashDialog', + + [ + 'ephox.cement.flash.FlashInfo', + 'ephox.cement.flash.Flashbin', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.DomEvent', + 'ephox.sugar.api.Element', + 'global!window' + ], + + function (FlashInfo, Flashbin, Event, Events, DomEvent, Element, window) { + + return function (createDialog, settings) { + var translations = settings.translations; + + var events = Events.create({ + response: Event(['rtf', 'hide']), + cancel: Event([]), + error: Event(['message']) + }); + + var open = function () { + var bin = Flashbin(settings.swf); + bin.deactivate(); + + var win = Element.fromDom(window); + var clickEvent = DomEvent.bind(win, 'mouseup', bin.focus); + + var hide = function () { + destroy(); + }; + + var cancel = function () { + hide(); + events.trigger.cancel(); + }; + + bin.events.cancel.bind(cancel); + bin.events.response.bind(function (event) { + // Don't hide immediately - keep the please wait going until the images are converted + events.trigger.response(event.rtf(), hide); + }); + + bin.events.error.bind(function (event) { + hide(); + events.trigger.error(event.message()); + }); + + var dialog = createDialog(); + dialog.setTitle( translations('cement.dialog.flash.title')); + + var information = FlashInfo(bin, dialog.reflow, settings); + information.reset(); + dialog.setContent(information.element()); + + dialog.events.close.bind(cancel); + dialog.show(); + + bin.activate(); + + var destroy = function () { + clickEvent.unbind(); + dialog.destroy(); + bin.destroy(); + }; + }; + + return { + open: open, + events: events.registry + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Replication', + + [ + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse' + ], + + function (Attr, Element, Insert, InsertAll, Remove, Traverse) { + var clone = function (original, deep) { + return Element.fromDom(original.dom().cloneNode(deep)); + }; + + /** Shallow clone - just the tag, no children */ + var shallow = function (original) { + return clone(original, false); + }; + + /** Deep clone - everything copied including children */ + var deep = function (original) { + return clone(original, true); + }; + + /** Shallow clone, with a new tag */ + var shallowAs = function (original, tag) { + var nu = Element.fromTag(tag); + + var attributes = Attr.clone(original); + Attr.setAll(nu, attributes); + + return nu; + }; + + /** Deep clone, with a new tag */ + var copy = function (original, tag) { + var nu = shallowAs(original, tag); + + // NOTE + // previously this used serialisation: + // nu.dom().innerHTML = original.dom().innerHTML; + // + // Clone should be equivalent (and faster), but if TD <-> TH toggle breaks, put it back. + + var cloneChildren = Traverse.children(deep(original)); + InsertAll.append(nu, cloneChildren); + + return nu; + }; + + /** Change the tag name, but keep all children */ + var mutate = function (original, tag) { + var nu = shallowAs(original, tag); + + Insert.before(original, nu); + var children = Traverse.children(original); + InsertAll.append(nu, children); + Remove.remove(original); + return nu; + }; + + return { + shallow: shallow, + shallowAs: shallowAs, + deep: deep, + copy: copy, + mutate: mutate + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.limbo.api.RtfImage', + + [ + 'ephox.perhaps.Option', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.PredicateFind', + 'ephox.sugar.api.Replication', + 'ephox.sugar.api.SelectorFilter', + 'ephox.violin.Strings' + ], + + function (Option, Attr, Class, Css, Element, Node, PredicateFind, Replication, SelectorFilter, Strings) { + var searchIn = function (comment, selector) { + var innards = Node.value(comment); + var container = Element.fromTag('div'); + var substr = innards.indexOf(']>'); + container.dom().innerHTML = innards.substr(substr + ']>'.length); + // Note: It doesn't look like sizzle can pick up namespaced tags with selectors. + return PredicateFind.descendant(container, function (elem) { + return Node.name(elem) === selector; + }); + }; + + var scour = function (target) { + return Node.isComment(target) ? searchIn(target, 'v:shape') : Option.none(); + }; + + var vshape = function (original) { + return scour(original).map(function (image) { + // NOTE: If we discover more than 2 possible attributes, de-dupe with HtmlPaste somehow + var spid = Attr.get(image, 'o:spid'); + var vShapeId = spid === undefined ? Attr.get(image, 'id') : spid; + + var result = Element.fromTag('img'); + Class.add(result, 'rtf-data-image'); + Attr.set(result, 'data-image-id', vShapeId.substr('_x0000_'.length)); + Attr.set(result, 'data-image-type', 'code'); + Css.setAll(result, { + width: Css.get(image, 'width'), + height: Css.get(image, 'height') + }); + + return result; + }); + }; + + var local = function (original) { + if (Node.name(original) === 'img') { + var src = Attr.get(original, 'src'); + if (src !== undefined && src !== null && Strings.startsWith(src, 'file://')) { + var result = Replication.shallow(original); + var parts = src.split(/[\/\\]/); + var last = parts[parts.length - 1]; + Attr.set(result, 'data-image-id', last); + Attr.remove(result, 'src'); + Attr.set(result, 'data-image-type', 'local'); + Class.add(result, 'rtf-data-image'); + return Option.some(result); + } else { + return Option.none(); + } + } else { + return Option.none(); + } + }; + + var exists = function (container) { + return find(container).length > 0; + }; + + var find = function (container) { + return SelectorFilter.descendants(container, '.rtf-data-image'); + }; + + return { + local: local, + vshape: vshape, + find: find, + exists: exists, + scour: scour + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.flash.Flash', + + [ + 'ephox.bowerbird.api.Rtf', + 'ephox.cement.flash.Correlation', + 'ephox.cement.flash.FlashDialog', + 'ephox.compass.Arr', + 'ephox.limbo.api.RtfImage', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse' + ], + + function (Rtf, Correlation, FlashDialog, Arr, RtfImage, Event, Events, Remove, Traverse) { + return function (createDialog, cementConfig) { + var events = Events.create({ + error: Event(['message']), + insert: Event(['elements', 'assets']) + }); + + var gordon = function (content, baseAssets) { + var response = function (event) { + var hideDialog = event.hide(); + var imageData = Rtf.images(event.rtf()); + var images = RtfImage.find(content); + + Correlation.convert(images, imageData, function (assets) { + events.trigger.insert(Traverse.children(content), assets.concat(baseAssets)); + + // when images are pasted, the flash dialog doesn't automatically hide + hideDialog(); + }); + }; + + var cancelImages = function () { + var images = RtfImage.find(content); + Arr.each(images, Remove.remove); + events.trigger.insert(Traverse.children(content), baseAssets); + }; + + if (cementConfig.allowLocalImages) { + var flash = FlashDialog(createDialog, cementConfig); + flash.events.response.bind(response); + flash.events.cancel.bind(cancelImages); + flash.events.error.bind(function (event) { events.trigger.error(event.message()); }); + flash.open(); + } else { + cancelImages(); + events.trigger.error('errors.local.images.disallowed'); + } + }; + + return { + events: events.registry, + gordon: gordon + }; + + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.smartpaste.MergeSettings', + + [ + 'ephox.cement.style.Styles', + 'ephox.highway.Merger', + 'ephox.peanut.Fun', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert' + ], + + function (Styles, Merger, Fun, Event, Events, Class, Element, Insert) { + return function (createDialog, settings) { + var translations = settings.translations; + + var result = function (value, settings, callback) { + callback(Merger.merge(settings, { + mergeOfficeStyles: value, + mergeHtmlStyles: value + })); + }; + + var events = Events.create({ + open: Event([]), + cancel: Event([]), + close: Event([]) + }); + + var showDialog = function (settings, callback) { + var clean = function () { + hide(); + result(false, settings, callback); + }; + + var merge = function () { + hide(); + result(true, settings, callback); + }; + + var content = Element.fromTag('div'); + + Class.add(content, Styles.resolve('styles-dialog-content')); + + var instructions = Element.fromTag('p'); + var text = Element.fromText(translations('cement.dialog.paste.instructions')); + Insert.append(instructions, text); + Insert.append(content, instructions); + + var cleanButton = { + text: translations('cement.dialog.paste.clean'), + tabindex: 0, + className: Styles.resolve('clean-styles'), + click: clean + }; + var mergeButton = { + text: translations('cement.dialog.paste.merge'), + tabindex: 1, + className: Styles.resolve('merge-styles'), + click: merge + }; + + var dialog = createDialog(true); + dialog.setTitle(translations('cement.dialog.paste.title')); + dialog.setContent(content); + dialog.setButtons([cleanButton, mergeButton]); + dialog.show(); + + var hide = function () { + events.trigger.close(); + dialog.destroy(); + }; + + var cancel = function () { + events.trigger.cancel(); + hide(); + }; + + dialog.events.close.bind(cancel); + + events.trigger.open(); + }; + + var get = function (officePaste, callback) { + var input = officePaste ? 'officeStyles' : 'htmlStyles'; + + var settingToUse = settings[input]; + + if (settingToUse === 'clean') { + result(false, settings, callback); + } else if (settingToUse === 'merge') { + result(true, settings, callback); + } else { + // everything else is prompt + showDialog(settings, callback); + } + }; + + return { + events: events.registry, + get: get, + destroy: Fun.noop + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.smartpaste.Inspection', + + [ + + ], + + function () { + var isValidData = function (data) { + // IE doesn't even have data. Spartan has data, but no types. + return data !== undefined && data.types !== undefined && data.types !== null; + }; + + return { + isValidData: isValidData + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.html.Transform', + + [ + 'ephox.classify.Type', + 'ephox.sugar.api.Attr' + ], + + function (Type, Attr) { + var rotateImage = function (img, vshapeAttrs) { + // MS Word tends to store rotated images as raw with a rotation applied + var style = vshapeAttrs.style; + if (Attr.has(img, 'width') && Attr.has(img, 'height') && Type.isString(style)) { + var rotation = style.match(/rotation:([^;]*)/); + if (rotation !== null && (rotation[1] === '90' || rotation[1] === '-90')) { + // We can't actually rotate the binary data, so just swap the width and height. + // When we decide to rotate the data, we can't do it here. + Attr.setAll(img, { + width: Attr.get(img, 'height'), + height: Attr.get(img, 'width') + }); + } + } + }; + + return { + rotateImage: rotateImage + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Comments', + + [ + 'ephox.fred.PlatformDetection', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Element', + 'global!document' + ], + + function (PlatformDetection, Fun, Element, document) { + + var regularGetNodes = function (texas) { + var ret = []; + while (texas.nextNode() !== null) ret.push(Element.fromDom(texas.currentNode)); + return ret; + }; + + var ieGetNodes = function (texas) { + // IE throws an error on nextNode() when there are zero nodes available, and any attempts I made to detect this + // just resulted in throwing away valid cases + try { + return regularGetNodes(texas); + } catch (e) { + return []; + } + }; + + // I hate needing platform detection in Sugar, but the alternative is to always try/catch which will swallow coding errors as well + var browser = PlatformDetection.detect().browser; + var getNodes = browser.isIE() || browser.isSpartan() ? ieGetNodes : regularGetNodes; + + // Weird, but oh well + var noFilter = Fun.constant(Fun.constant(true)); + + var find = function (node, filterOpt) { + + var vmlFilter = filterOpt.fold(noFilter, function (filter) { + return function (comment) { + return filter(comment.nodeValue); + }; + }); + + // the standard wants an object, IE wants a function. But everything is an object, so let's be sneaky + // http://www.bennadel.com/blog/2607-finding-html-comment-nodes-in-the-dom-using-treewalker.htm + vmlFilter.acceptNode = vmlFilter; + + // TODO: Add NodeFilter to numerosity (requires IE9 so can't be a global import) + var texas = document.createTreeWalker(node.dom(), NodeFilter.SHOW_COMMENT, vmlFilter, false); + + return getNodes(texas); + }; + return { + find: find + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.alien.Comments', + + [ + 'ephox.perhaps.Option', + 'ephox.sugar.api.Comments', + 'ephox.violin.Strings', + 'global!document' + ], + + function (Option, Comments, Strings, document) { + + var find = function (node) { + // TODO: Should this be in lingo? + return Comments.find(node, Option.some(function (value) { + return Strings.startsWith(value, '[if gte vml 1]'); // faster than contains on huge MS office comments + })); + }; + return { + find: find + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.perhaps.Options', + + [ + 'ephox.perhaps.Option' + ], + + function (Option) { + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Option.none(); + }; + + /** + if all elements in arr are 'some', their inner values are passed as arguments to f + f must have arity arr.length + */ + var liftN = function(arr, f) { + var r = []; + for (var i = 0; i < arr.length; i++) { + var x = arr[i]; + if (x.isSome()) { + r.push(x.getOrDie()); + } else { + return Option.none(); + } + }; + return Option.some(f.apply(null, r)); + }; + + return { + cat: cat, + findMap: findMap, + liftN: liftN + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.images.ImageReference', + + [ + 'ephox.cement.alien.Comments', + 'ephox.compass.Arr', + 'ephox.limbo.api.RtfImage', + 'ephox.perhaps.Option', + 'ephox.perhaps.Options', + 'ephox.scullion.Struct', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Elements', + 'ephox.sugar.api.SelectorFilter', + 'global!console' + ], + + function (Comments, Arr, RtfImage, Option, Options, Struct, Attr, Elements, SelectorFilter, console) { + var imgData = Struct.immutable('img', 'vshape'); + + var getImageAttrs = function (image) { + var imgAttrs = getAttrs(image); + imgAttrs._rawElement = image.dom(); + return imgAttrs; + }; + + var getVshapeAttrs = function (vshape) { + var vsAttr = getAttrs(vshape); + vsAttr._rawElement = vshape.dom(); + return vsAttr; + }; + + var getAttrs = function (element) { + return Attr.clone(element); + }; + + var extract = function (raw) { + var nodes = Elements.fromHtml(raw); + var images = Arr.bind(nodes, function (n) { + return SelectorFilter.descendants(n, 'img'); + }); + + var comments = Arr.bind(nodes, Comments.find); + var vshapes = Options.cat(Arr.map(comments, RtfImage.scour)); + + var list = Arr.map(images, function (image) { + return traverse(image, vshapes); + }); + return Options.cat(list); + }; + + var traverse = function (element, vshapes) { + var vshapeTarget = Attr.get(element, 'v:shapes'); + + var vshapeOpt = Option.from(Arr.find(vshapes, function (vshape) { + return Attr.get(vshape, 'id') === vshapeTarget; + })); + + if (vshapeOpt.isNone()) console.log('WARNING: unable to find data for image', element.dom()); + + return vshapeOpt.map(function (vshape) { + return pack(element, vshape); + }); + }; + + var pack = function (img, vshape) { + return imgData( + getImageAttrs(img), + getVshapeAttrs(vshape) + ); + }; + + return { + extract: extract + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.photon.Reader', + + [ + 'ephox.perhaps.Option', + 'ephox.sugar.api.Element' + ], + + function (Option, Element) { + + var iframeDoc = function (element) { + var dom = element.dom(); + try { + var idoc = dom.contentWindow ? dom.contentWindow.document : dom.contentDocument; + return idoc !== undefined && idoc !== null ? Option.some(Element.fromDom(idoc)) : Option.none(); + } catch (err) { + // ASSUMPTION: Permission errors result in an unusable iframe. + console.log('Error reading iframe: ', dom); + console.log('Error was: ' + err); + return Option.none(); + } + }; + + var doc = function (element) { + var optDoc = iframeDoc(element); + return optDoc.fold(function () { + return element; + }, function (v) { + return v; + }); + }; + + return { + doc: doc + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.photon.Writer', + + [ + 'ephox.photon.Reader', + 'ephox.sugar.api.Body' + ], + + function (Reader, Body) { + + var write = function (element, content) { + if (!Body.inBody(element)) throw 'Internal error: attempted to write to an iframe that is not in the DOM'; + + var doc = Reader.doc(element); + var dom = doc.dom(); + dom.open(); + dom.writeln(content); + dom.close(); + }; + + return { + write: write + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Ready', + + [ + 'ephox.sugar.api.DomEvent', + 'ephox.sugar.api.Element', + 'global!document' + ], + + function (DomEvent, Element, document) { + var execute = function (f) { + /* + * We only use this in one place, so creating one listener per ready request is more optimal than managing + * a single event with a queue of functions. + */ + + /* The general spec describes three states: loading, complete, and interactive. + * https://html.spec.whatwg.org/multipage/dom.html#current-document-readiness + * + * loading: the document is not ready (still loading) + * interactive: the document is ready, but sub-resources are still loading + * complete: the document is completely ready. + * + * Note, IE and w3 schools talk about: uninitialized and loaded. We may have to handle them in the future. + */ + if (document.readyState === 'complete' || document.readyState === 'interactive') f(); + else { + // Note that this fires when DOM manipulation is allowed, but before all resources are + // available. This is the best practice but might be a bit weird. + var listener = DomEvent.bind(Element.fromDom(document), 'DOMContentLoaded', function () { // IE9 minimum + f(); + listener.unbind(); + }); + } + }; + + return { + execute: execute + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.keurig.loader.GWTLoader', + + [ + 'ephox.fred.PlatformDetection', + 'ephox.oilspill.callback.Globaliser', + 'ephox.peanut.Fun', + 'ephox.peanut.Thunk', + 'ephox.perhaps.Option', + 'ephox.photon.Writer', + 'ephox.sugar.api.Body', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.DomEvent', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.Ready', + 'ephox.sugar.api.Remove' + ], + + function (PlatformDetection, Globaliser, Fun, Thunk, Option, Writer, Body, Css, DomEvent, Element, Insert, Ready, Remove) { + var globaliser = Globaliser.install('ephox.keurig.init'); + var cleanFunction = Option.none(); + + // IE11 can't handle loading GWT in an iframe, not with the collapse into a single JS file instead of 5 HTML files. + // It seems to load ok in WordTest.html, though, which does it directly - worth thinking about if we ever need GWT in IE. + var load = PlatformDetection.detect().browser.isIE() ? Fun.noop : Thunk.cached(function (baseUrl) { + var container = Element.fromTag('div'); + if (baseUrl === undefined) throw 'baseUrl was undefined'; + + var iframe = Element.fromTag('iframe'); + + Css.setAll(container, { + display: 'none' + }); + + var frameLoad = DomEvent.bind(iframe, 'load', function () { + // called when gwt moudle has finished loading. + var gwtInitCallback = function (cleanDocument) { + cleanFunction = Option.some(cleanDocument); + if (!PlatformDetection.detect().browser.isSafari()) { + // Safari can't handle executing JS in an iframe that has been removed from the page + Remove.remove(container); + } + }; + + var gwtInitRef = globaliser.ephemeral(gwtInitCallback); + var gwtjs = baseUrl + '/wordimport.js'; + + Writer.write(iframe, + '<script type="text/javascript" src="' + gwtjs + '"></script>' + + '<script type="text/javascript">' + + 'function gwtInited () {' + + 'parent.window.' + gwtInitRef + '(com.ephox.keurig.WordCleaner.cleanDocument);' + + '};' + + '</script>'); + frameLoad.unbind(); + }); + + Ready.execute(function () { + Insert.append(Body.body(), container); + Insert.append(container, iframe); + }); + }); + + var cleanDocument = function (wordHTML, merge) { + return cleanFunction.map(function (f) { + // TODO: This should probably do something with the log instead of throwing it away in the Java side + return f(wordHTML, merge); + }); + }; + + var ready = function () { + return cleanFunction.isSome(); + }; + + return { + load: load, + cleanDocument: cleanDocument, + ready: ready + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.keurig.api.WordCleaner', + + [ + 'ephox.keurig.loader.GWTLoader' + ], + + function (GWTLoader) { + return function (baseUrl) { + if (!GWTLoader.ready()) GWTLoader.load(baseUrl); + + return { + cleanDocument: GWTLoader.cleanDocument + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.photon.Sandbox', + + [ + 'ephox.peanut.Fun', + 'ephox.photon.Writer', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.DomEvent', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.Remove', + 'global!setTimeout' + ], + + function (Fun, Writer, Css, DomEvent, Element, Insert, Remove, setTimeout) { + return function (uiContainer) { + /** + * Creates a sandbox to play in. + * + * Asynchronously creates an iframe, runs the synchronous function `f` on the DOM, and then passes the result to the callback. + * + * This is done so that the sandbox can guarantee the iframe has been removed from the page, and available for garbage collection, before the callback is executed. + * + * html: + * source to load into the iframe + * f: (document -> body -> A) + * function that operates on the iframe DOM, passed both document reference and body element + * callback: (A -> Unit) + * function that receives the output of `f` when the iframe has been cleaned up + */ + var play = function (html, f, callback) { + var outputContainer = Element.fromTag('div'); + var iframe = Element.fromTag('iframe'); + + Css.setAll(outputContainer, { + display: 'none' + }); + + var load = DomEvent.bind(iframe, 'load', function () { + Writer.write(iframe, html); + + var rawDoc = iframe.dom().contentWindow.document; + if (rawDoc === undefined) throw "sandbox iframe load event did not fire correctly"; + var doc = Element.fromDom(rawDoc); + + var rawBody = rawDoc.body; + if (rawBody === undefined) throw "sandbox iframe does not have a body"; + var body = Element.fromDom(rawBody); + + // cache + var result = f(doc, body); + + // unbind and remove everything + load.unbind(); + Remove.remove(outputContainer); + + // setTimeout should allow the garbage collector to cleanup if necessary + setTimeout(Fun.curry(callback, result), 0); + }); + Insert.append(outputContainer, iframe); + Insert.append(uiContainer, outputContainer); + }; + + return { + play: play + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.impl.NodeValue', + + [ + 'ephox.perhaps.Option', + 'global!Error' + ], + + function (Option, Error) { + return function (is, name) { + var get = function (element) { + if (!is(element)) throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + return getOption(element).getOr(''); + }; + + var getOption = function (element) { + try { + return is(element) ? Option.some(element.dom().nodeValue) : Option.none(); + } catch (e) { + return Option.none(); // Prevent IE10 from throwing exception when setting parent innerHTML clobbers (TBIO-451). + } + }; + + var set = function (element, value) { + if (!is(element)) throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + element.dom().nodeValue = value; + }; + + return { + get: get, + getOption: getOption, + set: set + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Comment', + + [ + 'ephox.sugar.api.Node', + 'ephox.sugar.impl.NodeValue' + ], + + function (Node, NodeValue) { + var api = NodeValue(Node.isComment, 'comment'); + + var get = function (element) { + return api.get(element); + }; + + var getOption = function (element) { + return api.getOption(element); + }; + + var set = function (element, value) { + api.set(element, value); + }; + + return { + get: get, + getOption: getOption, + set: set + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Html', + + [ + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert' + ], + + function ( Element, Insert) { + var get = function (element) { + return element.dom().innerHTML; + }; + + var set = function (element, content) { + element.dom().innerHTML = content; + }; + + var getOuter = function (element) { + var container = Element.fromTag('div'); + var clone = Element.fromDom(element.dom().cloneNode(true)); + Insert.append(container, clone); + return get(container); + }; + + return { + get: get, + set: set, + getOuter: getOuter + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.vogue.css.Set', + + [ + 'ephox.sugar.api.Insert' + ], + + function (Insert) { + + var setCss = function (style, css, element) { + if (style.dom().styleSheet) + style.dom().styleSheet.cssText = css; // IE + else + Insert.append(style, element); + }; + + return { + setCss: setCss + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.vogue.util.Regex', + + [ + ], + + function () { + var escape = function (text) { + return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); + }; + + return { + escape: escape + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +ephox.bolt.module.api.define("global!RegExp", [], function () { return RegExp; }); +(function (define, require, demand) { +define( + 'ephox.vogue.css.Url', + + [ + 'ephox.compass.Obj', + 'ephox.vogue.util.Regex', + 'global!RegExp' + ], + + function (Obj, Regex, RegExp) { + var replace = function (css, urlPrefix, replacement) { + var r = new RegExp('url\\(\\s*[\'"]?' + Regex.escape(urlPrefix) + '(.*?)[\'"]?\\s*\\)', 'g'); + return css.replace(r, 'url("' + replacement + '$1")'); + }; + + var replaceMany = function (css, replacements) { + var current = css; + Obj.each(replacements, function (value, key) { + current = replace(current, key, value); + }); + return current; + }; + + return { + replace: replace, + replaceMany: replaceMany + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.vogue.api.DocStyle', + + [ + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.SelectorFind', + 'ephox.vogue.css.Set', + 'ephox.vogue.css.Url', + 'global!Array' + ], + + function (Attr, Element, Insert, SelectorFind, Set, Url, Array) { + + var styletag = function (doc) { + var style = Element.fromTag('style', doc.dom()); + Attr.set(style, 'type', 'text/css'); + return style; + }; + + var setCss = function (style, css, doc) { + Set.setCss(style, css, Element.fromText(css, doc.dom())); + }; + + var inject = function (css, replacements, doc) { + var style = styletag(doc); + var replacedCss = replacements === undefined ? css : Url.replaceMany(css, replacements); + setCss(style, replacedCss, doc); + var head = SelectorFind.descendant(doc, 'head').getOrDie(); + Insert.append(head, style); + }; + + var stylesheets = function (doc) { + var domStyleSheets = doc.dom().styleSheets; + return Array.prototype.slice.call(domStyleSheets); + }; + + return { + stylesheets: stylesheets, + inject: inject + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.vogue.css.Rules', + + [ + 'ephox.compass.Arr', + 'ephox.scullion.Struct' + ], + + function (Arr, Struct) { + var ruleStruct = Struct.immutable('selector', 'style'); + + var extract = function (stylesheet) { + var domRules = stylesheet.cssRules; + return Arr.map(domRules, function (rule) { + var selector = rule.selectorText; + var style = rule.style.cssText; + if (style === undefined) { + // This should be picked up in testing, and perhaps delete the check eventually + throw "WARNING: Browser does not support cssText property"; + } + return ruleStruct(selector, style); + }); + }; + + var extractAll = function (stylesheets) { + return Arr.bind(stylesheets, extract); + }; + + return { + extract: extract, + extractAll: extractAll + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.vogue.api.Rules', + + [ + 'ephox.vogue.css.Rules' + ], + + function (Rules) { + var extract = function (stylesheet) { + return Rules.extract(stylesheet); + }; + + var extractAll = function (stylesheets) { + return Rules.extractAll(stylesheets); + }; + + return { + extract: extract, + extractAll: extractAll + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.html.HtmlPaste', + + [ + 'ephox.cement.html.Transform', + 'ephox.cement.images.ImageReference', + 'ephox.classify.Type', + 'ephox.compass.Arr', + 'ephox.keurig.api.WordCleaner', + 'ephox.peanut.Fun', + 'ephox.photon.Sandbox', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Comment', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Elements', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFilter', + 'ephox.sugar.api.Traverse', + 'ephox.vogue.api.DocStyle', + 'ephox.vogue.api.Rules', + 'global!document' + ], + + function (Transform, ImageReference, Type, Arr, WordCleaner, Fun, Sandbox, Event, Events, Attr, Class, Comment, Element, Elements, Html, Remove, SelectorFilter, Traverse, DocStyle, Rules, document) { + var flagAttribute = 'data-textbox-image'; + + var emptyString = function (s) { + return s === undefined || s === null || s.length === 0; + }; + + var stripImageSources = function (html) { + var count = 1; + return html.replace(/(<img[^>]*)src=".*?"/g, function (match, p1, offset) { + // the actual contents are irrelevant, it just needs to be unique + return p1 + flagAttribute + '="' + count++ + '"'; + }); + }; + + var removeFragmentComments = function (body) { + var bodyChildren = Traverse.children(body); + Arr.each(bodyChildren, function (c) { + Comment.getOption(c).each(function (commentText) { + if (commentText === 'StartFragment' || commentText === 'EndFragment') { + Remove.remove(c); + } + }); + }); + }; + + var insertRtfCorrelation = function (sourceImageList, tordImages) { + Arr.each(tordImages, function (img) { + var imageCounter = Attr.get(img, flagAttribute); + Arr.each(sourceImageList, function (imgData) { + var imgAttrs = imgData.img(); + var vshapeAttrs = imgData.vshape(); + if (imgAttrs[flagAttribute] == imageCounter) { + // NOTE: If we discover more than 2 possible attributes, de-dupe with RtfImage somehow + var spid = vshapeAttrs['o:spid']; + var vshapeId = spid === undefined ? vshapeAttrs.id : spid; + + Transform.rotateImage(img, vshapeAttrs); + + Class.add(img, 'rtf-data-image'); + Attr.set(img, 'data-image-id', vshapeId.substr('_x0000_'.length)); + Attr.set(img, 'data-image-type', 'code'); + Attr.remove(img, flagAttribute); + } + }); + }); + }; + + var mergeInlineStyles = function (body, stylesheets) { + var rules = Rules.extractAll(stylesheets); + Arr.each(rules, function (rule) { + + var matchingElements = SelectorFilter.descendants(body, rule.selector()); + + Arr.each(matchingElements, function (element) { + Attr.remove(element, 'class'); + Attr.set(element, 'style', rule.style()); + }); + }); + }; + + var tordPostProcessor = function (sourceImageList, mergeStyles) { + var sandbox = Sandbox(Element.fromDom(document.body)); + return function (dump, callback) { + // loading dump into the sandbox *will* perform some built-in browser cleanup operations, + // we are hoping this is a suitable replacement for the use of HTML Tidy in ELJ. + sandbox.play(dump, function (iframeDoc, body) { + var images = SelectorFilter.descendants(body, 'img'); + + // post-tord DOM filters + removeFragmentComments(body); + insertRtfCorrelation(sourceImageList, images); + if (mergeStyles) { + mergeInlineStyles(body, DocStyle.stylesheets(iframeDoc)); + } + + return Html.get(body); + }, callback); + }; + }; + + var cleanEnd = function (raw) { + // Trim any weirdness that exists after the closing HTML tag. + var i = raw.indexOf('</html>'); + return (i > -1) ? raw.substr(0, i + '</html>'.length) : raw; + }; + + return function (mergeSettings, pasteSettings) { + var cleaner = WordCleaner(pasteSettings.baseUrl); + + var events = Events.create({ + paste: Event(['elements', 'assets']), + error: Event(['message']) + }); + + var handler = function (raw) { + var html = cleanEnd(raw); + // This will only be called if we have word styles, so force true + mergeSettings.get(true, function (settings) { + var mergeStyles = settings.mergeOfficeStyles; + + // remove local file references, so that loading the HTML into a DOM does not trigger console warnings + var safeHtml = stripImageSources(html); + + var sourceImageList = ImageReference.extract(safeHtml); + + var postProcess = tordPostProcessor(sourceImageList, mergeStyles); + + cleaner.cleanDocument(safeHtml, mergeStyles).fold(function () { + events.trigger.error('errors.paste.word.notready'); + }, function (dump) { + if (emptyString(dump)) events.trigger.paste([], []); + else { + // postProcess is basically String -> Future (String) + postProcess(dump, function (tordHtml) { + var elements = Elements.fromHtml(tordHtml); + events.trigger.paste(elements, []); + }); + } + + }); + }); + return true; + }; + + return { + handler: handler, + isSupported: Fun.constant(true), + events: events.registry + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.images.ImagePaste', + + [ + 'ephox.compass.Arr', + 'ephox.fred.PlatformDetection', + 'ephox.hermes.api.ImageAsset', + 'ephox.hermes.api.ImageExtract', + 'ephox.peanut.Fun', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element', + 'global!console' + ], + + function (Arr, PlatformDetection, ImageAsset, ImageExtract, Fun, Event, Events, Attr, Element, console) { + return function (pasteSettings) { + var platform = PlatformDetection.detect(); + var CAPTUTED_EVENT = true; + + //IE & FF handle image paste conversion into base64 data URIs automatically + var isSupported = !platform.browser.isIE() && !platform.browser.isFirefox(); + + var events = Events.create({ + paste: Event(['elements', 'assets']), + error: Event(['message']) + }); + + var readImages = function (assets) { + return Arr.bind(assets, function (asset) { + return ImageAsset.cata(asset, + function (id, file, objurl, data) { + // create an image and inject it at the current selection + var image = Element.fromTag('img'); + Attr.set(image, 'src', objurl); + return image; + }, + function (id, url, raw) { + // TODO: Is this the best way? + console.log('Internal error: Paste operation produced an image URL instead of a Data URI: ', url); + } + ); + }); + }; + + var actualHandler = function (clipboardItems) { + var images = Arr.filter(clipboardItems, function (item) { + return item.kind === 'file' && /image/.test(item.type); + }); + + var files = Arr.map(images, function (image) { + return image.getAsFile(); + }); + + ImageExtract.toAssets(files, function (assets) { + // perform the insert (SmartPaste handles undo and focus trickery) + var elements = readImages(assets); + events.trigger.paste(elements, assets); + }); + //prevent other content from coming through + return CAPTUTED_EVENT; + }; + + var safariHandler = function () { + events.trigger.error('safari.imagepaste'); + // prevent default paste + return CAPTUTED_EVENT; + }; + + var imageDisabled = function () { + events.trigger.error('errors.local.images.disallowed'); + return CAPTUTED_EVENT; + }; + + var imageHandler = platform.browser.isSafari() ? safariHandler : actualHandler; + + var handler = pasteSettings.allowLocalImages ? imageHandler : imageDisabled; + + return { + handler: handler, + isSupported: Fun.constant(isSupported), + events: events.registry + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.api.CementConstants', + + [ + 'ephox.cement.style.Styles', + 'ephox.peanut.Fun' + ], + + function (Styles, Fun) { + + /* + The filter history may not quite work as I would hope. The problem it is likely to + have is that it might be the content's selection as well, which means that we are + changing what is about to used as serialisation ... likely leading to issues. I think + it just only sets valid selections, so it will probably be ok .. but the cursor will + be jarring. + + The paste bin class is added when the paste event is being triggered in the setTimeout. + That may be too late for it not to end up in the undo history, but currently it seems + like it will possibly work. Adding the class directly to the element would be more reliable, + but I haven't thought of a clean enough way to do that yet. + */ + var bin = Styles.resolve('smartpaste-eph-bin'); + + return { + binStyle: Fun.constant(bin) + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.knoch.core.Bounce', + + [ + 'global!Array' + ], + + function (Array) { + + var bounce = function(f) { + return function() { + var args = Array.prototype.slice.call(arguments); + var me = this; + setTimeout(function() { + f.apply(me, args); + }, 0); + }; + }; + + return { + bounce: bounce + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.knoch.core.FutureOps', + + [ + ], + + function () { + + return function (nu, get) { + + /** map :: this Future a -> (a -> b) -> Future b */ + var map = function(fab) { + return nu(function(callback) { + get(function(a) { + callback(fab(a)); + }); + }); + }; + + /** bind :: this Future a -> (a -> Future b) -> Future b */ + var bind = function(aFutureB) { + return nu(function(callback) { + get(function(a) { + aFutureB(a).get(callback); + }); + }); + }; + + /** anonBind :: this Future a -> Future b -> Future b + * Returns a future, which evaluates the first future, ignores the result, then evaluates the second. + */ + var anonBind = function(futureB) { + return nu(function(callback) { + get(function(a) { + futureB.get(callback); + }); + }); + }; + + return { + get: get, + map: map, + bind: bind, + anonBind: anonBind + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.knoch.future.Future', + + [ + 'ephox.compass.Arr', + 'ephox.knoch.core.Bounce', + 'ephox.knoch.core.FutureOps' + ], + + /** A future value that is evaluated on demand. The base function is re-evaluated each time 'get' is called. */ + function (Arr, Bounce, FutureOps) { + + // baseFn is a function(callback) { ... } + var nu = function(baseFn) { + + var get = function(callback) { + baseFn(Bounce.bounce(callback)); + }; + + return FutureOps(nu, get); + }; + + /** [Future a] -> Future [a] */ + var par = function(futures) { + return nu(function(callback) { + var r = []; + var count = 0; + + var cb = function(i) { + return function(value) { + r[i] = value; + count++; + if (count >= futures.length) { + callback(r); + } + }; + }; + + if (futures.length === 0) { + callback([]); + } else { + Arr.each(futures, function(future, i) { + future.get(cb(i)); + }); + } + }); + }; + + /** [a] -> (a -> Future b) -> Future [b] */ + var mapM = function(as, fn) { + return par(Arr.map(as, fn)); + }; + + /** (Future a, Future b) -> ((a, b) -> c) -> Future C + * Executes the two futures in "parallel" with respect to browser JS threading. + */ + var lift2 = function(fa, fb, abc) { + return nu(function(callback) { + var completeA = false; + var completeB = false; + var valueA = undefined; + var valueB = undefined; + + var done = function() { + if (completeA && completeB) { + var c = abc(valueA, valueB); + callback(c); + } + }; + + fa.get(function(a) { + valueA = a; + completeA = true; + done(); + }); + + fb.get(function(b) { + valueB = b; + completeB = true; + done(); + }); + }); + }; + + return { + nu: nu, + par: par, + mapM: mapM, + lift2: lift2 + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.knoch.future.CachedFuture', + + [ + 'ephox.compass.Arr', + 'ephox.highway.Merger', + 'ephox.knoch.core.Bounce', + 'ephox.knoch.core.FutureOps', + 'ephox.knoch.future.Future', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + /** + * A future value. + * The base function is evaluated eagerly, and only evaluated once. + * Each call to 'get' queues a callback, which is invoked when the value is available. + */ + function (Arr, Merger, Bounce, FutureOps, Future, Fun, Option) { + + // f is a function(callback) { ... } + var nu = function (baseFn) { + + var data = Option.none(); + var callbacks = []; + + var get = function (callback) { + isSet() ? call(callback) : callbacks.push(callback); + }; + + var set = function (x) { + data = Option.some(x); + run(callbacks); + callbacks = []; + }; + + var isSet = function() { + return data.isSome(); + }; + + var run = function (cbs) { + Arr.each(cbs, call); + }; + + var call = function(cb) { + data.each(function(x) { + Bounce.bounce(cb)(x); + }); + }; + + Future.nu(baseFn).get(set); + + var ops = FutureOps(nu, get); + + return Merger.merge(ops, { + isSet: isSet + }); + }; + + return { + nu: nu + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.pastiche.IeBlob', + + [ + 'ephox.compass.Arr', + 'ephox.epithet.Resolve', + 'ephox.hermes.api.ImageExtract', + 'ephox.knoch.future.CachedFuture', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + function (Arr, Resolve, ImageExtract, CachedFuture, Fun, Option) { + var convertURL = function (raw) { + return raw.convertURL !== undefined ? raw.convertURL // Use standard if available. + : raw.msConvertURL !== undefined ? raw.msConvertURL + : undefined; + }; + + var convert = function (raw) { + // IE11 defines data on the window, but requires the event to convert... /headdesk + var files = Resolve.resolve('window.clipboardData.files'); + + var convert = convertURL(raw); + + if (files !== undefined && convert !== undefined && files.length > 0) { + var blobs = Arr.map(files, function (file) { + var blob = ImageExtract.blob(file); + convert.apply(raw, [file, 'specified', blob.objurl()]); + + return blob; + }); + + // do the async operation in a future + var future = CachedFuture.nu(function (callback) { + ImageExtract.fromBlobs(blobs, callback); + }); + + // initiate the conversion immediately + future.get(Fun.noop); + + return Option.some(future); + } else { + return Option.none(); + } + }; + + return { + convert: convert + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.api.Situ', + + [ + ], + + function () { + var on = function (element, offset) { + return folder(function (b, o, a) { + return o(element, offset); + }); + }; + + var before = function (element) { + return folder(function (b, o, a) { + return b(element); + }); + }; + + var after = function (element) { + return folder(function (b, o, a) { + return a(element); + }); + }; + + + var folder = function(fold) { + return { + fold: fold + }; + }; + + return { + on: on, + before: before, + after: after + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.api.SelectionRange', + + [ + 'ephox.fussy.api.Situ', + 'ephox.scullion.Struct', + 'ephox.sugar.api.Element' + ], + + function (Situ, Struct, Element) { + var read = Struct.immutable('start', 'soffset', 'finish', 'foffset'); + var general = Struct.immutable('start', 'soffset', 'finish', 'foffset'); + var write = Struct.immutable('start', 'finish'); + + var writeFromNative = function (range) { + var start = Element.fromDom(range.startContainer); + var finish = Element.fromDom(range.endContainer); + return write( + Situ.on(start, range.startOffset), + Situ.on(finish, range.endOffset) + ); + }; + + return { + read: read, + general: general, + write: write, + writeFromNative: writeFromNative + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.api.Supported', + + [ + ], + + function () { + var run = function (win, w3c) { + // this is scaffolding for what was an alternate selection model. + // We now only have one but the concept could be useful later. + if (win.getSelection) return w3c(win, win.getSelection()); + else throw 'No selection model supported.'; + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.DocumentPosition', + + [ + 'ephox.sugar.api.Compare', + 'ephox.sugar.api.Traverse' + ], + + function (Compare, Traverse ) { + var after = function (start, soffset, finish, foffset) { + var doc = Traverse.owner(start); + + // TODO: Find a sensible place to put the native range creation code. + var rng = doc.dom().createRange(); + rng.setStart(start.dom(), soffset); + rng.setEnd(finish.dom(), foffset); + + var same = Compare.eq(start, finish) && soffset === foffset; + return rng.collapsed && !same; + }; + + return { + after: after + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.wwwc.Directions', + + [ + 'ephox.fussy.api.SelectionRange', + 'ephox.sugar.api.DocumentPosition', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Traverse' + ], + + function (SelectionRange, DocumentPosition, Element, Traverse) { + var isReversed = function (model) { + return DocumentPosition.after(Element.fromDom(model.anchorNode), model.anchorOffset, Element.fromDom(model.focusNode), model.focusOffset); + }; + + var flipGet = function (model, range) { + var start = Element.fromDom(range.startContainer); + var finish = Element.fromDom(range.endContainer); + return isReversed(model) ? + SelectionRange.read(finish, range.endOffset, start, range.startOffset) : + SelectionRange.read(start, range.startOffset, finish, range.endOffset); + }; + + var isRtlGet = function (model) { + return isReversed(model); + }; + + var flipSet = function (start, startOffset, end, endOffset) { + return function (model) { + if (model.extend) { + model.collapse(start.dom(), startOffset); + model.extend(end.dom(), endOffset); + } else { + // this is IE... we can’t have a backwards range, so reverse it. + var range = Traverse.owner(start).dom().createRange(); + range.setStart(end.dom(), endOffset); + range.setEnd(start.dom(), startOffset); + model.removeAllRanges(); + model.addRange(range); + } + }; + }; + + var isRtlSet = function (start, startOffset, end, endOffset) { + return DocumentPosition.after(start, startOffset, end, endOffset); + }; + + var read = function () { + return { + flip: flipGet, + isRtl: isRtlGet + }; + }; + + var write = function () { + return { + flip: flipSet, + isRtl: isRtlSet + }; + }; + + return { + read: read, + write: write + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.wwwc.DomRange', + + [ + 'ephox.fussy.api.SelectionRange', + 'ephox.fussy.wwwc.Directions', + 'ephox.perhaps.Option', + 'ephox.sugar.api.DocumentPosition', + 'ephox.sugar.api.Element' + ], + + function (SelectionRange, Directions, Option, DocumentPosition, Element) { + + /* + * The approach here is to create a range using the selection. If it collapses, + * and the inverse of the selection does not collapse ... then it is a backwards + * selection. + */ + var reversed = function (win, selection) { + // Calculate the range going from start -> finish + var startToFinish = toNativeFrom(win, selection.start(), selection.finish()); + // If it is collapsed, there is a chance that it only collapsed because it was RTL + if (startToFinish.collapsed === true) { + // Check that the inverted selection isn't collapsed. + // If the inverted selection is not collapsed ... it is a backwards selection, otherwise it is just collapsed anyway + var finishToStart = toNativeFrom(win, selection.finish(), selection.start()); + return finishToStart.collapsed === true ? Option.none() : Option.some(SelectionRange.general( + Element.fromDom(finishToStart.endContainer), + finishToStart.endOffset, + Element.fromDom(finishToStart.startContainer), + finishToStart.startOffset + )); + } else { + return Option.none(); + } + }; + + var forceRange = function (win, selection) { + var range = toNativeFrom(win, selection.start(), selection.finish()); + return range.collapsed === true ? toNativeFrom(win, selection.finish(), selection.start()) : range; + }; + + var toNativeFrom = function (win, start, finish) { + var range = create(win); + + start.fold(function (e) { + range.setStartBefore(e.dom()); + }, function (e, o) { + range.setStart(e.dom(), o); + }, function (e) { + range.setStartAfter(e.dom()); + }); + + finish.fold(function (e) { + range.setEndBefore(e.dom()); + }, function (e, o) { + range.setEnd(e.dom(), o); + }, function (e) { + range.setEndAfter(e.dom()); + }); + + return range; + }; + + var toNative = function (win, selection) { + return toNativeFrom(win, selection.start(), selection.finish()); + }; + + var toExactNative = function (win, s, so, e, eo) { + var backwards = DocumentPosition.after(s, so, e, eo); + var range = win.document.createRange(); + if (backwards) { + range.setStart(e.dom(), eo); + range.setEnd(s.dom(), so); + } else { + range.setStart(s.dom(), so); + range.setEnd(e.dom(), eo); + } + return range; + }; + + var forwards = function (win, selection) { + var range = toNative(win, selection); + + return function (model) { + model.addRange(range); + }; + }; + + var build = function (win, selection) { + var backwards = reversed(win, selection); + return backwards.fold(function () { + return forwards(win, selection); + }, function (range) { + return Directions.write().flip(range.start(), range.soffset(), range.finish(), range.foffset()); + }); + }; + + var create = function (win) { + return win.document.createRange(); + }; + + return { + create: create, + build: build, + toNative: toNative, + forceRange: forceRange, + toExactNative: toExactNative + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.search.Within', + + [ + 'ephox.compass.Arr', + 'ephox.fussy.wwwc.DomRange', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.SelectorFilter', + 'ephox.sugar.api.Selectors' + ], + + function (Arr, DomRange, Element, Node, SelectorFilter, Selectors) { + // Adapted from: http://stackoverflow.com/questions/5605401/insert-link-in-contenteditable-element + var inRange = function (tempRange, range, element) { + tempRange.selectNodeContents(element.dom()); + return tempRange.compareBoundaryPoints(range.END_TO_START, range) < 1 && tempRange.compareBoundaryPoints(range.START_TO_END, range) > -1; + }; + + var withinContainer = function (win, container, range, selector) { + var tempRange = win.document.createRange(); + var self = Selectors.is(container, selector) ? [ container ] : []; + var elements = self.concat(SelectorFilter.descendants(container, selector)); + return Arr.filter(elements, function (elem) { + return inRange(tempRange, range, elem); + }); + }; + + var find = function (win, raw, selector) { + // Reverse the selection if it is RTL when doing the comparison + var range = DomRange.forceRange(win, raw); + var container = Element.fromDom(range.commonAncestorContainer); + // Note, this might need to change when we have to start looking for non elements. + return Node.isElement(container) ? withinContainer(win, container, range, selector) : []; + }; + + return { + find: find + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.wwwc.Prefilter', + + [ + 'ephox.fussy.api.SelectionRange', + 'ephox.fussy.api.Situ', + 'ephox.sugar.api.Node' + ], + + function (SelectionRange, Situ, Node) { + var beforeBr = function (element, offset) { + return Node.name(element) === 'br' ? Situ.before(element) : Situ.on(element, offset); + }; + + var preprocess = function (selection) { + var start = selection.start().fold(Situ.before, beforeBr, Situ.after); + var finish = selection.finish().fold(Situ.before, beforeBr, Situ.after); + return SelectionRange.write(start, finish); + }; + + return { + preprocess: preprocess + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Fragment', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Element', + 'global!document' + ], + + function (Arr, Element, document) { + var fromElements = function (elements, scope) { + var doc = scope || document; + var fragment = doc.createDocumentFragment(); + Arr.each(elements, function (element) { + fragment.appendChild(element.dom()); + }); + return Element.fromDom(fragment); + }; + + return { + fromElements: fromElements + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.wwwc.WwwcModel', + + [ + 'ephox.fussy.api.SelectionRange', + 'ephox.fussy.wwwc.Directions', + 'ephox.fussy.wwwc.DomRange', + 'ephox.fussy.wwwc.Prefilter', + 'ephox.perhaps.Option', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Fragment' + ], + + function (SelectionRange, Directions, DomRange, Prefilter, Option, Element, Fragment) { + var set = function (raw) { + return function (win, model) { + var selection = Prefilter.preprocess(raw); + var modifier = DomRange.build(win, selection); + if (model !== undefined && model !== null) { + model.removeAllRanges(); + modifier(model); + } + }; + }; + + var selectElementContents = function (element) { + return function (win, model) { + var rng = DomRange.create(win); + rng.selectNodeContents(element.dom()); + model.removeAllRanges(); + model.addRange(rng); + }; + }; + + var normaliseRange = function (win, model) { + // In a multiple rangeset we take the first and the last item in the range, and create a new range model + var first = model.getRangeAt(0); + var last = model.getRangeAt(model.rangeCount - 1); + var range = win.document.createRange(); + range.setStart(first.startContainer, first.startOffset); + range.setEnd(last.endContainer, last.endOffset); + return range; + }; + + var fromNative = function (model, range) { + var start = Element.fromDom(range.startContainer); + var finish = Element.fromDom(range.endContainer); + + return Directions.read().isRtl(model) ? + Directions.read().flip(model, range) : + SelectionRange.read(start, range.startOffset, finish, range.endOffset); + }; + + var getNative = function (win, model) { + return model !== undefined && model !== null && model.rangeCount > 0 ? Option.from(normaliseRange(win, model)) : Option.none(); + }; + + var get = function (win, model) { + var range = getNative(win, model); + return range.map(function (r) { + return fromNative(model, r); + }); + }; + + var replace = function (elements) { + return function (win, model) { + var selection = getNative(win, model); + selection.each(function (range) { + doReplaceRange(win, range, elements); + }); + }; + }; + + var doReplaceRange = function (win, range, elements) { + // Note: this document fragment approach may not work on IE9. + var fragment = Fragment.fromElements(elements, win.document); + range.deleteContents(); + range.insertNode(fragment.dom()); + }; + + var replaceRange = function (raw, elements) { + return function (win, model) { + var selection = Prefilter.preprocess(raw); + // NOTE: This selection has to be LTR, or the range will collapse. + var range = DomRange.toNative(win, selection); + doReplaceRange(win, range, elements); + }; + }; + + var deleteRange = function (s, so, e, eo) { + return function (win, model) { + var rng = DomRange.toExactNative(win, s, so, e, eo); + rng.deleteContents(); + }; + }; + + var cloneFragment = function (s, so, e, eo) { + return function (win, model) { + var rng = DomRange.toExactNative(win, s, so, e, eo); + var fragment = rng.cloneContents(); + return Element.fromDom(fragment); + }; + }; + + var rectangleAt = function (s, so, e, eo) { + return function (win, model) { + var rng = DomRange.toExactNative(win, s, so, e, eo); + var rects = rng.getClientRects(); + // ASSUMPTION: The first rectangle is the start of the selection + var bounds = rects.length > 0 ? rects[0] : rng.getBoundingClientRect(); + return bounds.width > 0 || bounds.height > 0 ? Option.some(bounds) : Option.none(); + }; + }; + + var clearSelection = function (win, model) { + win.getSelection().removeAllRanges(); + }; + + return { + get: get, + set: set, + selectElementContents: selectElementContents, + replace: replace, + replaceRange: replaceRange, + deleteRange: deleteRange, + cloneFragment: cloneFragment, + rectangleAt: rectangleAt, + clearSelection: clearSelection + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.fussy.api.WindowSelection', + + [ + 'ephox.fussy.api.SelectionRange', + 'ephox.fussy.api.Situ', + 'ephox.fussy.api.Supported', + 'ephox.fussy.search.Within', + 'ephox.fussy.wwwc.DomRange', + 'ephox.fussy.wwwc.WwwcModel', + 'ephox.sugar.api.Compare', + 'ephox.sugar.api.Element' + ], + + function (SelectionRange, Situ, Supported, Within, DomRange, WwwcModel, Compare, Element) { + var get = function (win) { + return Supported.run(win, WwwcModel.get); + }; + + var set = function (win, raw) { + Supported.run(win, WwwcModel.set(raw)); + }; + + var setExact = function (win, s, so, e, eo) { + var raw = SelectionRange.write( + Situ.on(s, so), + Situ.on(e, eo) + ); + set(win, raw); + }; + + var selectElementContents = function (win, element) { + Supported.run(win, WwwcModel.selectElementContents(element)); + }; + + var replace = function (win, elements) { + Supported.run(win, WwwcModel.replace(elements)); + }; + + var replaceRange = function (win, raw, elements) { + Supported.run(win, WwwcModel.replaceRange(raw, elements)); + }; + + var deleteRange = function (win, s, so, e, eo) { + Supported.run(win, WwwcModel.deleteRange(s, so, e, eo)); + }; + + var cloneFragment = function (win, s, so, e, eo) { + return Supported.run(win, WwwcModel.cloneFragment(s, so, e, eo)); + }; + + var isCollapsed = function (s, so, e, eo) { + return Compare.eq(s, e) && so === eo; + }; + + var rectangleAt = function (win, s, so, e, eo) { + return Supported.run(win, WwwcModel.rectangleAt(s, so, e, eo)); + }; + + var findWithin = function (win, raw, selector) { + // Note, we don't need the getSelection() model for this. + return Within.find(win, raw, selector); + }; + + var findWithinExact = function (win, s, so, e, eo, selector) { + var raw = SelectionRange.write( + Situ.on(s, so), + Situ.on(e, eo) + ); + // Note, we don't need the getSelection() model for this. + return findWithin(win, raw, selector); + }; + + var deriveExact = function (win, raw) { + var rng = DomRange.forceRange(win, raw); + return SelectionRange.general(Element.fromDom(rng.startContainer), rng.startOffset, Element.fromDom(rng.endContainer), rng.endOffset); + }; + + var clearAll = function (win) { + Supported.run(win, WwwcModel.clearSelection); + }; + + return { + get: get, + set: set, + setExact: setExact, + selectElementContents: selectElementContents, + replace: replace, + replaceRange: replaceRange, + deleteRange: deleteRange, + isCollapsed: isCollapsed, + cloneFragment: cloneFragment, + rectangleAt: rectangleAt, + findWithin: findWithin, + findWithinExact: findWithinExact, + deriveExact: deriveExact, + clearAll: clearAll + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.api.HtmlPatterns', + + [ + + ], + + function () { + return { + validStyles: function () { + return /^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\..*)$/; + }, + specialInline: function () { + return /^(font|em|strong|samp|acronym|cite|code|dfn|kbd|tt|b|i|u|s|sub|sup|ins|del|var|span)$/; + } + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.violin.StringMatch', + + [ + + ], + + function () { + var starts = function (value) { + return folder(function (s, p, c, e, a, n) { + return s(value); + }); + }; + + var pattern = function (regex) { + return folder(function (s, p, c, e, a, n) { + return p(regex); + }); + }; + + var contains = function (value) { + return folder(function (s, p, c, e, a, n) { + return c(value); + }); + }; + + var exact = function (value) { + return folder(function (s, p, c, e, a, n) { + return e(value); + }); + }; + + var all = function () { + return folder(function (s, p, c, e, a, n) { + return a(); + }); + }; + + var not = function (sm) { + return folder(function (s, p, c, e, a, n) { + return n(sm); + }); + }; + + var folder = function (fold) { + var matches = function (str) { + return fold(function (value) { + return str.toLowerCase().indexOf(value.toLowerCase()) === 0; + }, function (regex) { + return regex.test(str.toLowerCase()); + }, function (value) { + return str.toLowerCase().indexOf(value.toLowerCase()) >= 0; + }, function (value) { + return str.toLowerCase() === value.toLowerCase(); + }, function () { + return true; + }, function (other) { + return !other.matches(str); + }); + }; + + return { + fold: fold, + matches: matches + }; + }; + + var cata = function (subject, s, p, c, e, a, n) { + return subject.fold(s, p, c, e, a, n); + }; + + return { + starts: starts, + pattern: pattern, + contains: contains, + exact: exact, + all: all, + not: not, + cata: cata + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.api.RuleMatch', + + [ + 'ephox.peanut.Fun', + 'ephox.sugar.api.Node', + 'ephox.violin.StringMatch' + ], + + function (Fun, Node, StringMatch) { + var keyval = function (element, value, key, rule) { + var ruleName = rule.name; + var ruleCondition = rule.condition !== undefined ? rule.condition : Fun.constant(true); + var ruleValue = rule.value !== undefined ? rule.value : StringMatch.all(); + return ruleName.matches(key) && ruleValue.matches(value) && ruleCondition(element); + }; + + var name = function (element, rule) { + var tag = Node.name(element); + var ruleName = rule.name; + var ruleCondition = rule.condition !== undefined ? rule.condition : Fun.constant(true); + return ruleName.matches(tag) && ruleCondition(element); + }; + + return { + keyval: keyval, + name: name + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.cleanup.AttributeAccess', + + [ + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Attr' + ], + + function (Arr, Obj, Fun, Attr) { + var filter = function (element, predicate) { + var r = {}; + Arr.each(element.dom().attributes, function (a) { + if (!predicate(a.value, a.name)) r[a.name] = a.value; + }); + return r; + }; + + var update = function (element, names, keepers) { + Arr.each(names, function (name) { + Attr.remove(element, name); + }); + + Obj.each(keepers, function (v, k) { + Attr.set(element, k, v); + }); + }; + + var clobber = function (element, supported, _unsupported) { + var names = Arr.map(element.dom().attributes, function (attribute) { + return attribute.name; + }); + + if (Obj.size(supported) !== names.length) update(element, names, supported); + }; + + return { + filter: filter, + clobber: clobber, + // There are no hidden attributes that I know about. + scan: Fun.constant({}) + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.cleanup.StyleAccess', + + [ + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Css', + 'ephox.violin.Strings' + ], + + function (Arr, Obj, Attr, Css, Strings) { + var separate = function (style) { + var css = {}; + var bits = style !== undefined && style !== null ? style.split(';') : []; + Arr.each(bits, function (bit) { + var parts = bit.split(':'); + if (parts.length === 2) { + css[Strings.trim(parts[0])] = Strings.trim(parts[1]); + } + }); + return css; + }; + + var get = function (element, property) { + return element.dom().style.getPropertyValue(property); + }; + + var filter = function (element, predicate) { + var r = {}; + Arr.each(element.dom().style, function (property) { + var value = get(element, property); + if (!predicate(value, property)) r[property] = value; + }); + return r; + }; + + var set = function (element, property, value) { + Css.set(element, property, value); + }; + + // Find the style for any special styles. + var scan = function (element, special, predicate) { + var style = element.dom().getAttribute('style'); + var css = separate(style); + + var before = {}; + Arr.each(special, function (property) { + var value = css[property]; + if (value !== undefined && !predicate(value, property)) before[property] = value; + }); + + return before; + }; + + var serialise = function (unsupported) { + var preserved = Obj.keys(unsupported); + return Arr.map(preserved, function (pre) { + return pre + ': ' + unsupported[pre]; + }).join('; '); + }; + + var clobber = function (element, supported, unsupported) { + Attr.set(element, 'style', ''); + + var numSupported = Obj.size(supported); + var numUnsupported = Obj.size(unsupported); + + if (numSupported === 0 && numUnsupported === 0) Attr.remove(element, 'style'); + else if (numSupported === 0) Attr.set(element, 'style', serialise(unsupported)); + else { + Obj.each(supported, function (v, k) { + set(element, k, v); + }); + + var base = Attr.get(element, 'style'); + var extra = numUnsupported > 0 ? serialise(unsupported) + '; ' : ''; + Attr.set(element, 'style', extra + base); + } + }; + + return { + filter: filter, + clobber: clobber, + scan: scan + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.cleanup.Cleaners', + + [ + 'ephox.pastiche.cleanup.AttributeAccess', + 'ephox.pastiche.cleanup.StyleAccess', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Element' + ], + + function (AttributeAccess, StyleAccess, Fun, Element) { + var special = [ 'mso-list' ]; + + var style = function (element, predicate) { + var unsupported = StyleAccess.scan(element, special, predicate); + var supported = StyleAccess.filter(element, predicate); + StyleAccess.clobber(element, supported, unsupported); + }; + + var attribute = function (element, predicate) { + var keepers = AttributeAccess.filter(element, predicate); + AttributeAccess.clobber(element, keepers, {}); + }; + + var validateStyles = function (element) { + var supported = StyleAccess.filter(element, Fun.constant(false)); + StyleAccess.clobber(element, supported, {}); + }; + + var styleDom = function (dom, predicate) { + style(Element.fromDom(dom), predicate); + }; + + var attributeDom = function (dom, predicate) { + attribute(Element.fromDom(dom), predicate); + }; + + return { + style: style, + attribute: attribute, + styleDom: styleDom, + attributeDom: attributeDom, + validateStyles: validateStyles + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Classes', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Class', + 'global!Array' + ], + + function (Arr, Class, Array) { + /* + * ClassList is IE10 minimum: + * https://developer.mozilla.org/en-US/docs/Web/API/Element.classList + */ + + var add = function (element, classes) { + Arr.each(classes, function (x) { + Class.add(element, x); + }); + }; + + var remove = function (element, classes) { + Arr.each(classes, function (x) { + Class.remove(element, x); + }); + }; + + var toggle = function (element, classes) { + Arr.each(classes, function (x) { + Class.toggle(element, x); + }); + }; + + var hasAll = function (element, classes) { + return Arr.forall(classes, function (clazz) { + return Class.has(element, clazz); + }); + }; + + var hasAny = function (element, classes) { + return Arr.exists(classes, function (clazz) { + return Class.has(element, clazz); + }); + }; + + var get = function (element) { + var classList = element.dom().classList; + var r = new Array(classList.length); + for (var i = 0; i < classList.length; i++) { + r[i] = classList.item(i); + } + return r; + }; + + // set deleted, risks bad performance. Be deterministic. + + return { + add: add, + remove: remove, + toggle: toggle, + hasAll: hasAll, + hasAny: hasAny, + get: get + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.Pipeless', + + [ + 'ephox.compass.Arr', + 'ephox.highway.Merger', + 'ephox.pastiche.api.RuleMatch', + 'ephox.pastiche.cleanup.Cleaners', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Classes', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFilter' + ], + + function (Arr, Merger, RuleMatch, Cleaners, Fun, Attr, Class, Classes, Remove, SelectorFilter) { + var cleaner = function (type, rules, element) { + // Use Cleaners.style or Cleaners.attribute as "type". + type(element, function (value, key) { + return Arr.exists(rules, function (rule) { + return RuleMatch.keyval(element, value, key, rule); + }); + }); + }; + + var remover = function (container, strat) { + var strategy = Merger.merge({ styles: [], attributes: [], classes: [], tags: [] }, strat); + + var elements = SelectorFilter.descendants(container, '*'); + Arr.each(elements, function (element) { + cleaner(Cleaners.style, strategy.styles, element); + cleaner(Cleaners.attribute, strategy.attributes, element); + + Arr.each(strategy.classes, function (rule) { + var actual = Attr.has(element, 'class') ? Classes.get(element) : []; + Arr.each(actual, function (act) { + if (rule.name.matches(act)) Class.remove(element, act); + }); + }); + }); + + // Now, remove the tags. + var postElements = SelectorFilter.descendants(container, '*'); + Arr.each(postElements, function (element) { + var matching = Arr.exists(strategy.tags, Fun.curry(RuleMatch.name, element)); + if (matching) Remove.remove(element); + }); + }; + + var unwrapper = function (container, strat) { + var strategy = Merger.merge({ tags: [] }, strat); + + var elements = SelectorFilter.descendants(container, '*'); + Arr.each(elements, function (element) { + var matching = Arr.exists(strategy.tags, Fun.curry(RuleMatch.name, element)); + if (matching) Remove.unwrap(element); + }); + }; + + var transformer = function (container, strat) { + var strategy = Merger.merge({ tags: [] }, strat); + + var elements = SelectorFilter.descendants(container, '*'); + Arr.each(elements, function (element) { + var rule = Arr.find(strategy.tags, Fun.curry(RuleMatch.name, element)); + if (rule !== undefined && rule !== null) rule.mutate(element); + }); + }; + + var validator = function (container) { + var elements = SelectorFilter.descendants(container, '*'); + Arr.each(elements, function (element) { + Cleaners.validateStyles(element); + }); + }; + + return { + remover: remover, + unwrapper: unwrapper, + transformer: transformer, + validator: validator + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.Token', + + [ + 'ephox.compass.Obj', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element' + ], + + function (Obj, Css, Element) { + var START_ELEMENT_TYPE = 'startElement'; + var END_ELEMENT_TYPE = 'endElement'; + var TEXT_TYPE = 'text'; + var COMMENT_TYPE = 'comment'; + + var token = function(node, endNode, syntheticStyles) { + var tokenType; + var tagName; + var tokenText; + + var element = Element.fromDom(node); + + switch (node.nodeType) { + case 1: + if (endNode) { + tokenType = END_ELEMENT_TYPE; + } else { + tokenType = START_ELEMENT_TYPE; + + Css.setAll(element, syntheticStyles || {}); + } + if (node.scopeName !== "HTML" && node.scopeName && node.tagName && node.tagName.indexOf(':') <= 0) { + tagName = (node.scopeName + ":" + node.tagName).toUpperCase(); + } else { + tagName = node.tagName; + } + + break; + case 3: + tokenType = TEXT_TYPE; + tokenText = node.nodeValue; + break; + case 8: + tokenType = COMMENT_TYPE; + tokenText = node.nodeValue; + break; + default: + console.log("WARNING: Unsupported node type encountered: " + node.nodeType); + break; + } + + var getNode = function() { + return node; + }; + + var tag = function() { + return tagName; + }; + + var type = function() { + return tokenType; + }; + + var text = function() { + return tokenText; + }; + + return { + getNode: getNode, + tag: tag, + type: type, + text: text + }; + }; + + var createStartElement = function(tag, attributes, styles, document) { + var node = document.createElement(tag), css = ""; + + Obj.each(attributes, function(value, name) { + node.setAttribute(name, value); + }); + + return token(node, false, styles); + }; + + var createEndElement = function(tag, document) { + return token(document.createElement(tag), true); + }; + + var createComment = function(text, document) { + return token(document.createComment(text), false); + }; + + var createText = function(text, document) { + return token(document.createTextNode(text)); + }; + + var FINISHED = createEndElement('HTML', window.document); + + return { + START_ELEMENT_TYPE: START_ELEMENT_TYPE, + END_ELEMENT_TYPE: END_ELEMENT_TYPE, + TEXT_TYPE: TEXT_TYPE, + COMMENT_TYPE: COMMENT_TYPE, + FINISHED: FINISHED, + token: token, + createStartElement: createStartElement, + createEndElement: createEndElement, + createComment: createComment, + createText: createText + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.Serialiser', + + [ + 'ephox.pastiche.engine.Token' + ], + + function (Token) { + var create = function (doc) { + var currentNode = doc.createDocumentFragment(); + var initialNode = currentNode; + + var push = function(node) { + append(node); + currentNode = node; + }; + + var pop = function() { + currentNode = currentNode.parentNode; + }; + + var append = function(node) { + currentNode.appendChild(node); + }; + + var receive = function(token) { + var startElement = function(token) { + var node = token.getNode().cloneNode(false); + push(node); + }; + + var text = function(token, serializer) { + // IE7 will crash if you clone a text node that's a URL. + // IE8 throws an invalid argument error. + // So while cloning may be faster, we have to create a new node here. + var node = doc.createTextNode(token.text()); + append(node); + }; + + switch (token.type()) { + case Token.START_ELEMENT_TYPE: + startElement(token); + break; + case Token.TEXT_TYPE: + text(token); + break; + case Token.END_ELEMENT_TYPE: + pop(); + break; + case Token.COMMENT_TYPE: + // Ignore. + break; + default: + throw { message: 'Unsupported token type: ' + token.type() }; + } + }; + + return { + dom: initialNode, + receive: receive, + label: 'SERIALISER' + }; + }; + + return { + create: create + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.Tokeniser', + + [ + 'ephox.pastiche.engine.Token' + ], + + function (Token) { + var tokenise = function(html, document) { + var container; + document = document || window.document; + container = document.createElement('div'); + document.body.appendChild(container); + container.style.position = 'absolute'; + container.style.left = '-10000px'; + container.innerHTML = html; + + nextNode = container.firstChild || Token.FINISHED; + + var nodeStack = []; + endNode = false; + + var getTokenForNode = function(node, endTag) { + if (node === Token.FINISHED) { + return node; + } else if (node) { + return Token.token(node, endTag); + } else { + return undefined; + } + }; + + var next = function() { + var currentNode = nextNode; + var currentEndNode = endNode; + if (!endNode && nextNode.firstChild) { + nodeStack.push(nextNode); + nextNode = nextNode.firstChild; + } else if (!endNode && nextNode.nodeType === 1) { + // Empty element. + endNode = true; + } else if (nextNode.nextSibling) { + nextNode = nextNode.nextSibling; + endNode = false; + } else { + nextNode = nodeStack.pop(); + endNode = true; + } + + if (currentNode !== Token.FINISHED && !nextNode) { + document.body.removeChild(container); + nextNode = Token.FINISHED; + } + + return getTokenForNode(currentNode, currentEndNode); + }; + + var hasNext = function() { + return nextNode !== undefined; + }; + + return { + hasNext: hasNext, + next: next + }; + }; + + return { + tokenise: tokenise + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.Pipeline', + + [ + 'ephox.pastiche.engine.Serialiser', + 'ephox.pastiche.engine.Tokeniser' + ], + + function (Serialiser, Tokeniser) { + var build = function(doc, filters, sink) { + var i, filter = sink; + for (i = filters.length - 1; i >= 0; i--) { + //This is calling the function defined by Filter.createFilter(). + //The best description I can come up with is "function composition using CPS". + //Filters are run in reverse order to the loop, which is reversed so the arrays below define the order. + //And then the sink comes last (which means it's injected on the first pass of the loop). + // filter = filters[i](doc, filter); + + // TEMPORARY: + filter = filters[i](filter, {}, doc); + } + return filter; + }; + + var run = function(doc, content, filters) { + var sink = Serialiser.create(doc); + var tokeniser = Tokeniser.tokenise(content, doc); + var pipeline = build(doc, filters, sink); + while (tokeniser.hasNext()) { + var token = tokeniser.next(); + pipeline.receive(token); + } + return sink.dom; + }; + + return { + build: build, + run: run + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.api.HybridAction', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.engine.Pipeless', + 'ephox.pastiche.engine.Pipeline', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse' + ], + + function (Arr, Pipeless, Pipeline, Element, Html, Remove, Traverse) { + var removal = function (spec) { + return function (container) { + Pipeless.remover(container, spec); + }; + }; + + var unwrapper = function (spec) { + return function (container) { + Pipeless.unwrapper(container, spec); + }; + }; + + var transformer = function (spec) { + return function (container) { + Pipeless.transformer(container, spec); + }; + }; + + var validate = function () { + return function (container) { + Pipeless.validator(container); + }; + }; + + var pipeline = function (pipes) { + return function (container) { + var html = Html.get(container); + var doc = Traverse.owner(container); + var sink = Pipeline.run(doc.dom(), html, pipes); + Remove.empty(container); + container.dom().appendChild(sink); + }; + }; + + var go = function (doc, input, actions) { + var container = Element.fromTag('div', doc.dom()); + container.dom().innerHTML = input; + Arr.each(actions, function (action) { + action(container); + }); + return Html.get(container); + }; + + var isWordContent = function (content) { + return content.indexOf('<o:p>') >= 0 || // IE, Safari, Opera + content.indexOf('p.MsoNormal, li.MsoNormal, div.MsoNormal') >= 0 || // Firefox Mac + content.indexOf('MsoListParagraphCxSpFirst') >= 0 || // Windows list only selection + content.indexOf('<w:WordDocument>') >= 0; // Firefox Windows + }; + + return { + removal: removal, + unwrapper: unwrapper, + transformer: transformer, + validate: validate, + pipeline: pipeline, + isWordContent: isWordContent, + go: go + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.api.RuleConditions', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.PredicateExists' + ], + + function (Arr, Attr, Html, Node, PredicateExists) { + var isNotImage = function (elem) { + return Node.name(elem) !== 'img'; + }; + + var isImportantSpan = function (elem) { + var attrs = elem.dom().attributes; + var hasAttrs = attrs !== undefined && attrs !== null && attrs.length > 0; + return Node.name(elem) === 'span' ? hasAttrs : true; + }; + + var hasContent = function (elem) { + if (!hasNoAttributes(elem)) return true; + else { + return isImportantSpan(elem) && PredicateExists.descendant(elem, function (e) { + var hasAttributes = !hasNoAttributes(e); + var isContentTag = !Arr.contains([ + 'font', 'em', 'strong', 'samp', 'acronym', 'cite', 'code', 'dfn', 'kbd', 'tt', 'b', 'i', + 'u', 's', 'sub', 'sup', 'ins', 'del', 'var', 'span' + ], Node.name(e)); + + return Node.isText(e) || hasAttributes || isContentTag; + }); + } + }; + + var isList = function (elem) { + return Node.name(elem) === 'ol' || Node.name(elem) === 'ul'; + }; + + var isLocal = function (element) { + var src = Attr.get(element, 'src'); + return (/^file:/).test(src); + }; + + var hasNoAttributes = function (elem) { + if (elem.dom().attributes === undefined || elem.dom().attributes === null) return true; + return elem.dom().attributes.length === 0 || (elem.dom().attributes.length === 1 && elem.dom().attributes[0].name === 'style'); + }; + + var isEmpty = function (elem) { + // Note, this means that things with zero width cursors are NOT considered empty + return Html.get(elem).length === 0; + }; + + return { + isNotImage: isNotImage, + hasContent: hasContent, + isList: isList, + isLocal: isLocal, + hasNoAttributes: hasNoAttributes, + isEmpty: isEmpty + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.api.RuleMutations', + + [ + 'ephox.compass.Arr', + 'ephox.compass.Obj', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse' + ], + + function (Arr, Obj, Attr, Css, Element, Html, Insert, InsertAll, Node, Remove, Traverse) { + var changeTag = function (tag, element) { + // We cannot use replication because it uses innerHTML rather than setting the children. + // Which means that any further transformations done to the children are not represented + // in the final output. + var replica = Element.fromTag(tag); + Insert.before(element, replica); + + var attributes = element.dom().attributes; + Arr.each(attributes, function (attr) { + replica.dom().setAttribute(attr.name, attr.value); + }); + + var children = Traverse.children(element); + InsertAll.append(replica, children); + Remove.remove(element); + return replica; + }; + + // Adds a <br> tag to any <p> tags that are empty + var addBrTag = function (element) { + if (Html.get(element).length === 0) { + Insert.append(element, Element.fromTag('br')); + } + }; + + var properlyNest = function (element) { + Traverse.parent(element).each(function (parent) { + var tag = Node.name(parent); + if (Arr.contains([ 'ol', 'ul' ], tag)) { + var li = Element.fromTag('li'); + Css.set(li, 'list-style-type', 'none'); + Insert.wrap(element, li); + } + }); + }; + + var fontToSpan = function (element) { + var span = changeTag('span', element); + var conversions = { + face: 'font-family', + size: 'font-size', + color: 'font-color' + }; + + var values = { + 'font-size': { + '1': '8pt', + '2': '10pt', + '3': '12pt', + '4': '14pt', + '5': '18pt', + '6': '24pt', + '7': '36pt' + } + }; + + Obj.each(conversions, function (style, attribute) { + if (Attr.has(span, attribute)) { + var value = Attr.get(span, attribute); + var cssValue = values[style] !== undefined && values[style][value] !== undefined ? values[style][value] : value; + Css.set(span, style, cssValue); + Attr.remove(span, attribute); + } + }); + }; + + return { + changeTag: changeTag, + addBrTag: addBrTag, + properlyNest: properlyNest, + fontToSpan: fontToSpan + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.Filter', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.engine.Token' + ], + + function (Arr, Token) { + var createFilter = function(actualReceiver, clientReset, label) { + var filter = function(nextFilter, settings, document, _logger) { + var logger = _logger !== undefined ? _logger : []; + + var deferred; + var receivedTokens, emittedTokens, inTransaction = false; + + var resetState = function() { + if (clientReset) clientReset(api); + inTransaction = false; + receivedTokens = []; + emittedTokens = []; + }; + + var emitTokens = function(tokens) { + Arr.each(tokens, function(tok) { + nextFilter.receive(tok); + }); + }; + + var emit = function(token) { + if (inTransaction) { + emittedTokens.push(token); + } else { + nextFilter.receive(token); + } + }; + + var receive = function(token) { + if (clientReset) receivedTokens.push(token); + actualReceiver(api, token); + if (token === Token.FINISHED) { + commit(); + } + }; + + var startTransaction = function() { + inTransaction = true; + }; + + var rollback = function() { + emitTokens(receivedTokens); + resetState(); + }; + + var commit = function() { + emitDeferred(); + emitTokens(emittedTokens); + resetState(); + }; + + var defer = function(token) { + deferred = deferred || []; + deferred.push(token); + }; + + var hasDeferred = function() { + return deferred && deferred.length > 0; + }; + + var emitDeferred = function() { + Arr.each(deferred || [], function(token) { + emit(token); + }); + dropDeferred(); + }; + + var dropDeferred = function() { + deferred = []; + }; + + var api = { + document: document || window.document, + settings: settings || {}, + emit: emit, + receive: receive, + startTransaction: startTransaction, + rollback: rollback, + commit: commit, + defer: defer, + hasDeferred: hasDeferred, + emitDeferred: emitDeferred, + dropDeferred: dropDeferred, + label: label + }; + + resetState(); + return api; + }; + return filter; + }; + + return { + createFilter: createFilter + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.engine.TokenUtil', + + [ + 'ephox.pastiche.cleanup.StyleAccess', + 'ephox.pastiche.engine.Token', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element' + ], + + function (StyleAccess, Token, Fun, Attr, Css, Element) { + var getAttribute = function (token, property) { + var element = Element.fromDom(token.getNode()); + return Attr.get(element, property); + }; + + var getStyle = function (token, property) { + var element = Element.fromDom(token.getNode()); + return Css.get(element, property); + }; + + var isWhitespace = function (token) { + return token.type() === Token.TEXT_TYPE && /^[\s\u00A0]*$/.test(token.text()); + }; + + var getMsoList = function (token) { + var element = Element.fromDom(token.getNode()); + var styles = StyleAccess.scan(element, [ 'mso-list' ], Fun.constant(false)); + return styles['mso-list']; + }; + + return { + getAttribute: getAttribute, + getStyle: getStyle, + isWhitespace: isWhitespace, + getMsoList: getMsoList + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.detect.ListSymbols', + + [ + 'ephox.compass.Arr', + 'ephox.highway.Merger' + ], + + function (Arr, Merger) { + + var orderedListTypes = [ + { regex: /^\(?[dc][\.\)]$/, type: { tag: 'OL', type: 'lower-alpha' } }, + { regex: /^\(?[DC][\.\)]$/, type: { tag: 'OL', type: 'upper-alpha' } }, + { regex: /^\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\.\)]$/, type: { tag: 'OL', type: 'upper-roman' } }, + { regex: /^\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\.\)]$/, type: { tag: 'OL', type: 'lower-roman' } }, + { regex: /^\(?[0-9]+[\.\)]$/, type: { tag: 'OL' } }, + { regex: /^([0-9]+\.)*[0-9]+\.?$/, type: { tag: 'OL', variant: 'outline' } }, + { regex: /^\(?[a-z]+[\.\)]$/, type: { tag: 'OL', type: 'lower-alpha' } }, + { regex: /^\(?[A-Z]+[\.\)]$/, type: { tag: 'OL', type: 'upper-alpha' } } + ]; + + var ulChars = { + '\u2022': { tag: 'UL', type: 'disc' }, + '\u00B7': { tag: 'UL', type: 'disc' }, + '\u00A7': { tag: 'UL', type: 'square' } + }; + + var ulNonSymbolChars = { + 'o': { tag: 'UL', type: 'circle' }, + '-': { tag: 'UL', type: 'disc' }, + '\u25CF': { tag: 'UL', type: 'disc' }, + '�': { tag: 'UL', type: 'circle' } + }; + + var getVariant = function (type, text) { + if (type.variant !== undefined) return type.variant; + else if (text.charAt(0) === '(') return '()'; + else if (text.charAt(text.length - 1) === ')') return ')'; + else return '.'; + }; + + var getStart = function (text) { + var number = parseInt(text, 10); + return isNaN(number) ? { } : { start: number }; + }; + + var match = function (text, inSymbol) { + var nonSymbols = ulNonSymbolChars[text] ? [ ulNonSymbolChars[text] ] : []; + var symbols = inSymbol && ulChars[text] ? [ ulChars[text] ] : inSymbol ? [{ tag: 'UL', variant: text }] : []; + var ordered = Arr.bind(orderedListTypes, function (o) { + return o.regex.test(text) ? [ Merger.merge(o.type, getStart(text), { + variant: getVariant(o.type, text) + })] : []; + }); + + var result = nonSymbols.concat(symbols).concat(ordered); + return Arr.map(result, function (x) { + return x.variant !== undefined ? x : Merger.merge(x, { + variant: text + }); + }); + }; + + return { + match: match + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.detect.ListGuess', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.list.detect.ListSymbols', + 'ephox.perhaps.Option', + 'ephox.violin.Strings' + ], + + function (Arr, ListSymbols, Option, Strings) { + + var guess = function(bulletInfo, preferredType) { + var text = bulletInfo ? Strings.trim(bulletInfo.text) : ''; + var symbolFont = bulletInfo ? !!bulletInfo.symbolFont : false; + var candidates = ListSymbols.match(text, symbolFont); + var preferred = Arr.find(candidates, function (c) { + // The original code only ran preferred types for ordered lists. I have + // no idea whether this is a condition that we want preserved, but one + // of the QUnit tests implicitly stated it is. + return c.tag === 'UL' || (preferredType && eqListType(c, preferredType, true)); + }); + return preferred !== undefined ? Option.some(preferred) : + candidates.length > 0 ? Option.some(candidates[0]) : Option.none(); + }; + + var eqListType = function(t1, t2, ignoreVariant) { + return t1 === t2 || + (t1 && t2 && t1.tag === t2.tag && t1.type === t2.type && + (ignoreVariant || t1.variant === t2.variant)); + }; + + return { + guess: guess, + eqListType: eqListType + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.detect.ListTypes', + + [ + 'ephox.pastiche.engine.Token', + 'ephox.pastiche.engine.TokenUtil', + 'ephox.pastiche.list.detect.ListGuess' + ], + + function (Token, TokenUtil, ListGuess) { + + var guess = function(bulletInfo, preferredType, originalToken) { + var candidate = ListGuess.guess(bulletInfo, preferredType); + return candidate.fold(function () { + return null; + }, function (c) { + if (c.tag === 'OL' && originalToken && (originalToken.tag() !== 'P' || /^MsoHeading/.test(TokenUtil.getAttribute(originalToken, 'class')))) { + // Don't convert numbered headings but do convert bulleted headings. + listType = null; + } else { + return c; + } + }); + }; + + var eqListType = ListGuess.eqListType; + + var checkFont = function(token, symbolFont) { + if (token.type() == Token.START_ELEMENT_TYPE) { + font = TokenUtil.getStyle(token, 'font-family'); + if (font) { + symbolFont = (font === 'Wingdings' || font === 'Symbol'); + } else if (/^(P|H[1-6]|DIV)$/.test(token.tag())) { + symbolFont = false; + } + } + return symbolFont; + }; + + return { + guess: guess, + eqListType: eqListType, + checkFont: checkFont + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Microsoft', + + [ + 'ephox.pastiche.engine.Token', + 'ephox.pastiche.engine.TokenUtil' + ], + + function (Token, TokenUtil) { + var isList = function (state, token) { + var style = TokenUtil.getMsoList(token); + return style && style !== 'skip'; + }; + + var isIgnore = function (state, token) { + return token.type() == Token.START_ELEMENT_TYPE && TokenUtil.getMsoList(token) === 'Ignore'; + }; + + return { + isList: isList, + isIgnore: isIgnore + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Tags', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.engine.Token', + 'ephox.violin.Strings' + ], + + function (Arr, Token, Strings) { + var isStart = function (state, token) { + return token.type() === Token.START_ELEMENT_TYPE; + }; + + var isEnd = function (state, token) { + return token.type() === Token.END_ELEMENT_TYPE; + }; + + var isTag = function (tag) { + return function (state, token) { + return token.tag() === tag; + }; + }; + + var isWhitespace = function (tag) { + return function (state, token) { + return isTag(tag)(state, token) && Strings.trim(token.getNode().textContent) === ''; + }; + }; + + var isStartOf = function (tag) { + return function (state, token) { + return isStart(state, token) && token.tag() === tag; + }; + }; + + var isEndOf = function (tag) { + return function (state, token) { + return isEnd(state, token) && token.tag() === tag; + }; + }; + + var isStartAny = function (tags) { + return function (state, token) { + return isStart(state, token) && Arr.contains(tags, token.tag()); + }; + }; + + var isEndAny = function (tags) { + return function (state, token, tags) { + return isEnd(state, token) && Arr.contains(tags, token.tag()); + }; + }; + + return { + isStart: isStart, + isEnd: isEnd, + isTag: isTag, + isStartOf: isStartOf, + isEndOf: isEndOf, + isStartAny: isStartAny, + isEndAny: isEndAny, + isWhitespace: isWhitespace + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Paragraphs', + + [ + 'ephox.pastiche.inspect.Microsoft', + 'ephox.pastiche.inspect.Tags' + ], + + function (Microsoft, Tags) { + // MOVE ME. + var isNormal = function (state, token) { + return !state.skippedPara.get() && Tags.isStart(state, token, 'P') && !Microsoft.isList(state, token); + }; + + return { + isNormal: isNormal + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Texts', + + [ + 'ephox.pastiche.engine.Token', + 'ephox.pastiche.engine.TokenUtil', + 'ephox.violin.Strings' + ], + + function (Token, TokenUtil, Strings) { + var isWhitespace = function (state, token) { + return is(state, token) && TokenUtil.isWhitespace(token); + }; + + var is = function (state, token) { + return token.type() === Token.TEXT_TYPE; + }; + + var eq = function (value) { + return function (state, token) { + return is(state, token) && token.text() === value; + }; + }; + + var matches = function (value) { + return function (state, token) { + return is(state, token) && value.test(token.text()); + }; + }; + + // CHECK: Is this equivalent to isWhitespace? + var isBlank = function (state, token) { + return is(state, token) && Strings.trim(token.text()) === ''; + }; + + return { + isWhitespace: isWhitespace, + is: is, + isBlank: isBlank, + eq: eq, + matches: matches + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.Handler', + + [ + 'ephox.peanut.Fun' + ], + + function (Fun) { + return function (pred, action, label) { + return { + pred: pred, + action: action, + label: Fun.constant(label) + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.Handlers', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + function (Arr, Fun, Option) { + var logger = function (label, action) { + return function (api, state, token) { + // console.log('LOGGER: ', label, token.getNode().cloneNode(false)); + return action(api, state, token); + }; + }; + + return function (name, handlers, fallback) { + var logFallback = logger(name + ' :: FALLBACK --- ', fallback); + + var r = function (api, state, token) { + // console.log('token: ', token.getNode().cloneNode(true)); + var match = Option.from(Arr.find(handlers, function (x) { + return x.pred(state, token); + })); + + var action = match.fold(Fun.constant(logFallback), function (m) { + var label = m.label(); + return label === undefined ? m.action : logger(name + ' :: ' + label, m.action); + }); + action(api, state, token); + }; + + r.toString = function () { return 'Handlers for ' + name; }; + return r; + }; + + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.state.Transitions', + + [ + ], + + function () { + var next = function (state, listState) { + if (state === undefined || listState === undefined) { + console.trace(); + throw 'brick'; + } + state.nextFilter.set(listState); + }; + + var setNext = function (listState) { + return function (api, state, token) { + next(state, listState); + }; + }; + + var go = function (api, state, token) { + var nextFilter = state.nextFilter.get(); + nextFilter(api, state, token); + }; + + var jump = function (listState) { + return function (api, state, token) { + next(state, listState); + go(api, state, token); + }; + }; + + var isNext = function (state, listState) { + return state.nextFilter.get() === listState; + }; + + return { + next: next, + go: go, + jump: jump, + isNext: isNext, + setNext: setNext + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.AfterListState', + + [ + 'ephox.pastiche.inspect.Paragraphs', + 'ephox.pastiche.inspect.Texts', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Transitions' + ], + + function (Paragraphs, Texts, Handler, Handlers, Transitions) { + var run = function (skipEmptyParaState, noListState) { + + var blankAction = function (api, state, token) { + api.defer(token); + }; + + var normalParaAction = function (api, state, token) { + state.openedTag.set(token); + api.defer(token); + Transitions.next(state, skipEmptyParaState); + }; + + var fallback = function (api, state, token) { + noListState(api, state, token); + }; + + return Handlers('AfterListState', [ + Handler(Texts.isBlank, blankAction, 'blank text'), + Handler(Paragraphs.isNormal, normalParaAction, 'normal paragraph') + ], fallback); + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.States', + + [ + 'ephox.pastiche.engine.Token' + ], + + function (Token) { + // MOVE ME? + var isCloser = function (state, token) { + return token.type() === Token.END_ELEMENT_TYPE && state.originalToken.get() && token.tag() === state.originalToken.get().tag(); + }; + + return { + isCloser: isCloser + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.AfterNoBulletListState', + + [ + 'ephox.pastiche.inspect.States', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Transitions' + ], + + function (States, Handler, Handlers, Transitions) { + var run = function (afterListState) { + + var action = function (api, state, token) { + Transitions.next(state, afterListState); + /* + I think that this should be 0, but it breaks qUnit test cases in powerpaste if it isn't -1. Probably + need to look into it in more detail. The level 0 check in ListModel in the emitter should + take care of it anyway. + */ + state.styleLevelAdjust.set(-1); + api.emit(token); + }; + + var fallback = function (api, state, token) { + api.emit(token); + }; + + return Handlers('AfterNoBullet', [ + Handler(States.isCloser, action, ' closing open tag') + ], fallback); + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Images', + + [ + 'ephox.pastiche.inspect.Tags' + ], + + function (Tags) { + + var isEnd = Tags.isEndOf('IMG'); + var isStart = Tags.isStartOf('IMG'); + + return { + isStart: isStart, + isEnd: isEnd + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Markers', + + [ + 'ephox.pastiche.engine.Token' + ], + + function (Token) { + + var is = function (state, token) { + return token.tag() === 'A' || token.tag() === 'SPAN'; + }; + + var isStart = function (state, token) { + return token.type() === Token.START_ELEMENT_TYPE && is(state, token); + }; + + var isEnd = function (state, token) { + return token.type() === Token.END_ELEMENT_TYPE && is(state, token); + }; + + return { + isStart: isStart, + isEnd: isEnd, + is: is + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.state.Spans', + + [ + 'ephox.pastiche.list.state.Transitions' + ], + + function (Transitions) { + var deferAndPop = function (api, state, token) { + api.defer(token); + pop(api, state, token); + }; + + var deferAndPush = function (api, state, token) { + api.defer(token); + push(api, state, token); + }; + + var push = function (api, state, token) { + state.spanCount.get().push(token); + }; + + var pop = function (api, state, token) { + state.spanCount.get().pop(); + }; + + var pushThen = function (listState) { + return function (api, state, token) { + push(api, state, token); + Transitions.next(state, listState); + }; + }; + + var popThen = function (listState) { + return function (api, state, token) { + pop(api, state, token); + Transitions.next(state, listState); + }; + }; + + return { + deferAndPush: deferAndPush, + deferAndPop: deferAndPop, + push: push, + pop: pop, + pushThen: pushThen, + popThen: popThen + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.BeforeSpacerState', + + [ + 'ephox.pastiche.inspect.Images', + 'ephox.pastiche.inspect.Markers', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Spans', + 'ephox.peanut.Fun' + ], + + function (Images, Markers, Handler, Handlers, Spans, Fun) { + var run = function (spacerState, closeSpansState, unexpectedToken) { + + var fallback = function (api, state, token) { + unexpectedToken(api, token); + }; + + return Handlers('BeforeSpacer', [ + Handler(Markers.isStart, Spans.pushThen(spacerState), 'start marker'), + Handler(Markers.isEnd, Spans.popThen(closeSpansState), 'end marker'), + Handler(Images.isEnd, Fun.noop, 'end image') + ], fallback); + + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Comments', + + [ + 'ephox.pastiche.engine.Token' + ], + + function (Token) { + + var is = function (state, token) { + return token.type() === Token.COMMENT_TYPE; + }; + + var isNotEndIf = function (state, token) { + return is(state, token) && token.text() !== '[endif]'; + }; + + var isEndIf = function (state, token) { + return is(state, token) && token.text() === '[endif]'; + }; + + var isListSupport = function (state, token) { + return is(state, token) && token.text() === '[if !supportLists]'; + }; + + return { + is: is, + isNotEndIf: isNotEndIf, + isEndIf: isEndIf, + isListSupport: isListSupport + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Logic', + + [ + 'ephox.compass.Arr' + ], + + function (Arr) { + var any = function (conditions) { + return function (state, token) { + return Arr.exists(conditions, function (c) { + return c(state, token); + }); + }; + }; + + var all = function (conditions) { + return function (state, token) { + return Arr.forall(conditions, function (c) { + return c(state, token); + }); + }; + }; + + return { + any: any, + all: all + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.CloseSpansState', + + [ + 'ephox.pastiche.inspect.Comments', + 'ephox.pastiche.inspect.Logic', + 'ephox.pastiche.inspect.Markers', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.inspect.Texts', + 'ephox.pastiche.list.detect.ListTypes', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Spans', + 'ephox.pastiche.list.state.Transitions', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.perhaps.Result' + ], + + function (Comments, Logic, Markers, Tags, Texts, ListTypes, Handler, Handlers, Spans, Transitions, Fun, Option, Result) { + var run = function (itemContentState, unexpectedToken) { + + var getListType = function (state) { + var currentType = state.emitter.getCurrentListType(); + var currentLevel = state.emitter.getCurrentLevel(); + // FIX: Don't coerce types. + var preferred = currentLevel == state.itemLevel.get() ? currentType : null; + return Option.from(ListTypes.guess(state.bulletInfo.get(), preferred, state.originalToken.get())); + }; + + var openItem = function (api, state, token) { + state.emitter.openItem(state.itemLevel.get(), state.originalToken.get(), state.listType.get(), state.skippedPara.get()); + api.emitDeferred(); + while (state.spanCount.get().length > 0) { + api.emit(state.spanCount.get().shift()); + } + }; + + var updateState = function (state, token) { + Transitions.next(state, itemContentState); + if (state.commentMode.get()) { + var indent = state.indentGuesser.guessIndentLevel(token, state.originalToken.get(), state.styles, state.bulletInfo.get()); + state.itemLevel.set(indent); + } + }; + + var tryItem = function (api, state, token) { + var listType = getListType(state); + return listType.fold(function () { + state.listType.set(null); + return Result.error("Unknown list type: " + state.bulletInfo.get().text + " Symbol font? " + state.bulletInfo.get().symbolFont); + }, function (type) { + state.listType.set(type); + return Result.value(openItem); + }); + }; + + var updateAndEmit = function (api, state, token) { + updateState(state, token); + var emitter = tryItem(api, state, token); + emitter.fold(function (msg) { + console.log(msg); + api.rollback(); + }, function (x) { + x(api, state, token); + api.emit(token); + }); + }; + + var skipComment = function (api, state, token) { + updateState(state, token); + var emitter = tryItem(api, state, token); + emitter.fold(function (msg) { + console.log(msg); + api.rollback(); + }, function (x) { + x(api, state, token); + }); + }; + + var handlers = [ + Handler(Logic.any([ Texts.is, Tags.isStart ]), updateAndEmit, 'text or start tag'), + Handler(Comments.isNotEndIf, updateAndEmit, 'non-endif comment'), + Handler(Comments.isEndIf, skipComment, 'endif comment'), + Handler(Markers.isEnd, Spans.pop, 'end marker'), + Handler(Tags.isEnd, Fun.noop, 'end tag') + ]; + + return Handlers('CloseSpans', handlers, function (api, state, token) { + unexpectedToken(api, token); + }); + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.FindListTypeState', + + [ + 'ephox.pastiche.inspect.Images', + 'ephox.pastiche.inspect.Markers', + 'ephox.pastiche.inspect.Texts', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Spans', + 'ephox.pastiche.list.state.Transitions', + 'ephox.peanut.Fun' + ], + + function (Images, Markers, Texts, Handler, Handlers, Spans, Transitions, Fun) { + var run = function (beforeSpacerState, unexpectedToken) { + var action = function (bullets) { + return function (api, state, token) { + Transitions.next(state, beforeSpacerState); + state.bulletInfo.set(bullets(state, token)); + }; + }; + + var textAction = action(function (state, token) { + return { + text: token.text(), + symbolFont: state.symbolFont.get() + }; + }); + + var imageAction = action(function (state, token) { + // Custom list image type. We can't access the image so use a normal bullet instead. + // EditLive! may want this to come through as a CSS reference. + return { + text: '\u2202', + symbolFont: true + }; + }); + + var fallback = function (api, state, token) { + unexpectedToken(api, token); + }; + + return Handlers('FindListType', [ + Handler(Texts.isWhitespace, Fun.noop, 'text is whitespace'), + Handler(Texts.is, textAction, 'text'), + Handler(Markers.isStart, Spans.push, 'start marker'), + Handler(Markers.isEnd, Spans.pop, 'end marker'), + Handler(Images.isStart, imageAction, 'start image') + ], fallback); + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.ItemContentState', + + [ + 'ephox.pastiche.inspect.States', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Transitions' + ], + + function (States, Handler, Handlers, Transitions) { + var run = function (afterListState) { + + var closeItem = function (api, state, token) { + Transitions.next(state, afterListState); + state.skippedPara.set(false); + }; + + var handlers = [ + Handler(States.isCloser, closeItem, 'Closing open tag') + ]; + + return Handlers('ItemContentState', handlers, function (api, state, token) { + api.emit(token); + }); + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.state.CommentOff', + + [ + 'ephox.pastiche.inspect.Comments', + 'ephox.pastiche.inspect.Texts' + ], + + function (Comments, Texts) { + var isText = function (state, token) { + return !state.commentMode.get() && Texts.is(state, token); + }; + + var isComment = function (state, token) { + return !state.commentMode.get() && Comments.is(state, token); + }; + + return { + isText: isText, + isComment: isComment + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.state.CommentOn', + + [ + 'ephox.pastiche.engine.TokenUtil', + 'ephox.pastiche.inspect.Comments', + 'ephox.pastiche.inspect.Texts' + ], + + function (TokenUtil, Comments, Texts) { + var isText = function (state, token) { + return state.commentMode.get() && Texts.is(state, token); + }; + + var isComment = function (state, token) { + return state.commentMode.get() && Comments.is(state, token); + }; + + var isUnstyled = function (state, token) { + var style = TokenUtil.getAttribute(token, 'style'); + return state.commentMode.get() && style === "" || style === null; + }; + + return { + isText: isText, + isComment: isComment, + isUnstyled: isUnstyled + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.ListStartState', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.inspect.Logic', + 'ephox.pastiche.inspect.Microsoft', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.inspect.Texts', + 'ephox.pastiche.list.detect.ListSymbols', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.CommentOff', + 'ephox.pastiche.list.state.CommentOn', + 'ephox.pastiche.list.state.Spans', + 'ephox.pastiche.list.state.Transitions', + 'ephox.peanut.Fun' + ], + + function (Arr, Logic, Microsoft, Tags, Texts, ListSymbols, Handler, Handlers, CommentOff, CommentOn, Spans, Transitions, Fun) { + var run = function (findListTypeState, afterNoBulletListState, unexpectedToken) { + + /* In one of the adhoc tests on Word 2007, Win XP ... a span with a massive number of nbsp was + added at the ListStart stage. This was added to jump to the end of it. */ + var skipWhitespace = function () { + return Handlers('TESTER', [ + Handler(Tags.isEndOf('SPAN'), Transitions.setNext(result), 'Finishing span'), + Handler(Texts.isWhitespace, Fun.noop, 'Is whitespace') + ], function (api, state, token) { + unexpectedToken(api, token); + }); + }; + + var noBullet = function (api, state, token) { + // List type without a bullet, we should treat it as a paragraph. + + // What about if it is 1. or something similar? + var start = state.originalToken.get(); + var spans = state.spanCount.get(); + state.emitter.closeAllLists(); + api.emit(start); + Arr.each(spans, api.emit); + api.emit(token); + api.commit(); + state.originalToken.set(start); + Transitions.next(state, afterNoBulletListState); + }; + + var isBulletSymbol = function (s, t) { + return Texts.is(s, t) && ListSymbols.match(t.text(), s.symbolFont.get()).length > 0; + }; + + var result = function (api, state, token) { + if (Microsoft.isIgnore(state, token)) { + Transitions.next(state, findListTypeState); + } + + var r = Handlers('ListStartState', [ + Handler( + Logic.all([ Tags.isStartOf('SPAN'), CommentOn.isUnstyled ]), + Spans.pushThen(findListTypeState), + 'unstyled span' + ), + + // This handler was added due to adhoc Word 2007 XP content. It breaks QUnit tests. + /* Handler(Logic.all([ Tags.isStart, Tags.isWhitespace('SPAN') ]), Transitions.setNext(skipWhitespace()), 'a whitespace tag'), */ + Handler(Tags.isStartOf('SPAN'), Spans.push, 'starting span'), + Handler(Tags.isStartOf('A'), Spans.push, 'starting a'), + Handler(Tags.isEndOf('A'), Spans.pop, 'ending a'), + Handler(CommentOn.isText, Transitions.jump(findListTypeState), 'commentOn -> text'), + // This handler is new. It may be a problem. + Handler(isBulletSymbol, Transitions.jump(findListTypeState), 'mogran :: text is [1-9].'), + Handler(Texts.is, noBullet, 'text'), + Handler(CommentOff.isComment, Fun.noop, 'commentOff -> comment'), + + // This was added to handle more gracefully the images in some of the test data. May be wrong. + Handler(Tags.isStartOf('IMG'), Transitions.jump(findListTypeState), 'mogran :: start image tag') + ], function (api, state, token) { + unexpectedToken(api, token); + }); + + return r(api, state, token); + }; + + result.toString = function () { return 'Handlers for ListStartState'; }; + return result; + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Browser', + + [ + 'ephox.pastiche.engine.Token', + 'ephox.pastiche.inspect.Microsoft', + 'global!document', + 'global!navigator' + ], + + function (Token, Microsoft, document, navigator) { + var supportsCustomStyles = function () { + // Firefox 4 preserves these styles in the DOM, but strips them when pasting. + // Since we can't trigger a paste there's no way to detect this situation apart from sniffing. + if (navigator.userAgent.indexOf('Gecko') > 0 && navigator.userAgent.indexOf('WebKit') < 0) return false; + var div = document.createElement('div'); + try { + div.innerHTML = '<p style="mso-list: Ignore;"> </p>'; + } catch (ex) { + // Can't set innerHTML if we're in XHTML mode so just assume we don't get custom styles. + return false; + } + + var token = Token.token(div.firstChild); + // INVESTIGATE: Does this need to be lowercased? + return Microsoft.isIgnore({}/*state*/, token); + }; + + return { + supportsCustomStyles: supportsCustomStyles + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.detect.ImageList', + + [ + ], + + function () { + var is = function (state, node, symbol) { + var alt = node !== undefined && node !== null && node.getAttribute !== undefined && node.getAttribute !== null ? node.getAttribute('alt') : ''; + // The check here for === * is because we are disabling image lists as they + // interfere with regular images. The one exception where it is reasonable + // to assume it is a list is if the alt text is *. + return !!node && node.tagName === 'IMG' && alt === '*'; + }; + + return { + is: is + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.detect.TextList', + + [ + 'ephox.pastiche.list.detect.ListTypes', + 'ephox.violin.Strings' + ], + + function (ListTypes, Strings) { + var is = function (state, rawNode, symbol) { + var node = rawNode; + var value = node.nodeValue; + if (!Strings.trim(value)) { + // This handles the case where there's a SPAN with nbsps before the bullet such as with roman numerals. + node = node.parentNode.nextSibling; + value = node ? node.nodeValue : ''; + } + + // Real lists have the bullet with NBSPs either side surrounded in a SPAN. If there's anything else, it's not a list. + if (!node || Strings.trim(node.parentNode.textContent) != value) { + return false; + } + listType = ListTypes.guess({ text: value, symbolFont: symbol }, null, state.originalToken.get()); + + if (listType) { + + // Don't convert numbered headings to lists. + var r = !!node.nextSibling && node.nextSibling.tagName === 'SPAN' && /^[\u00A0\s]/.test(node.nextSibling.firstChild.nodeValue) && + (state.openedTag.get().tag() === 'P' || listType.tag === 'UL'); + return r; + } else { + return false; + } + }; + + return { + is: is + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.detect.ListDetect', + + [ + 'ephox.highway.Merger', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.list.detect.ImageList', + 'ephox.pastiche.list.detect.TextList' + ], + + function (Merger, Tags, ImageList, TextList) { + + var update = function (output) { + var node = output.node; + var font = node.style.fontFamily; + return font ? Merger.merge(output, { symbol: (font === 'Wingdings' || font === 'Symbol') }) : output; + }; + + var hasMarkerFirst = function (node) { + return !!node.firstChild && (node.firstChild.tagName === 'SPAN' || node.firstChild.tagName === 'A'); + }; + + var findItem = function (node) { + var output = update({ node: node }); + + var initialEmptyA = node.childNodes.length > 1 && output.node.firstChild.tagName === 'A' && output.node.firstChild.textContent === ''; + output = initialEmptyA ? { node: output.node.childNodes[1], symbol: output.symbol } : output; + + while (hasMarkerFirst(output.node)) { + output = update({ node: output.node.firstChild, symbol: output.symbol }); + } + + return { + node: output.node.firstChild, + symbol: output.symbol + }; + }; + + var isUnofficialList = function (state, token) { + if (!Tags.isStartOf('SPAN')(state, token) || !state.openedTag.get()) return false; + var node = state.openedTag.get().getNode(); + var item = findItem(node); + var detector = item.node && item.node.nodeType === 3 ? TextList : ImageList; + return detector.is(state, item.node, item.symbol); + }; + + return { + isUnofficialList: isUnofficialList + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.inspect.Lists', + + [ + 'ephox.pastiche.engine.TokenUtil', + 'ephox.pastiche.inspect.Browser', + 'ephox.pastiche.inspect.Comments', + 'ephox.pastiche.inspect.Microsoft', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.list.detect.ListDetect', + 'ephox.perhaps.Option' + ], + + function (TokenUtil, Browser, Comments, Microsoft, Tags, ListDetect, Option) { + var getLevel = function (token) { + var msoList = TokenUtil.getMsoList(token); + var lvl = / level([0-9]+)/.exec(msoList); + return lvl && lvl[1] ? Option.some(parseInt(lvl[1], 10)) : Option.none(); + }; + + var isStart = function (state, token) { + return Tags.isStart(state, token) && Microsoft.isList(state, token) && token.tag() !== 'LI'; + }; + + var isValidStart = function (state, token) { + return isStart(state, token) && getLevel(token).isSome(); + }; + + var isInvalidStart = function (state, token) { + return isStart(state, token) && getLevel(token).isNone(); + }; + + var isSpecial = function (state, token) { + var custom = Browser.supportsCustomStyles(); + return !custom && Comments.isListSupport(state, token) || ListDetect.isUnofficialList(state, token); + }; + + return { + getLevel: getLevel, + isStart: isStart, + isValidStart: isValidStart, + isInvalidStart: isInvalidStart, + isSpecial: isSpecial + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.NoListState', + + [ + 'ephox.pastiche.inspect.Lists', + 'ephox.pastiche.inspect.Markers', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Spans', + 'ephox.pastiche.list.state.Transitions' + ], + + function (Lists, Markers, Tags, Handler, Handlers, Spans, Transitions) { + var run = function (lazyListStartState) { + + var startList = function (api, state, token) { + var level = Lists.getLevel(token); + level.each(function (l) { + state.itemLevel.set(l + state.styleLevelAdjust.get()); + // Tokens between lists should be dropped (they're just whitespace anyway) + // however, tokens before a list should be emitted if we find an mso-list style + // since this is the very first token of the list. + var deferring = Transitions.isNext(state, result) ? api.emitDeferred : api.dropDeferred; + deferring(); + + Transitions.next(state, lazyListStartState()); + api.startTransaction(); + state.originalToken.set(token); + state.commentMode.set(false); + }); + }; + + var specialList = function (api, state, token) { + if (Tags.isStartOf('SPAN')(state, token)) { + Spans.push(api, state, token); + } + Transitions.next(state, lazyListStartState()); + api.startTransaction(); + state.originalToken.set(state.openedTag.get()); + state.commentMode.set(true); + state.openedTag.set(null); + api.dropDeferred(); + }; + + var startTag = function (api, state, token) { + if (state.openedTag.get()) { + state.emitter.closeAllLists(); + api.emitDeferred(); + } + state.openedTag.set(token); + api.defer(token); + }; + + var closeOutLists = function (api, state, token) { + state.emitter.closeAllLists(); + api.emitDeferred(); + state.openedTag.set(null); + api.emit(token); + Transitions.next(state, result); + }; + + var result = Handlers('NoListState', [ + Handler(Lists.isValidStart, startList, 'valid list so start it'), + Handler(Lists.isInvalidStart, closeOutLists, 'invalid list so close lists'), + Handler(Lists.isSpecial, specialList, 'special list'), + Handler(Markers.isEnd, Spans.deferAndPop, 'closing marker'), + Handler(Markers.isStart, Spans.deferAndPush, 'starting marker'), + Handler(Tags.isStart, startTag, 'starting tag') + ], closeOutLists); + + return result; + }; + + return { + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.SkipEmptyParaState', + + [ + 'ephox.pastiche.inspect.Browser', + 'ephox.pastiche.inspect.Logic', + 'ephox.pastiche.inspect.Microsoft', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.inspect.Texts', + 'ephox.pastiche.list.detect.ListDetect', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Spans', + 'ephox.pastiche.list.state.Transitions' + ], + + function (Browser, Logic, Microsoft, Tags, Texts, ListDetect, Handler, Handlers, Spans, Transitions) { + var run = function (noListState, lazyAfterListState) { + + var isFirstMarker = function (state, token) { + return Tags.isStartOf('SPAN')(state, token) && state.spanCount.get().length === 0; + }; + + var isNotList = function (state, token) { + return (Browser.supportsCustomStyles() || !ListDetect.isUnofficialList(state, token)) && !Microsoft.isList(state, token); + }; + + var skip = function (api, state, token) { + api.defer(token); + state.skippedPara.set(true); + state.openedTag.set(null); + Transitions.next(state, lazyAfterListState()); + }; + + var defer = function (api, state, token) { + api.defer(token); + }; + + return Handlers('SkipEmptyPara', [ + Handler(Logic.all([ isFirstMarker, isNotList ]), Spans.deferAndPush, 'first marker or not list'), + Handler(Tags.isEndOf('SPAN'), Spans.deferAndPop, 'end span'), + Handler(Tags.isEndOf('P'), skip, 'end p'), + Handler(Tags.isEnd, Transitions.jump(noListState), 'end tag'), + Handler(Texts.isWhitespace, defer, 'whitespace') + ], Transitions.jump(noListState)); + }; + + return { + run: run + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.stage.SpacerState', + + [ + 'ephox.pastiche.inspect.Markers', + 'ephox.pastiche.inspect.Tags', + 'ephox.pastiche.list.stage.Handler', + 'ephox.pastiche.list.stage.Handlers', + 'ephox.pastiche.list.state.Spans', + 'ephox.pastiche.list.state.Transitions', + 'ephox.peanut.Fun' + ], + + function (Markers, Tags, Handler, Handlers, Spans, Transitions, Fun) { + var run = function (closeSpansState) { + return Handlers('Spacer', [ + Handler(Markers.isEnd, Spans.popThen(closeSpansState), 'end marker'), + Handler(Tags.isEnd, Transitions.setNext(closeSpansState), 'end tag') + ], Fun.noop); + }; + + return { + run: run + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.Emission', + + [ + 'ephox.scullion.Struct' + ], + + function (Struct) { + var result = Struct.immutable('state', 'result'); + var value = Struct.immutable('state', 'value'); + var state = Struct.immutable('level', 'type', 'types', 'items'); + + return { + state: state, + value: value, + result: result + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.ItemStack', + + [ + 'ephox.pastiche.list.emit.Emission', + 'ephox.perhaps.Option' + ], + + function (Emission, Option) { + var finish = function (state) { + var stack = state.items().slice(0); + if (stack.length > 0 && stack[stack.length - 1] !== 'P') { + var item = stack[stack.length - 1]; + stack[stack.length - 1] = 'P'; + var newState = Emission.state(state.level(), state.type(), state.types(), stack); + return Emission.value(newState, Option.some(item)); + } else { + return Emission.value(state, Option.none()); + } + }; + + var start = function (state, tag) { + var stack = state.items().slice(0); + var value = tag !== undefined && tag !== 'P' ? Option.some(tag) : Option.none(); + + value.fold(function () { + stack.push('P'); + }, function (v) { + stack.push(v); + }); + + var newState = Emission.state(state.level(), state.type(), state.types(), stack); + return Emission.value(newState, value); + }; + + return { + start: start, + finish: finish + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.ListLevels', + + [ + 'ephox.pastiche.list.emit.Emission' + ], + + function (Emission) { + var moveUntil = function (state, predicate, f) { + var tokens = []; + + var current = state; + while (predicate(current)) { + var acc = f(current); + current = acc.state(); + tokens = tokens.concat(acc.result()); + } + return Emission.result(current, tokens); + }; + + var moveRight = function (state, level, open) { + var predicate = function (s) { + return s.level() < level; + }; + + return moveUntil(state, predicate, open); + }; + + var moveLeft = function (state, level, close) { + var predicate = function (state) { + return state.level() > level; + }; + + return moveUntil(state, predicate, close); + }; + + return { + moveRight: moveRight, + moveLeft: moveLeft, + moveUntil: moveUntil + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.ListItemStyles', + + [ + 'ephox.pastiche.engine.TokenUtil' + ], + + function (TokenUtil) { + + var unsafeFrom = function (token) { + var leftMargin = TokenUtil.getStyle(token, 'margin-left'); + return leftMargin !== undefined && leftMargin !== '0px' ? { 'margin-left': leftMargin } : {}; + }; + + var from = function (token) { + var noToken = { + 'list-style-type': 'none' + }; + + return !token ? noToken : unsafeFrom(token); + }; + + return { + from: from + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.SkippedTokens', + + [ + 'ephox.pastiche.engine.Token', + 'ephox.peanut.Fun' + ], + + function (Token, Fun) { + var para = function (doc) { + return [ + Fun.curry(Token.createStartElement, 'P', {}, {}), + Fun.curry(Token.createText, '\u00A0'), + Fun.curry(Token.createEndElement, 'P') + ]; + }; + + return { + para: para + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.ListTokens', + + [ + 'ephox.pastiche.cleanup.Cleaners', + 'ephox.pastiche.engine.Token', + 'ephox.pastiche.list.detect.ListTypes', + 'ephox.pastiche.list.emit.Emission', + 'ephox.pastiche.list.emit.ItemStack', + 'ephox.pastiche.list.emit.ListItemStyles', + 'ephox.pastiche.list.emit.SkippedTokens', + 'ephox.peanut.Fun' + ], + + function (Cleaners, Token, ListTypes, Emission, ItemStack, ListItemStyles, SkippedTokens, Fun) { + var open = function(state, type, style) { + var attributes = type.start && type.start > 1 ? { start: type.start } : {}; + var level = state.level() + 1; + var listType = type; + var listTypes = state.types().concat([type]); + var result = [ Fun.curry(Token.createStartElement, type.tag, attributes, style) ]; + var newState = Emission.state(level, listType, listTypes, state.items()); + return Emission.result(newState, result); + }; + + var close = function(state) { + var listTypes = state.types().slice(0); + var result = [ Fun.curry(Token.createEndElement, listTypes.pop().tag) ]; + var level = state.level() - 1; + var listType = listTypes[listTypes.length - 1]; + var newState = Emission.state(level, listType, listTypes, state.items()); + return Emission.result(newState, result); + }; + + var shuffle = function (state, type, skippedPara) { + var e1 = close(state); + var extra = skippedPara ? SkippedTokens.para() : []; + var e2 = open(e1.state(), type, type.type ? { 'list-style-type': type.type } : {}); + return Emission.result(e2.state(), e1.result().concat(extra).concat(e2.result())); + }; + + var openItem = function(state, paragraphToken, type, skippedPara) { + var attributes = {}; + var style = ListItemStyles.from(paragraphToken); + + var e1 = state.type() && !ListTypes.eqListType(state.type(), type) ? + shuffle(state, type, skippedPara) : + Emission.result(state, []); + var tokens = [ Fun.curry(Token.createStartElement, 'LI', attributes, style) ]; + + var e2 = ItemStack.start(e1.state(), paragraphToken && paragraphToken.tag()); + var moreTokens = e2.value().map(function (v) { + Cleaners.styleDom(paragraphToken.getNode(), Fun.constant(true)); + return [ Fun.constant(paragraphToken) ]; + }).getOr([]); + + return Emission.result(e2.state(), e1.result().concat(tokens).concat(moreTokens)); + }; + + var closeItem = function(state) { + var li = Fun.curry(Token.createEndElement, 'LI'); + var e1 = ItemStack.finish(state); + var r = e1.value().fold(function () { + return [ li ]; + }, function (item) { + return [ Fun.curry(Token.createEndElement, item), li ]; + }); + return Emission.result(e1.state(), r); + }; + + return { + open: open, + openItem: openItem, + close: close, + closeItem: closeItem + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.ListModel', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.engine.Token', + 'ephox.pastiche.list.emit.Emission', + 'ephox.pastiche.list.emit.ItemStack', + 'ephox.pastiche.list.emit.ListLevels', + 'ephox.pastiche.list.emit.ListTokens', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + function (Arr, Token, Emission, ItemStack, ListLevels, ListTokens, Fun, Option) { + var compose = function (emissions) { + if (emissions.length === 0) throw 'Compose must have at least one element in the list'; + var last = emissions[emissions.length - 1]; + var tokens = Arr.bind(emissions, function (emission) { + return emission.result(); + }); + return Emission.result(last.state(), tokens); + }; + + var closeLevel = function (state) { + var e1 = ListTokens.closeItem(state); + var e2 = ListTokens.close(e1.state()); + return compose([ e1, e2 ]); + }; + + var openLevel = function (state, type, level, paragraphToken) { + var style = state.level() === level - 1 && type.type ? { 'list-style-type': type.type } : {}; + var e1 = ListTokens.open(state, type, style); + var e2 = ListTokens.openItem(e1.state(), e1.state().level() == level ? paragraphToken : undefined, type); + return compose([ e1, e2 ]); + }; + + var sameLevel = function (state, type, paragraphToken, skippedPara) { + var e1 = state.level() > 0 ? ListTokens.closeItem(state) : Emission.result(state, []); + var e2 = ListTokens.openItem(e1.state(), paragraphToken, type, skippedPara); + return compose([ e1, e2 ]); + }; + + var openLevels = function (state, type, level, paragraphToken) { + return ListLevels.moveRight(state, level, function (s) { + return openLevel(s, type, level, paragraphToken); + }); + }; + + var closeLevels = function (state, level) { + return ListLevels.moveLeft(state, level, closeLevel); + }; + + var jumpToLevel = function (state, type, level, paragraphToken) { + var e1 = level > 1 ? ItemStack.finish(state) : Emission.value(state, Option.none()); + var tokens = e1.value().map(function (tag) { + return [ Fun.curry(Token.createEndElement, tag) ]; + }).getOr([]); + + var numLevels = level - e1.state().level(); + var e2 = openLevels(e1.state(), type, level, paragraphToken); + return Emission.result(e2.state(), tokens.concat(e2.result())); + }; + + var openItem = function(state, level, paragraphToken, type, skippedPara) { + var e1 = state.level() > level ? closeLevels(state, level) : Emission.result(state, []); + var e2 = e1.state().level() === level ? + sameLevel(e1.state(), type, paragraphToken, skippedPara) : + jumpToLevel(e1.state(), type, level, paragraphToken); + return compose([ e1, e2 ]); + }; + + var closeAllLists = closeLevels; + + return { + openItem: openItem, + closeAllLists: closeAllLists + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.emit.Emitter', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.list.emit.Emission', + 'ephox.pastiche.list.emit.ListModel' + ], + + function (Arr, Emission, ListModel) { + var impliedULatLevel = [ 'disc', 'circle', 'square' ]; + + var removeImpliedListType = function(type, level) { + if (type.tag === 'UL') { + if (impliedULatLevel[level - 1] === type.type) { + type = { tag: 'UL' }; + } + } + return type; + }; + + return function (api, doc) { + + var state = Emission.state(0, undefined, [], []); + + var emit = function (emission) { + Arr.each(emission.result(), function (x) { + var token = x(doc); + api.emit(token); + }); + }; + + var closeAllLists = function() { + var e1 = ListModel.closeAllLists(state, 0); + state = e1.state(); + emit(e1); + api.commit(); + }; + + var openItem = function(level, paragraphToken, type, skippedPara) { + var style = {}, token; + if (!type) return; + var cleanType = removeImpliedListType(type, level); + var e1 = ListModel.openItem(state, level, paragraphToken, cleanType, skippedPara); + state = e1.state(); + emit(e1); + }; + + var getCurrentLevel = function() { + return state.level(); + }; + var getCurrentListType = function() { + return state.type(); + }; + + return { + closeAllLists: closeAllLists, + openItem: openItem, + getCurrentListType: getCurrentListType, + getCurrentLevel: getCurrentLevel + }; + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.indent.ListIndent', + + [ + 'ephox.compass.Arr', + 'ephox.pastiche.engine.TokenUtil', + 'ephox.violin.Strings', + 'global!Math' + ], + + function (Arr, TokenUtil, Strings, Math) { + var getLeftOffset = function(node, paragraph) { + var parent, child, offset = 0; + parent = node.parentNode; + while (parent !== null && parent !== paragraph.parentNode) { + offset += parent.offsetLeft; + parent = parent.offsetParent; + } + return offset; + }; + + var ephoxGetComputedStyle = function(node) { + if (node.ownerDocument.defaultView) { + return node.ownerDocument.defaultView.getComputedStyle(node, null); + } + return node.currentStyle || {}; + }; + + + /** A simplified memoize function which only supports one or two function parameters. + * + * @param fn + * @param param the funtion p + * @returns + */ + var memoize2 = function(fn) { + var cache = {}; + return function(param1, param2) { + var result, key = param1 + "," + param2; + if (cache.hasOwnProperty(key)) { + return cache[key]; + } + result = fn.call(null, param1, param2); + cache[key] = result; + return result; + }; + }; + + var findStyles = memoize2(function(css, className) { + var results, matcher = /([^{]+){([^}]+)}/g, match, el, computedStyle; + matcher.lastIndex = 0; // Firefox Mac reuses the same regex so we need to reset it. + while ((results = matcher.exec(css)) !== null && !match) { + Arr.each(results[1].split(','), function(selector) { + var dotIndex = selector.indexOf('.'); + if (dotIndex >= 0 && Strings.trim(selector.substring(dotIndex + 1)) === className) { + match = results[2]; + return false; + } + }); + } + if (match) { + el = document.createElement('p'); + el.setAttribute("style", match); + computedStyle = ephoxGetComputedStyle(el); + return computedStyle ? "" + computedStyle.marginLeft : false; + } + return false; + }); + + var indentGuesser = function() { + + var listIndentAdjust; + var listIndentAmount; + var guessIndentLevel = function(currentToken, token, styles, bulletInfo) { + var indentAmount, itemIndent, el, level = 1; + + if (bulletInfo && /^([0-9]+\.)+[0-9]+\.?$/.test(bulletInfo.text)) { + // Outline list type so we can just count the number of sections. + return bulletInfo.text.replace(/([0-9]+|\.$)/g, '').length + 1; + } + indentAmount = listIndentAmount || parseInt(findStyles(styles, TokenUtil.getAttribute(token, 'class'))); + + itemIndent = getLeftOffset(currentToken.getNode(), token.getNode()); + if (!indentAmount) { + indentAmount = 48; + } else { + // We might get a 0 item indent if the list CSS code wasn't pasted as happens on Windows. + if (listIndentAdjust) { + itemIndent += listIndentAdjust; + } else if (itemIndent === 0) { + listIndentAdjust = indentAmount; + itemIndent += indentAmount; + } + } + listIndentAmount = indentAmount = Math.min(itemIndent, indentAmount); + level = Math.max(1, Math.floor(itemIndent / indentAmount)) || 1; + return level; + }; + return { + guessIndentLevel: guessIndentLevel + }; + }; + + return { + indentGuesser: indentGuesser + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.state.ListStyles', + + [ + 'ephox.pastiche.engine.Token' + ], + + function (Token) { + return function () { + var inStyle = false; + var styles = ""; + var check = function(token) { + if (inStyle && token.type() === Token.TEXT_TYPE) { + styles += token.text(); + return true; + } else if (token.type() === Token.START_ELEMENT_TYPE && token.tag() === 'STYLE') { + inStyle = true; + return true; + } else if (token.type() === Token.END_ELEMENT_TYPE && token.tag() === 'STYLE') { + inStyle = false; + return true; + } + return false; + }; + return { + check: check + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.scullion.Cell', + + [ + ], + + function () { + var Cell = function (initial) { + var value = initial; + + var get = function () { + return value; + }; + + var set = function (v) { + value = v; + }; + + var clone = function () { + return Cell(get()); + }; + + return { + get: get, + set: set, + clone: clone + }; + }; + + return Cell; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.list.state.ListState', + + [ + 'ephox.pastiche.list.emit.Emitter', + 'ephox.pastiche.list.indent.ListIndent', + 'ephox.pastiche.list.state.ListStyles', + 'ephox.peanut.Fun', + 'ephox.scullion.Cell' + ], + + function (Emitter, ListIndent, ListStyles, Fun, Cell) { + + var indentGuesser = ListIndent.indentGuesser(); + var styles = ListStyles(); + + + var emitter = { + getCurrentListType: function () { + return lazyEmitter().getCurrentListType(); + }, + getCurrentLevel: function () { + return lazyEmitter().getCurrentLevel(); + }, + closeAllLists: function () { + return lazyEmitter().closeAllLists.apply(undefined, arguments); + }, + openItem: function () { + return lazyEmitter().openItem.apply(undefined, arguments); + } + }; + + var lazyEmitter = function () { + return { + getCurrentListType: Fun.constant({}), + getCurrentLevel: Fun.constant(1), + closeAllLists: Fun.identity, + openItem: Fun.identity + }; + }; + + return function (initialState) { + var nextFilter = Cell(initialState); + var itemLevel = Cell(0); + var originalToken = Cell(null); + var commentMode = Cell(false); + var openedTag = Cell(null); + var symbolFont = Cell(false); + var listType = Cell(null); + var spanCount = Cell([]); + var skippedPara = Cell(false); + var styleLevelAdjust = Cell(0); + var bulletInfo = Cell(undefined); + var logger = Cell([]); + + var reset = function (api) { + nextFilter.set(initialState); + itemLevel.set(0); + originalToken.set(null); + commentMode.set(false); + openedTag.set(null); + symbolFont.set(false); + listType.set(null); + spanCount.set([]); + skippedPara.set(false); + styleLevelAdjust.set(0); + bulletInfo.set(undefined); + logger.set([]); + + // ASSUMPTION: I think this approach in the past also papered over the stack needing resetting in the emitter. + _emitter = Emitter(api, api.document); + lazyEmitter = Fun.constant(_emitter); + }; + + return { + reset: reset, + nextFilter: nextFilter, + itemLevel: itemLevel, + originalToken: originalToken, + commentMode: commentMode, + openedTag: openedTag, + symbolFont: symbolFont, + listType: listType, + spanCount: spanCount, + skippedPara: skippedPara, + styleLevelAdjust: styleLevelAdjust, + bulletInfo: bulletInfo, + logger: logger, + + emitter: emitter, + styles: styles, + indentGuesser: indentGuesser + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.pastiche.filter.Lists', + + [ + 'ephox.pastiche.engine.Filter', + 'ephox.pastiche.list.detect.ListTypes', + 'ephox.pastiche.list.stage.AfterListState', + 'ephox.pastiche.list.stage.AfterNoBulletListState', + 'ephox.pastiche.list.stage.BeforeSpacerState', + 'ephox.pastiche.list.stage.CloseSpansState', + 'ephox.pastiche.list.stage.FindListTypeState', + 'ephox.pastiche.list.stage.ItemContentState', + 'ephox.pastiche.list.stage.ListStartState', + 'ephox.pastiche.list.stage.NoListState', + 'ephox.pastiche.list.stage.SkipEmptyParaState', + 'ephox.pastiche.list.stage.SpacerState', + 'ephox.pastiche.list.state.ListState', + 'ephox.pastiche.list.state.Transitions' + ], + + function (Filter, ListTypes, AfterListState, AfterNoBulletListState, BeforeSpacerState, CloseSpansState, FindListTypeState, ItemContentState, ListStartState, NoListState, SkipEmptyParaState, SpacerState, ListState, Transitions) { + var unexpectedToken = function(api, token) { + var info = 'Type: ' + token.type() + ', Tag: ' + token.tag() + ' Text: ' + token.text(); + console.log('Unexpected token in list conversion: ' + info, activeState.nextFilter.get()); + api.rollback(); + }; + + var noListState = NoListState.run(function () { + return listStartState; + }); + var skipEmptyParaState = SkipEmptyParaState.run(noListState, function () { + return afterListState; + }); + var afterListState = AfterListState.run(skipEmptyParaState, noListState); + var itemContentState = ItemContentState.run(afterListState); + var closeSpansState = CloseSpansState.run(itemContentState, unexpectedToken); + var spacerState = SpacerState.run(closeSpansState); + var beforeSpacerState = BeforeSpacerState.run(spacerState, closeSpansState, unexpectedToken); + var findListTypeState = FindListTypeState.run(beforeSpacerState, unexpectedToken); + var afterNoBulletListState = AfterNoBulletListState.run(afterListState); + var listStartState = ListStartState.run(findListTypeState, afterNoBulletListState, unexpectedToken); + + var activeState = ListState(noListState); + + var receive = function(api, token) { + if (activeState.styles && activeState.styles.check(token)) { + return; + } + + activeState.symbolFont.set(ListTypes.checkFont(token, activeState.symbolFont.get())); + Transitions.go(api, activeState, token); + }; + + return Filter.createFilter(receive, activeState.reset, 'lists'); + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.limbo.process.Strategies', + + [ + 'ephox.pastiche.api.HtmlPatterns', + 'ephox.pastiche.api.HybridAction', + 'ephox.pastiche.api.RuleConditions', + 'ephox.pastiche.api.RuleMutations', + 'ephox.pastiche.filter.Lists', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Css', + 'ephox.violin.StringMatch' + ], + + function (HtmlPatterns, HybridAction, RuleConditions, RuleMutations, Lists, Fun, Class, Css, StringMatch) { + // This will UNWRAP! tags such as <O:> and <U1:> + // Context: Word copy and paste. + var unwrapWordTags = HybridAction.unwrapper({ + tags: [ + { name: StringMatch.pattern(/^([OVWXP]|U[0-9]+|ST[0-9]+):/i) } + ] + }); + + // This will try and turn p tags into ol,ul and li tags where appropriate + // Context: Word copy and paste. + var parseLists = HybridAction.pipeline([ Lists ]); + + // This will remove attributes matching: v:.., href with #_toc|#_mso, xmlns:, align + // and type on lists. + // Context: Word copy and paste. + var removeWordAttributes = HybridAction.removal({ + attributes: [ + { name: StringMatch.pattern(/^v:/) }, + { name: StringMatch.exact('href'), value: StringMatch.contains('#_toc') }, + { name: StringMatch.exact('href'), value: StringMatch.contains('#_mso') }, + { name: StringMatch.pattern(/^xmlns(:|$)/) }, + { name: StringMatch.exact('align') }, + { name: StringMatch.exact('type'), condition: RuleConditions.isList } + ] + }); + + // This will remove script,meta,link,empty-style tags and on,id,name,lang attributes + // or styles containing OLE_LINK + // Context: All + var removeExcess = HybridAction.removal({ + tags: [ + { name: StringMatch.exact('script') }, + { name: StringMatch.exact('meta') }, + { name: StringMatch.exact('link') }, + { name: StringMatch.exact('style'), condition: RuleConditions.isEmpty } + ], + attributes: [ + { name: StringMatch.starts('on') }, + { name: StringMatch.exact('"') }, + { name: StringMatch.exact('id') }, + { name: StringMatch.exact('name') }, + { name: StringMatch.exact('lang') }, + { name: StringMatch.exact('language') } + // INVESTIGATE: Should language go here as well ? + ], + styles: [ + { name: StringMatch.all(), value: StringMatch.pattern(/OLE_LINK/i) } + ] + }); + + var isNotTransformed = function (element) { + return !Class.has(element, 'ephox-limbo-transform'); + }; + + // This will remove any styles that are not list-style-type for all tags, and keep the width and height + // styles only for images. + // Context: Clean copy and paste. + var cleanStyles = HybridAction.removal({ + styles: [ + { + name: StringMatch.not( + StringMatch.pattern(/width|height|list-style-type/) + ), + condition: isNotTransformed + }, + { name: StringMatch.pattern(/width|height/), condition: RuleConditions.isNotImage } + ] + }); + + // This will remove all classes that are not 'rtf-data-image' + // Context: Clean copy and paste. + var cleanClasses = HybridAction.removal({ + classes: [ + { + name: StringMatch.not( + StringMatch.exact('rtf-data-image') + ) + } + ] + }); + + // This will remove all styles that are not considered valid. + // Context: Merge copy and paste. + var mergeStyles = HybridAction.removal({ + styles: [ + { name: StringMatch.pattern(HtmlPatterns.validStyles()) } + ] + }); + + // This will remove all classes that have mso in them. + // Context: Merge copy and paste. + var mergeClasses = HybridAction.removal({ + classes: [ + { name: StringMatch.pattern(/mso/i) } + ] + }); + + // This will remove (unwrap) all images that have a file protocol + // Context: Copy and paste with images. + var removeLocalImages = HybridAction.unwrapper({ + tags: [ + { name: StringMatch.exact('img'), condition: RuleConditions.isLocal }, + // OLE_LINK exact part. + { name: StringMatch.exact('a'), condition: RuleConditions.hasNoAttributes } + ] + }); + + // This will unwrap any <a> tags that have no attributes (i.e. are essentially useless) + // Context: Any + var removeVacantLinks = HybridAction.unwrapper({ + tags: [ + { name: StringMatch.exact('a'), condition: RuleConditions.hasNoAttributes } + ] + }); + + // This will remove any style attribute that has no content. + // Context: Any + var removeEmptyStyle = HybridAction.removal({ + attributes: [ + { name: StringMatch.exact('style'), value: StringMatch.exact(''), debug: true } + ] + }); + + // This will remove any style attribute that has no content. + // Context: Any + var removeEmptyClass = HybridAction.removal({ + attributes: [ + { name: StringMatch.exact('class'), value: StringMatch.exact(''), debug: true } + ] + }); + + // This will remove any inline elements that no longer serve a purpose: + // Fancy inline elements: contain no content + // Span inline elements: have no attributes + // Context: Any + var pruneInlineTags = HybridAction.unwrapper({ + tags: [ + { + name: StringMatch.pattern(HtmlPatterns.specialInline()), + condition: Fun.not(RuleConditions.hasContent) + } + ] + }); + + var addPlaceholders = HybridAction.transformer({ + tags: [ + { name: StringMatch.exact('p'), mutate: RuleMutations.addBrTag } + ] + }); + + var toUnderline = function (element) { + var span = RuleMutations.changeTag('span', element); + Class.add(span, 'ephox-limbo-transform'); + Css.set(span, 'text-decoration', 'underline'); + }; + + var nestedListFixes = HybridAction.transformer({ + tags: [ + { name: StringMatch.pattern(/ol|ul/), mutate: RuleMutations.properlyNest } + ] + }); + + var inlineTagFixes = HybridAction.transformer({ + tags: [ + { name: StringMatch.exact('b'), mutate: Fun.curry(RuleMutations.changeTag, 'strong') }, + { name: StringMatch.exact('i'), mutate: Fun.curry(RuleMutations.changeTag, 'em') }, + { name: StringMatch.exact('u'), mutate: toUnderline }, + { name: StringMatch.exact('s'), mutate: Fun.curry(RuleMutations.changeTag, 'strike') }, + { name: StringMatch.exact('font'), mutate: RuleMutations.fontToSpan, debug: true } + ] + }); + + // This will remove all classes that were put in to preserve transformations. + // Context: Any + var cleanupFlags = HybridAction.removal({ + classes: [ + { name: StringMatch.exact('ephox-limbo-transform') } + ] + }); + + // This will remove any href attributes of a tags that are local. + // Context: Any + var removeLocalLinks = HybridAction.removal({ + attributes: [ + { name: StringMatch.exact('href'), value: StringMatch.starts('file:///'), debug: true } + ] + }); + + return { + unwrapWordTags: unwrapWordTags, + removeWordAttributes: removeWordAttributes, + parseLists: parseLists, + removeExcess: removeExcess, + cleanStyles: cleanStyles, + cleanClasses: cleanClasses, + mergeStyles: mergeStyles, + mergeClasses: mergeClasses, + removeLocalImages: removeLocalImages, + removeVacantLinks: removeVacantLinks, + removeEmptyStyle: removeEmptyStyle, + removeEmptyClass: removeEmptyClass, + pruneInlineTags: pruneInlineTags, + addPlaceholders: addPlaceholders, + nestedListFixes: nestedListFixes, + inlineTagFixes: inlineTagFixes, + cleanupFlags: cleanupFlags, + removeLocalLinks: removeLocalLinks, + none: Fun.noop + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.limbo.process.PasteFilters', + + [ + 'ephox.compass.Arr', + 'ephox.limbo.api.RtfImage', + 'ephox.limbo.process.Strategies', + 'ephox.pastiche.api.HybridAction', + 'ephox.pastiche.engine.Filter', + 'ephox.pastiche.engine.Token', + 'ephox.sugar.api.Element' + ], + + function (Arr, RtfImage, Strategies, HybridAction, Filter, Token, Element) { + var isIE11 = function (platform) { + return platform.browser.isIE() && platform.browser.version.major >= 11; + }; + + var transform = function (f) { + // TODO: Move this to API in pastiche or change how this works. + // I think the reason I want to keep it in the tokenizer is because + // it needs to access comments. + return Filter.createFilter(function (api, token) { + var next = f(Element.fromDom(token.getNode())).fold(function () { + return token; + }, function (sugared) { + var node = sugared.dom(); + return Token.token(node, token.type() === Token.END_ELEMENT_TYPE, {}); + }); + api.emit(next); + }); + }; + + var images = function (isWord, merging, platform) { + var searcher = platform.browser.isFirefox() ? RtfImage.local : RtfImage.vshape; + var transformer = isIE11(platform) ? Strategies.none : HybridAction.pipeline([ transform(searcher) ]); + var local = searcher === RtfImage.local ? Strategies.none : Strategies.removeLocalImages; + var annotate = isWord ? transformer : Strategies.none; + + return { + annotate: [ annotate ], + local: [ local ] + }; + }; + + var styling = function (isWord, merging, platform) { + var merge = [ Strategies.mergeStyles, Strategies.mergeClasses ]; + var clean = [ Strategies.cleanStyles, Strategies.cleanClasses ]; + return merging ? merge : clean; + }; + + var word = function (isWord, merging, platform) { + if (!isWord) return Strategies.none; + var base = [ Strategies.unwrapWordTags ]; + var lists = isIE11(platform) ? [] : Strategies.parseLists; + return base.concat(lists); + }; + + var derive = function (isWord, merging, platform) { + var imageFilters = images(isWord, merging, platform); + + return Arr.flatten([ + imageFilters.annotate, + [ Strategies.inlineTagFixes ], + word(isWord, merging, platform), + [ Strategies.nestedListFixes ], + [ Strategies.removeExcess ], + imageFilters.local, + styling(isWord, merging, platform), + [ Strategies.removeLocalLinks, Strategies.removeVacantLinks ], + [ Strategies.removeEmptyStyle ], + [ Strategies.removeEmptyClass ], + [ Strategies.pruneInlineTags ], + [ Strategies.addPlaceholders ], + [ Strategies.cleanupFlags ] + ]); + }; + + return { + derive: derive + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.boss.common.TagBoundaries', + + [ + + ], + + function () { + // TODO: We need to consolidate this list. I think when we get rid of boss/universe, we can do it then. + return [ + 'body', + 'p', + 'div', + 'article', + 'aside', + 'figcaption', + 'figure', + 'footer', + 'header', + 'nav', + 'section', + 'ol', + 'ul', + 'li', + 'table', + 'thead', + 'tbody', + 'caption', + 'tr', + 'td', + 'th', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'pre', + 'address' + ]; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.Text', + + [ + 'ephox.sugar.api.Node', + 'ephox.sugar.impl.NodeValue' + ], + + function (Node, NodeValue) { + var api = NodeValue(Node.isText, 'text'); + + var get = function (element) { + return api.get(element); + }; + + var getOption = function (element) { + return api.getOption(element); + }; + + var set = function (element, value) { + api.set(element, value); + }; + + return { + get: get, + getOption: getOption, + set: set + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.boss.api.DomUniverse', + + [ + 'ephox.boss.common.TagBoundaries', + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Compare', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.PredicateFilter', + 'ephox.sugar.api.PredicateFind', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFilter', + 'ephox.sugar.api.SelectorFind', + 'ephox.sugar.api.Text', + 'ephox.sugar.api.Traverse' + ], + + function (TagBoundaries, Arr, Fun, Attr, Compare, Css, Element, Insert, InsertAll, Node, PredicateFilter, PredicateFind, Remove, SelectorFilter, SelectorFind, Text, Traverse) { + return function () { + var clone = function (element) { + return Element.fromDom(element.dom().cloneNode(false)); + }; + + var isBoundary = function (element) { + if (!Node.isElement(element)) return false; + if (Node.name(element) === 'body') return true; + var display = Css.get(element, 'display'); + // When the read display value is empty, we need to check the node name. + return display !== undefined && display.length > 0 ? + Arr.contains(['block', 'table-cell', 'table-row', 'table', 'list-item'], display) : + Arr.contains(TagBoundaries, Node.name(element)); + }; + + var isEmptyTag = function (element) { + if (!Node.isElement(element)) return false; + return Arr.contains(['br', 'img', 'hr'], Node.name(element)); + }; + + var comparePosition = function (element, other) { + return element.dom().compareDocumentPosition(other.dom()); + }; + + var copyAttributesTo = function (source, destination) { + var as = Attr.clone(source); + Attr.setAll(destination, as); + }; + + return { + up: Fun.constant({ + selector: SelectorFind.ancestor, + closest: SelectorFind.closest, + predicate: PredicateFind.ancestor, + all: Traverse.parents + }), + down: Fun.constant({ + selector: SelectorFilter.descendants, + predicate: PredicateFilter.descendants + }), + styles: Fun.constant({ + get: Css.get, + set: Css.set, + remove: Css.remove + }), + attrs: Fun.constant({ + get: Attr.get, + set: Attr.set, + remove: Attr.remove, + copyTo: copyAttributesTo + }), + insert: Fun.constant({ + before: Insert.before, + after: Insert.after, + afterAll: InsertAll.after, + append: Insert.append, + appendAll: InsertAll.append, + prepend: Insert.prepend, + wrap: Insert.wrap + }), + remove: Fun.constant({ + unwrap: Remove.unwrap, + remove: Remove.remove + }), + create: Fun.constant({ + nu: Element.fromTag, + clone: clone, + text: Element.fromText + }), + query: Fun.constant({ + comparePosition: comparePosition, + prevSibling: Traverse.prevSibling, + nextSibling: Traverse.nextSibling + }), + property: Fun.constant({ + children: Traverse.children, + name: Node.name, + parent: Traverse.parent, + isText: Node.isText, + isElement: Node.isElement, + getText: Text.get, + setText: Text.set, + isBoundary: isBoundary, + isEmptyTag: isEmptyTag + }), + eq: Compare.eq, + is: Compare.is + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.api.data.NamedPattern', + + [ + 'ephox.scullion.Struct' + ], + + function (Struct) { + return Struct.immutable('word', 'pattern'); + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.api.data.Spot', + + [ + 'ephox.scullion.Struct' + ], + + function (Struct) { + var point = Struct.immutable('element', 'offset'); + var delta = Struct.immutable('element', 'deltaOffset'); + var range = Struct.immutable('element', 'start', 'finish'); + var points = Struct.immutable('begin', 'end'); + var text = Struct.immutable('element', 'text'); + + return { + point: point, + delta: delta, + range: range, + points: points, + text: text + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.extract.TypedItem', + + [ + 'ephox.peanut.Fun', + 'ephox.perhaps.Option' + ], + + /** + * Church encoded ADT representing whether an element is: + * - boundary (block tag or inline tag with block CSS display) + * - empty + * - text + */ + function (Fun, Option) { + var no = Fun.constant(false); + var yes = Fun.constant(true); + + var boundary = function (item, universe) { + return folder(function (b, e, t) { + return b(item, universe); + }); + }; + + var empty = function (item, universe) { + return folder(function (b, e, t) { + return e(item, universe); + }); + }; + + var text = function (item, universe) { + return folder(function (b, e, t) { + return t(item, universe); + }); + }; + + var folder = function (fold) { + var isBoundary = function () { + return fold(yes, no, no); + }; + + var toText = function () { + return fold(Option.none, Option.none, function (item, universe) { + return Option.some(item); + }); + }; + + var is = function (other) { + return fold(no, no, function (item, universe) { + return universe.eq(item, other); + }); + }; + + var len = function () { + return fold(Fun.constant(0), Fun.constant(1), function (item, universe) { + return universe.property().getText(item).length; + }); + }; + + return { + isBoundary: isBoundary, + fold: fold, + toText: toText, + is: is, + len: len + }; + }; + + return { + text: text, + boundary: boundary, + empty: empty + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.array.Boundaries', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun' + ], + + function (Arr, Fun) { + var boundAt = function (xs, left, right, comparator) { + var leftIndex = Arr.findIndex(xs, Fun.curry(comparator, left)); + var first = leftIndex > -1 ? leftIndex : 0; + var rightIndex = Arr.findIndex(xs, Fun.curry(comparator, right)); + var last = rightIndex > -1 ? rightIndex + 1 : xs.length; + return xs.slice(first, last); + }; + + return { + boundAt: boundAt + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.array.Slice', + + [ + 'ephox.compass.Arr' + ], + + function (Arr) { + /** + * Slice an array at the first item matched by the predicate + */ + var sliceby = function (list, pred) { + var index = Arr.findIndex(list, pred); + return list.slice(0, index); + }; + + return { + sliceby: sliceby + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.array.Split', + + [ + 'ephox.compass.Arr' + ], + + function (Arr) { + /** + * Split an array into chunks matched by the predicate + */ + var splitby = function (xs, pred) { + var r = []; + var part = []; + Arr.each(xs, function (x) { + if (pred(x)) { + r.push(part); + part = []; + } else { + part.push(x); + } + }); + + if (part.length > 0) r.push(part); + return r; + }; + + return { + splitby: splitby + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.api.Arrays', + + [ + 'ephox.polaris.array.Boundaries', + 'ephox.polaris.array.Slice', + 'ephox.polaris.array.Split' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Boundaries, Slice, Split) { + var boundAt = function (xs, left, right, comparator) { + return Boundaries.boundAt(xs, left, right, comparator); + }; + + var splitby = function (array, predicate) { + return Split.splitby(array, predicate); + }; + + var sliceby = function (array, predicate) { + return Slice.sliceby(array, predicate); + }; + + return { + splitby: splitby, + sliceby: sliceby, + boundAt: boundAt + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.extract.TypedList', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.phoenix.api.data.Spot', + 'ephox.polaris.api.Arrays' + ], + + /** + * Extracts various information from a list of TypedItem + */ + function (Arr, Fun, Option, Spot, Arrays) { + + var count = function (parray) { + return Arr.foldr(parray, function (b, a) { + return a.len() + b; + }, 0); + }; + + var dropUntil = function (parray, target) { + return Arrays.sliceby(parray, function (x) { + return x.is(target); + }); + }; + + /** + * Transform a TypedItem into a range representing that item from the start position. + * + * The generation function for making a PositionArray out of a list of TypedItems. + */ + var gen = function (unit, start) { + return unit.fold(Option.none, function (e) { + return Option.some(Spot.range(e, start, start + 1)); + }, function (t) { + return Option.some(Spot.range(t, start, start + unit.len())); + }); + }; + + var justText = function (parray) { + return Arr.bind(parray, function (x) { + return x.fold(Fun.constant([]), Fun.constant([]), Fun.identity); + }); + }; + + return { + count: count, + dropUntil: dropUntil, + gen: gen, + justText: justText + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.extract.Extract', + + [ + 'ephox.compass.Arr', + 'ephox.phoenix.api.data.Spot', + 'ephox.phoenix.extract.TypedItem', + 'ephox.phoenix.extract.TypedList' + ], + + function (Arr, Spot, TypedItem, TypedList) { + /** + * Flattens the item tree into TypedItem representations. + * + * Boundaries are returned twice, before and after their children. + */ + var typed = function (universe, item, optimise) { + if (universe.property().isText(item)) { + return [ TypedItem.text(item, universe) ]; + } else if (universe.property().isEmptyTag(item)) { + return [ TypedItem.empty(item, universe) ]; + } else if (universe.property().isElement(item)) { + var children = universe.property().children(item); + var boundary = universe.property().isBoundary(item) ? [TypedItem.boundary(item, universe)] : []; + var rest = optimise !== undefined && optimise(item) ? [] : Arr.bind(children, function (child) { + return typed(universe, child, optimise); + }); + return boundary.concat(rest).concat(boundary); + } else { + return []; + } + }; + + /** + * Returns just the actual elements from a call to typed(). + */ + var items = function (universe, item, optimise) { + var typedItemList = typed(universe, item, optimise); + + var raw = function (item, universe) { return item; }; + + return Arr.map(typedItemList, function (typedItem) { + return typedItem.fold(raw, raw, raw); + }); + }; + + var extractToElem = function (universe, child, offset, item, optimise) { + var extractions = typed(universe, item, optimise); + var prior = TypedList.dropUntil(extractions, child); + var count = TypedList.count(prior); + return Spot.point(item, count + offset); + }; + + /** + * Generates an absolute point in the child's parent + * that can be used to reference the offset into child later. + * + * To find the exact reference later, use Find. + */ + var extract = function (universe, child, offset, optimise) { + return universe.property().parent(child).fold(function () { + return Spot.point(child, offset); + }, function (parent) { + return extractToElem(universe, child, offset, parent, optimise); + }); + }; + + /** + * Generates an absolute point that can be used to reference the offset into child later. + * This absolute point will be relative to a parent node (specified by predicate). + * + * To find the exact reference later, use Find. + */ + var extractTo = function (universe, child, offset, pred, optimise) { + return universe.up().predicate(child, pred).fold(function () { + return Spot.point(child, offset); + }, function (v) { + return extractToElem(universe, child, offset, v, optimise); + }); + }; + + return { + typed: typed, + items: items, + extractTo: extractTo, + extract: extract + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.extract.ExtractText', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.phoenix.extract.Extract' + ], + + function (Arr, Fun, Extract) { + var newline = '\n'; + var space = ' '; + + var onEmpty = function (item, universe) { + return universe.property().name(item) === 'img' ? space : newline; + }; + + var from = function (universe, item, optimise) { + var typed = Extract.typed(universe, item, optimise); + return Arr.map(typed, function (t) { + return t.fold(Fun.constant(newline), onEmpty, universe.property().getText); + }).join(''); + }; + + return { + from: from + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.parray.Generator', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun' + ], + + function (Arr, Fun) { + + /** + * Generate a PositionArray + * + * xs: list of thing + * f: thing -> Optional unit + * _start: sets the start position to search at + */ + var make = function (xs, f, _start) { + + var init = { + len: _start !== undefined ? _start : 0, + list: [] + }; + + var r = Arr.foldl(xs, function (b, a) { + var value = f(a, b.len); + return value.fold(Fun.constant(b), function (v) { + return { + len: v.finish(), + list: b.list.concat([v]) + }; + }); + }, init); + + return r.list; + }; + + return { + make: make + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.parray.Query', + + [ + 'ephox.compass.Arr', + 'ephox.perhaps.Option' + ], + + function (Arr, Option) { + + /** + * Simple "is position within unit" utility function + */ + var inUnit = function (unit, position) { + return position >= unit.start() && position <= unit.finish(); + }; + + /** + * Finds the unit in the PositionArray that contains this offset (if there is one) + */ + var get = function (parray, offset) { + var unit = Arr.find(parray, function (x) { + return inUnit(x, offset); + }); + + return Option.from(unit); + }; + + var startindex = function (parray, offset) { + return Arr.findIndex(parray, function (unit) { + return unit.start() === offset; + }); + }; + + var tryend = function (parray, finish) { + var finishes = parray[parray.length - 1] && parray[parray.length - 1].finish() === finish; + return finishes ? parray.length + 1 : -1; + }; + + + /** + * Extracts the pieces of the PositionArray that are bounded *exactly* on the start and finish offsets + */ + var sublist = function (parray, start, finish) { + var first = startindex(parray, start); + var rawlast = startindex(parray, finish); + var last = rawlast > -1 ? rawlast : tryend(parray, finish); + + return first > -1 && last > -1 ? parray.slice(first, last) : []; + }; + + var find = function (parray, pred) { + return Option.from(Arr.find(parray, pred)); + }; + + return { + get: get, + find: find, + inUnit: inUnit, + sublist: sublist + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.parray.Translate', + + [ + 'ephox.compass.Arr', + 'ephox.highway.Merger', + 'ephox.peanut.Fun' + ], + + function (Arr, Merger, Fun) { + /** Adjust a PositionArray positions by an offset */ + var translate = function (parray, offset) { + return Arr.map(parray, function (unit) { + return Merger.merge(unit, { + start: Fun.constant(unit.start() + offset), + finish: Fun.constant(unit.finish() + offset) + }); + }); + }; + + return { + translate: translate + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.parray.Split', + + [ + 'ephox.compass.Arr', + 'ephox.polaris.parray.Query', + 'ephox.polaris.parray.Translate' + ], + + function (Arr, Query, Translate) { + /** + * After subdivide has split the unit, update the resulting PositionArray based on the unit start position. + */ + var divide = function (unit, positions, subdivide) { + var mini = subdivide(unit, positions); + return Translate.translate(mini, unit.start()); + }; + + /** + * Adds extra split points into a PositionArray, using subdivide to split if necessary + */ + var splits = function (parray, positions, subdivide) { + if (positions.length === 0) return parray; + + return Arr.bind(parray, function (unit) { + var relevant = Arr.bind(positions, function (pos) { + return Query.inUnit(unit, pos) ? [ pos - unit.start() ] : []; + }); + + return relevant.length > 0 ? divide(unit, relevant, subdivide) : [ unit ]; + }); + }; + + return { + splits: splits + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.api.PositionArray', + + [ + 'ephox.polaris.parray.Generator', + 'ephox.polaris.parray.Query', + 'ephox.polaris.parray.Split', + 'ephox.polaris.parray.Translate' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Generator, Query, Split, Translate) { + var generate = function (items, generator, _start) { + return Generator.make(items, generator, _start); + }; + + var get = function (parray, offset) { + return Query.get(parray, offset); + }; + + var find = function (parray, pred) { + return Query.find(parray, pred); + }; + + var splits = function (parray, positions, subdivide) { + return Split.splits(parray, positions, subdivide); + }; + + var translate = function (parray, amount) { + return Translate.translate(parray, amount); + }; + + var sublist = function (parray, start, finish) { + return Query.sublist(parray, start, finish); + }; + + return { + generate: generate, + get: get, + find: find, + splits: splits, + translate: translate, + sublist: sublist + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.extract.Find', + + [ + 'ephox.phoenix.api.data.Spot', + 'ephox.phoenix.extract.Extract', + 'ephox.phoenix.extract.TypedList', + 'ephox.polaris.api.PositionArray' + ], + + function (Spot, Extract, TypedList, PositionArray) { + + /** + * Finds an exact reference to a document point generated by Extract + */ + var find = function (universe, parent, offset, optimise) { + var extractions = Extract.typed(universe, parent, optimise); + + var parray = PositionArray.generate(extractions, TypedList.gen); + var spot = PositionArray.get(parray, offset); + return spot.map(function (v) { + return Spot.point(v.element(), offset - v.start()); + }); + }; + + return { + find: find + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.api.general.Extract', + + [ + 'ephox.phoenix.extract.Extract', + 'ephox.phoenix.extract.ExtractText', + 'ephox.phoenix.extract.Find' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Extract, ExtractText, Find) { + + var from = function (universe, item, optimise) { + return Extract.typed(universe, item, optimise); + }; + + var all = function (universe, item, optimise) { + return Extract.items(universe, item, optimise); + }; + + var extract = function (universe, child, offset, optimise) { + return Extract.extract(universe, child, offset, optimise); + }; + + var extractTo = function (universe, child, offset, pred, optimise) { + return Extract.extractTo(universe, child, offset, pred, optimise); + }; + + var find = function (universe, parent, offset, optimise) { + return Find.find(universe, parent, offset, optimise); + }; + + var toText = function (universe, item, optimise) { + return ExtractText.from(universe, item, optimise); + }; + + return { + extract: extract, + extractTo: extractTo, + all: all, + from: from, + find: find, + toText: toText + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.family.Group', + + [ + 'ephox.compass.Arr', + 'ephox.phoenix.api.general.Extract', + 'ephox.polaris.api.Arrays' + ], + + function (Arr, Extract, Arrays) { + /** + * Return an array of arrays split by boundaries + */ + var group = function (universe, items, optimise) { + var extractions = Arr.bind(items, function (item) { + return Extract.from(universe, item, optimise); + }); + + var segments = Arrays.splitby(extractions, function (item) { + return item.isBoundary(); + }); + + return Arr.filter(segments, function (x) { return x.length > 0; }); + }; + + return { + group: group + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.family.Parents', + + [ + 'ephox.compass.Arr', + 'ephox.perhaps.Option' + ], + + function (Arr, Option) { + /** + * Search the parents of both items for a common element + */ + var common = function (universe, item1, item2) { + var item1parents = [item1].concat(universe.up().all(item1)); + var item2parents = [item2].concat(universe.up().all(item2)); + + var r = Arr.find(item1parents, function (x) { + return Arr.exists(item2parents, function (y) { + return universe.eq(y, x); + }); + }); + + return Option.from(r); + }; + + return { + common: common + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.wrap.OrphanText', + + [ + 'ephox.compass.Arr' + ], + + function (Arr) { + // Textnodes cannot be children of these tags + var textBlacklist = [ 'table', 'tbody', 'thead', 'tfoot', 'tr', 'ul', 'ol' ]; + + return function (universe) { + var domUtils = universe.property(); + var validateParent = function (node, blacklist) { + return domUtils.parent(node).map(domUtils.name).map(function (name) { + return !Arr.contains(blacklist, name); + }).getOr(false); + }; + + var validateText = function (textNode) { + return domUtils.isText(textNode) && validateParent(textNode, textBlacklist); + }; + + return { + validateText: validateText + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.family.Range', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.phoenix.api.general.Extract', + 'ephox.phoenix.family.Parents', + 'ephox.phoenix.wrap.OrphanText' + ], + + function (Arr, Fun, Extract, Parents, OrphanText) { + var index = function (universe, items, item) { + return Arr.findIndex(items, Fun.curry(universe.eq, item)); + }; + + var order = function (items, a, delta1, b, delta2) { + return a < b ? items.slice(a + delta1, b + delta2) : items.slice(b + delta2, a + delta1); + }; + + /** + * Returns a flat array of text nodes between two defined nodes. + * + * Deltas are a broken concept. They control whether the item passed is included in the result. + */ + var range = function (universe, item1, delta1, item2, delta2) { + if (universe.eq(item1, item2)) return [item1]; + + return Parents.common(universe, item1, item2).fold(function () { + return []; // no common parent, therefore no intervening path. How does this clash with Path in robin? + }, function (parent) { + var items = [ parent ].concat(Extract.all(universe, parent, Fun.constant(false))); + var start = index(universe, items, item1); + var finish = index(universe, items, item2); + var result = start > -1 && finish > -1 ? order(items, start, delta1, finish, delta2) : []; + var orphanText = OrphanText(universe); + return Arr.filter(result, orphanText.validateText); + }); + }; + + return { + range: range + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.api.general.Family', + + [ + 'ephox.phoenix.family.Group', + 'ephox.phoenix.family.Range' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Group, Range) { + var range = function (universe, start, startDelta, finish, finishDelta) { + return Range.range(universe, start, startDelta, finish, finishDelta); + }; + + var group = function (universe, items, optimise) { + return Group.group(universe, items, optimise); + }; + + return { + range: range, + group: group + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.string.Sanitise', + + [ + + ], + + function () { + /** + * Sanitises a string for use in a CSS class name + */ + var css = function (str) { + // special case; the first character must a letter. More strict than CSS, but easier to implement. + var r = /^[a-zA-Z]/.test(str) ? '' : 'e'; + + // any non-word character becomes a hyphen + var sanitised = str.replace(/[^\w]/gi, '-'); + + return r + sanitised; + }; + + return { + css: css + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.string.Split', + + [ + 'ephox.compass.Arr' + ], + + function (Arr) { + /** + * Splits a string into multiple chunks + */ + var splits = function (value, indices) { + if (indices.length === 0) return [value]; + + var divisions = Arr.foldl(indices, function (acc, x) { + if (x === 0) return acc; + + var part = value.substring(acc.prev, x); + return { + prev: x, + values: acc.values.concat([part]) + }; + }, { prev: 0, values: [] }); + + var lastPoint = indices[indices.length - 1]; + return lastPoint < value.length ? divisions.values.concat(value.substring(lastPoint)) : divisions.values; + }; + + return { + splits: splits + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.api.Strings', + + [ + 'ephox.polaris.string.Sanitise', + 'ephox.polaris.string.Split' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Sanitise, Split) { + var splits = function (text, points) { + return Split.splits(text, points); + }; + + var cssSanitise = function (str) { + return Sanitise.css(str); + }; + + return { + cssSanitise: cssSanitise, + splits: splits + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.search.Splitter', + + [ + 'ephox.compass.Arr', + 'ephox.perhaps.Option', + 'ephox.phoenix.api.data.Spot', + 'ephox.polaris.api.PositionArray', + 'ephox.polaris.api.Strings' + ], + + function (Arr, Option, Spot, PositionArray, Strings) { + + /** + * Re-generates an item's text nodes, split as defined by the positions array. + * + * Returns a PositionArray of the result. + */ + var subdivide = function (universe, item, positions) { + var text = universe.property().getText(item); + var pieces = Arr.filter(Strings.splits(text, positions), function (section) { + return section.length > 0; + }); + + if (pieces.length <= 1) return [ Spot.range(item, 0, text.length) ]; + universe.property().setText(item, pieces[0]); + + var others = PositionArray.generate(pieces.slice(1), function (a, start) { + var nu = universe.create().text(a); + var result = Spot.range(nu, start, start + a.length); + return Option.some(result); + }, pieces[0].length); + + var otherElements = Arr.map(others, function (a) { return a.element(); }); + universe.insert().afterAll(item, otherElements); + + return [ Spot.range(item, 0, pieces[0].length) ].concat(others); + }; + + return { + subdivide: subdivide + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.search.MatchSplitter', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.phoenix.search.Splitter', + 'ephox.polaris.api.PositionArray' + ], + + function (Arr, Fun, Splitter, PositionArray) { + /** + * Split each text node in the list using the match endpoints. + * + * Each match is then mapped to the word it matched and the elements that make up the word. + */ + var separate = function (universe, list, matches) { + var allPositions = Arr.bind(matches, function (match) { + return [ match.start(), match.finish() ]; + }); + + var subdivide = function (unit, positions) { + return Splitter.subdivide(universe, unit.element(), positions); + }; + + var structure = PositionArray.splits(list, allPositions, subdivide); + + var collate = function (match) { + var sub = PositionArray.sublist(structure, match.start(), match.finish()); + + var elements = Arr.map(sub, function (unit) { return unit.element(); }); + + var exact = Arr.map(elements, universe.property().getText).join(''); + return { + elements: Fun.constant(elements), + word: match.word, + exact: Fun.constant(exact) + }; + }; + + return Arr.map(matches, collate); + }; + + return { + separate: separate + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.bud.Unicode', + + [ + ], + + function () { + // \u200B needs to be removed manually as it is not considered whitespace when trimming + // \uFEFF does not need to be removed manually. It is considered whitespace when trimming + var zeroWidth = function () { + return '\u200B'; + }; + + // Note, we are separating these out so that we are accounting for the subtle differences + // between them. Eventually, we'll want to combine them again. + var trimNative = function (str) { + return str.replace(/\u200B/, '').trim(); + }; + + var trimWithRegex = function (str) { + return str.replace(/^\s+|\s+$/g, '').replace(/\u200B/, ''); + }; + + return { + zeroWidth: zeroWidth, + trimNative: trimNative, + trimWithRegex: trimWithRegex + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.pattern.Chars', + + [ + 'ephox.bud.Unicode', + 'ephox.peanut.Fun' + ], + + function (Unicode, Fun) { + // \w is a word character + // \' is an apostrophe + // '-' is a hyphen + // \u00C0 - \u00FF are various language characters + // \u2018 and \u2019 are the smart quote characters + var chars = '\\w' + '\'' + '\\-' + '\\u00C0-\\u00FF' + Unicode.zeroWidth() + '\\u2018\\u2019'; + var wordbreak = '[^' + chars + ']'; + var wordchar = '[' + chars + ']'; + + return { + chars: Fun.constant(chars), + wordbreak: Fun.constant(wordbreak), + wordchar: Fun.constant(wordchar) + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.pattern.Custom', + + [ + 'global!RegExp' + ], + + function (RegExp) { + return function (regex, prefix, suffix, flags) { + var term = function () { + return new RegExp(regex, flags.getOr('g')); + }; + + return { + term: term, + prefix: prefix, + suffix: suffix + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.pattern.Unsafe', + + [ + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.polaris.pattern.Chars', + 'ephox.polaris.pattern.Custom' + ], + + function (Fun, Option, Chars, Custom) { + + /** + * Tokens have no prefix or suffix + */ + var token = function (input) { + return Custom(input, Fun.constant(0), Fun.constant(0), Option.none()); + }; + + /** + * Words have complex rules as to what a "word break" actually is. + * + * These are consumed by the regex and then excluded by prefix/suffix lengths. + */ + var word = function (input) { + var regex = '((?:^\'?)|(?:' + Chars.wordbreak() + '+\'?))' + input + '((?:\'?$)|(?:\'?' + Chars.wordbreak() + '+))'; + + // ASSUMPTION: There are no groups in their input + var prefix = function (match) { + return match.length > 1 ? match[1].length : 0; + }; + + var suffix = function (match) { + return match.length > 2 ? match[2].length : 0; + }; + + return Custom(regex, prefix, suffix, Option.none()); + }; + + return { + token: token, + word: word + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.pattern.Safe', + + [ + 'ephox.polaris.pattern.Unsafe' + ], + + /** Sanitises all inputs to Unsafe */ + function (Unsafe) { + /** Escapes regex characters in a string */ + var sanitise = function (input) { + return input.replace(/[-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); + }; + + var word = function (input) { + var value = sanitise(input); + return Unsafe.word(value); + }; + + var token = function (input) { + var value = sanitise(input); + return Unsafe.token(value); + }; + + return { + sanitise: sanitise, + word: word, + token: token + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.api.Pattern', + + [ + 'ephox.polaris.pattern.Chars', + 'ephox.polaris.pattern.Custom', + 'ephox.polaris.pattern.Safe', + 'ephox.polaris.pattern.Unsafe' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Chars, Custom, Safe, Unsafe) { + var safeword = function (input) { + return Safe.word(input); + }; + + var safetoken = function (input) { + return Safe.token(input); + }; + + var custom = function (input, prefix, suffix, flags) { + return Custom(input, prefix, suffix, flags); + }; + + var unsafeword = function (input) { + return Unsafe.word(input); + }; + + var unsafetoken = function (input) { + return Unsafe.token(input); + }; + + var sanitise = function (input) { + return Safe.sanitise(input); + }; + + var chars = function () { + return Chars.chars(); + }; + + var wordbreak = function () { + return Chars.wordbreak(); + }; + + var wordchar = function () { + return Chars.wordchar(); + }; + + return { + safeword: safeword, + safetoken: safetoken, + custom: custom, + unsafeword: unsafeword, + unsafetoken: unsafetoken, + sanitise: sanitise, + chars: chars, + wordbreak: wordbreak, + wordchar: wordchar + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.search.Find', + + [ + 'ephox.peanut.Fun' + ], + + function (Fun) { + + /** + * Returns the offset pairs of all matches of pattern on the input string, adjusting for prefix and suffix offsets + */ + var all = function (input, pattern) { + var term = pattern.term(); + var r = []; + var match = term.exec(input); + while (match) { + var start = match.index + pattern.prefix(match); + var length = match[0].length - pattern.prefix(match) - pattern.suffix(match); + r.push({ + start: Fun.constant(start), + finish: Fun.constant(start + length) + }); + term.lastIndex = start + length; + match = term.exec(input); + } + return r; + }; + + return { + all: all + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.search.Sleuth', + + [ + 'ephox.compass.Arr', + 'ephox.highway.Merger', + 'ephox.polaris.search.Find', + 'global!Array' + ], + + function (Arr, Merger, Find, Array) { + var sort = function (array) { + var r = Array.prototype.slice.call(array, 0); + r.sort(function (a, b) { + if (a.start() < b.start()) return -1; + else if (b.start() < a.start()) return 1; + else return 0; + }); + return r; + }; + + /** + * For each target (pattern, ....), find the matching text (if there is any) and record the start and end offsets. + * + * Then sort the result by start point. + */ + var search = function (text, targets) { + var unsorted = Arr.bind(targets, function (t) { + var results = Find.all(text, t.pattern()); + return Arr.map(results, function (r) { + return Merger.merge(t, { + start: r.start, + finish: r.finish + }); + }); + }); + + return sort(unsorted); + }; + + return { + search: search + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.polaris.api.Search', + + [ + 'ephox.polaris.search.Find', + 'ephox.polaris.search.Sleuth' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Find, Sleuth) { + var findall = function (input, pattern) { + return Find.all(input, pattern); + }; + + var findmany = function (input, targets) { + return Sleuth.search(input, targets); + }; + + return { + findall: findall, + findmany: findmany + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.search.Searcher', + + [ + 'ephox.compass.Arr', + 'ephox.perhaps.Option', + 'ephox.phoenix.api.data.NamedPattern', + 'ephox.phoenix.api.data.Spot', + 'ephox.phoenix.api.general.Family', + 'ephox.phoenix.extract.TypedList', + 'ephox.phoenix.search.MatchSplitter', + 'ephox.polaris.api.Pattern', + 'ephox.polaris.api.PositionArray', + 'ephox.polaris.api.Search' + ], + + function (Arr, Option, NamedPattern, Spot, Family, TypedList, MatchSplitter, Pattern, PositionArray, Search) { + var gen = function (universe, input) { + return PositionArray.generate(input, function (unit, offset) { + var finish = offset + universe.property().getText(unit).length; + return Option.from(Spot.range(unit, offset, finish)); + }); + }; + + /** + * Extracts groups of elements separated by boundaries. + * + * For each group, search the text for pattern matches. + * + * Returns a list of matches. + */ + var run = function (universe, elements, patterns, optimise) { + var sections = Family.group(universe, elements, optimise); + var result = Arr.bind(sections, function (x) { + var input = TypedList.justText(x); + var text = Arr.map(input, universe.property().getText).join(''); + + var matches = Search.findmany(text, patterns); + var plist = gen(universe, input); + + return MatchSplitter.separate(universe, plist, matches); + }); + + return result; + }; + + + /** + * Runs a search for one or more words + */ + var safeWords = function (universe, elements, words, optimise) { + var patterns = Arr.map(words, function (word) { + var pattern = Pattern.safeword(word); + return NamedPattern(word, pattern); + }); + return run(universe, elements, patterns, optimise); + }; + + + /** + * Runs a search for a single token + */ + var safeToken = function (universe, elements, token, optimise) { + var pattern = NamedPattern(token, Pattern.safetoken(token)); + return run(universe, elements, [pattern], optimise); + }; + + return { + safeWords: safeWords, + safeToken: safeToken, + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.api.general.Search', + + [ + 'ephox.phoenix.search.Searcher' + ], + + /** + * Documentation is in the actual implementations. + */ + function (Searcher) { + var run = function (universe, items, patterns, optimise) { + return Searcher.run(universe, items, patterns, optimise); + }; + + var safeWords = function (universe, items, words, optimise) { + return Searcher.safeWords(universe, items, words, optimise); + }; + + var safeToken = function (universe, items, token, optimise) { + return Searcher.safeToken(universe, items, token, optimise); + }; + + return { + safeWords: safeWords, + safeToken: safeToken, + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.phoenix.api.dom.DomSearch', + + [ + 'ephox.boss.api.DomUniverse', + 'ephox.phoenix.api.general.Search' + ], + + /** + * Documentation is in the actual implementations. + */ + function (DomUniverse, Search) { + var universe = DomUniverse(); + + var run = function (elements, patterns, optimise) { + return Search.run(universe, elements, patterns, optimise); + }; + + var safeWords = function (elements, words, optimise) { + return Search.safeWords(universe, elements, words, optimise); + }; + + var safeToken = function (elements, token, optimise) { + return Search.safeToken(universe, elements, token, optimise); + }; + + return { + safeWords: safeWords, + safeToken: safeToken, + run: run + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sugar.api.SelectorExists', + + [ + 'ephox.sugar.api.SelectorFind' + ], + + function (SelectorFind) { + var any = function (selector) { + return SelectorFind.first(selector).isSome(); + }; + + var ancestor = function (scope, selector, isRoot) { + return SelectorFind.ancestor(scope, selector, isRoot).isSome(); + }; + + var sibling = function (scope, selector) { + return SelectorFind.sibling(scope, selector).isSome(); + }; + + var child = function (scope, selector) { + return SelectorFind.child(scope, selector).isSome(); + }; + + var descendant = function (scope, selector) { + return SelectorFind.descendant(scope, selector).isSome(); + }; + + var closest = function (scope, selector, isRoot) { + return SelectorFind.closest(scope, selector, isRoot).isSome(); + }; + + return { + any: any, + ancestor: ancestor, + sibling: sibling, + child: child, + descendant: descendant, + closest: closest + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.limbo.process.Preprocessor', + + [ + 'ephox.compass.Arr', + 'ephox.perhaps.Option', + 'ephox.phoenix.api.dom.DomSearch', + 'ephox.polaris.api.Pattern', + 'ephox.scullion.Struct', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.SelectorExists' + ], + + function (Arr, Option, DomSearch, Pattern, Struct, Attr, Css, Element, Html, Insert, InsertAll, Node, SelectorExists) { + //the big fat holy grail of URL pattern matching.. + var regex = '((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)(:[0-9]+)?((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)'; + + var findLinks = function (elements) { + var data = Struct.immutable('word', 'pattern'); + var term = Pattern.unsafetoken(regex); + var pattern = data('__INTERNAL__', term); + return DomSearch.run(elements, [pattern]); + }; + + var notInLink = function (element) { + // return true; + return !SelectorExists.closest(element, 'a'); + }; + + var wrap = function (elements) { + return Option.from(elements[0]).filter(notInLink).map(function (first) { + var tag = Element.fromTag('a'); + Insert.before(first, tag); + InsertAll.append(tag, elements); + Attr.set(tag, 'href', Html.get(tag)); + return tag; + }); + }; + + var links = function (elements) { + var matches = findLinks(elements); + Arr.each(matches, function (match) { + // TBIO-2444 Do not wrap anything with @ symbol, it could be an email + if(match.exact().indexOf('@') < 0) wrap(match.elements()); + }); + }; + + var position = function (elements) { + Arr.each(elements, function (elem) { + if (Node.isElement(elem)) Css.remove(elem, 'position'); + }); + }; + + return { + links: links, + position: position + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.limbo.api.RunPaste', + + [ + 'ephox.compass.Arr', + 'ephox.limbo.process.PasteFilters', + 'ephox.limbo.process.Preprocessor', + 'ephox.pastiche.api.HybridAction', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Traverse' + ], + + function (Arr, PasteFilters, Preprocessor, HybridAction, Html, Traverse) { + var preprocess = function (platform, container) { + var children = Traverse.children(container); + Arr.each([ Preprocessor.links, Preprocessor.position ], function (f) { + f(children); + }); + }; + + var go = function (doc, platform, container, merging, isWord) { + preprocess(platform, container); + var html = Html.get(container); + var filters = PasteFilters.derive(isWord, merging, platform); + return HybridAction.go(doc, html, filters); + }; + + return { + go: go + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.limbo.api.Sources', + + [ + 'ephox.pastiche.api.HybridAction', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.PredicateExists' + ], + + function (HybridAction, Attr, Html, PredicateExists) { + var ie11 = function (container) { + // This looks expensive. Using grep on corpus, + // string searching for "<font" or "mso-list:" picked up all relevant cases + return PredicateExists.descendant(container, function (el) { + return Attr.has(el, 'style') ? Attr.get(el, 'style').indexOf('mso-') > -1 : false; + }); + }; + + var other = function (container) { + var html = Html.get(container); + return HybridAction.isWordContent(html); + }; + + var isWord = function (platform, container) { + var browser = platform.browser; + var detector = browser.isIE() && browser.version.major >= 11 ? ie11 : other; + return detector(container); + }; + + return { + isWord: isWord + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.data.Range', + + [ + 'ephox.peanut.Fun', + 'ephox.sugar.api.Compare' + ], + + function (Fun, Compare) { + return function (startContainer, startOffset, endContainer, endOffset) { + var collapsed = Compare.eq(startContainer, endContainer) && startOffset === endOffset; + + return { + startContainer: Fun.constant(startContainer), + startOffset: Fun.constant(startOffset), + endContainer: Fun.constant(endContainer), + endOffset: Fun.constant(endOffset), + collapsed: Fun.constant(collapsed) + }; + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.api.BodySwitch', + + [ + 'ephox.sloth.data.Range', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse' + ], + + function (Range, Element, Insert, Remove, Traverse) { + return function (selection) { + + var placeholder = Element.fromTag('br'); + + var toOn = function (element, offscreen) { + element.dom().focus(); + }; + + var getWin = function (offscreen) { + var doc = Traverse.owner(offscreen); + return doc.dom().defaultView; + }; + + var toOff = function (element, offscreen) { + var win = getWin(offscreen); + win.focus(); + Insert.append(offscreen, placeholder); + selection.set(win, Range(placeholder, 0, placeholder, 0)); + }; + + var cleanup = function () { + Remove.remove(placeholder); + }; + + return { + cleanup: cleanup, + toOn: toOn, + toOff: toOff + }; + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.api.DivSwitch', + + [ + 'ephox.peanut.Fun' + ], + + function (Fun) { + return function () { + var toOn = function (element, offscreen) { + element.dom().focus(); + }; + + var toOff = function (element, offscreen) { + offscreen.dom().focus(); + }; + + var cleanup = Fun.identity; + + return { + toOn: toOn, + toOff: toOff, + cleanup: cleanup + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.plumber.tap.control.BlockControl', + + [ + ], + + function () { + var create = function () { + var blocked = false; + var isBlocked = function () { return blocked; }; + var block = function () { blocked = true; }; + var unblock = function () { blocked = false; }; + + return { + isBlocked: isBlocked, + block: block, + unblock: unblock + } + }; + + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.plumber.tap.wrap.Tapped', + + [ + ], + + function () { + var create = function (control, instance) { + return { + control: control, + instance: instance + } + }; + + return { + create: create + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.plumber.tap.function.BlockTap', + + [ + 'ephox.plumber.tap.control.BlockControl', + 'ephox.plumber.tap.wrap.Tapped' + ], + + function (BlockControl, Tapped) { + var tap = function (fn) { + var control = BlockControl.create(); + + var instance = function () { + if (!control.isBlocked()) + fn.apply(null, arguments); + }; + + return Tapped.create(control, instance); + }; + + return { + tap: tap + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.api.Paste', + + [ + 'ephox.fred.PlatformDetection', + 'ephox.peanut.Fun', + 'global!setTimeout' + ], + + function (PlatformDetection, Fun, setTimeout) { + var detection = PlatformDetection.detect(); + + var ie10 = function (doc, tap, postpaste) { + // Block the tap, and fire a paste. + tap.control.block(); + doc.dom().execCommand('paste'); + postpaste(); + tap.control.unblock(); + }; + + var others = function (doc, tap, postpaste) { + setTimeout(postpaste, 1); + }; + + // Most browsers can just let the paste event continue. + // on IE10, the paste event must be cancelled and done manually + var willBlock = detection.browser.isIE() && detection.browser.version.major <= 10; + + var runner = willBlock ? ie10 : others; + + var run = function (doc, tap, postpaste) { + return runner(doc, tap, postpaste); + }; + + return { + willBlock: Fun.constant(willBlock), + run: run + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.engine.Consolidator', + + [ + 'ephox.compass.Arr', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.InsertAll', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse' + ], + + function (Arr, Element, Insert, InsertAll, Remove, Traverse) { + // TBIO-2440. In some situations on Windows 7 Chrome, pasting into the offscreen div + // actually splits the div in two. The purpose of this function is to incorporate + // any of the split divs into the main one. + var consolidate = function (offscreen, isOffscreen) { + Traverse.nextSibling(offscreen).filter(isOffscreen).each(function (other) { + var children = Traverse.children(other); + InsertAll.append(offscreen, children); + Remove.remove(other); + }); + oneChild(offscreen, isOffscreen); + }; + // TBIO-3010: In Chrome (reproducible in both Windows and Mac) when pasting from notepad the offscreen div + // generates multiple sloth divs, causing the content to be not pasted correctly. This function + // runs across the children of the offscreen div and if it is a sloth element then it extract + // the content and wraps it in a normal div. + var cleanChild = function (child, offscreen) { + var children = Traverse.children(child); + var wrapper = Element.fromTag('div', Traverse.owner(child).dom()); + InsertAll.append(wrapper, children); + Insert.before(child, wrapper); + Remove.remove(child); + }; + + var oneChild = function (offscreen, isOffscreen) { + var children = Traverse.children(offscreen); + Arr.each(children, function (child) { + if (isOffscreen(child)) cleanChild(child, offscreen); + }); + }; + + return { + consolidate: consolidate + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.engine.Offscreen', + + [ + 'ephox.epithet.Id', + 'ephox.scullion.Struct', + 'ephox.sloth.engine.Consolidator', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Css', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Html', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFind', + 'ephox.sugar.api.Traverse' + ], + + function (Id, Struct, Consolidator, Attr, Class, Css, Element, Html, Insert, Remove, SelectorFind, Traverse) { + var hash = Id.generate('ephox-sloth-bin'); + + return function (switcher) { + var offscreen = Element.fromTag('div'); + Attr.set(offscreen, 'contenteditable', 'true'); + Class.add(offscreen, hash); + Css.setAll(offscreen, { + position: 'absolute', + left: '0px', + top: '0px', + width: '0px', + height: '0px', + overflow: 'hidden' + }); + + var attach = function (target) { + Remove.empty(offscreen); + Insert.append(target, offscreen); + }; + + var focus = function () { + var body = SelectorFind.ancestor(offscreen, 'body'); + body.each(function (b) { + switcher.toOff(b, offscreen); + }); + }; + + var isOffscreen = function (other) { + return Class.has(other, hash); + }; + + var contents = function () { + Consolidator.consolidate(offscreen, isOffscreen); + var data = Struct.immutable('elements', 'html', 'container'); + var elements = Traverse.children(offscreen); + var html = Html.get(offscreen); + return data(elements, html, offscreen); + }; + + var detach = function () { + Remove.remove(offscreen); + }; + + var container = function () { + return offscreen; + }; + + return { + attach: attach, + focus: focus, + contents: contents, + container: container, + detach: detach + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.sloth.api.ProxyPaste', + + [ + 'ephox.peanut.Fun', + 'ephox.plumber.tap.function.BlockTap', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sloth.api.Paste', + 'ephox.sloth.engine.Offscreen', + 'ephox.sugar.api.Traverse' + ], + + function (Fun, BlockTap, Event, Events, Paste, Offscreen, Traverse) { + return function (switcher, element) { + var offscreen = Offscreen(switcher); + + var postpaste = function () { + switcher.cleanup(); + var contents = offscreen.contents(); + offscreen.detach(); + events.trigger.after(contents.elements(), contents.html(), offscreen.container()); + }; + + var tap = BlockTap.tap(function () { + events.trigger.before(); + offscreen.attach(element); + offscreen.focus(); + Paste.run(Traverse.owner(element), tap, postpaste); + }); + + var handler = function () { + tap.instance(); + }; + + var events = Events.create({ + before: Event([]), + after: Event(['elements', 'html', 'container']) + }); + + var destroy = Fun.noop; + + return { + instance: Fun.constant(handler), + destroy: destroy, + events: events.registry + }; + }; + + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.pastiche.Pastiche', + + [ + 'ephox.cement.api.CementConstants', + 'ephox.cement.pastiche.IeBlob', + 'ephox.compass.Arr', + 'ephox.fred.PlatformDetection', + 'ephox.fussy.api.WindowSelection', + 'ephox.limbo.api.RunPaste', + 'ephox.limbo.api.Sources', + 'ephox.peanut.Fun', + 'ephox.perhaps.Option', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.sloth.api.BodySwitch', + 'ephox.sloth.api.DivSwitch', + 'ephox.sloth.api.ProxyPaste', + 'ephox.sugar.api.Class', + 'ephox.sugar.api.Elements', + 'ephox.sugar.api.Node', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.Traverse', + 'global!console', + 'global!setTimeout' + ], + + function (CementConstants, IeBlob, Arr, PlatformDetection, WindowSelection, RunPaste, Sources, Fun, Option, Event, Events, BodySwitch, DivSwitch, ProxyPaste, Class, Elements, Node, Remove, Traverse, console, setTimeout) { + var platform = PlatformDetection.detect(); + + return function (prePasteFilter, body, mergeSettings, intraFlag) { + // Temporary hack until we restructure in TBIO-1515 + var findClipboardTags = function (container, isWord) { + return (intraFlag !== undefined && !isWord) ? intraFlag.findClipboardTags(Traverse.children(container)) : Option.none(); + }; + + + var events = Events.create({ + paste: Event(['elements', 'assets']), + error: Event(['message']) + }); + + var fakeSelecton = { + // dupe from hare.selection.Selection + set: function (win, range) { + WindowSelection.setExact(win, range.startContainer(), range.startOffset(), range.endContainer(), range.endOffset()); + } + }; + + // TBIO-2019: scrollbar lock on paste. + // When using DivSwitch for inline editing, FF & webkit browsers will lock the scrollbar after paste + // This is because the the offscreen div was not used and hence no filtration was run and the scrollbar unlock code never got called + // To verify this paste formatted html and see the formatting unchanged <span style="color:red">test</span> + // DivSwitch calls focus on the offscreen div, FF & Webkit do not set selection on focus, + // so inserting into offscreen div fails, bypassing the rest of the past process. + // It works in IE because amazingly IE sets selection on focus. + // Calling BodySwitch with IE inline mode paste fails altogether, the cause of the failure is unknown + var switchF = platform.browser.isIE() && Node.name(body) !== 'body' ? DivSwitch: BodySwitch; + var switcher = switchF(fakeSelecton); + var documentElement = Traverse.owner(body); + var proxyPaste = ProxyPaste(switcher, body); + var backgroundAssets = Option.none(); + + proxyPaste.events.after.bind(function (event) { + var container = event.container(); + switcher.toOn(body, container); + + // Run a paste filter over the off-screen div. + prePasteFilter(container); + + Class.add(container, CementConstants.binStyle()); + var isWord = Sources.isWord(platform, container); + + var pasteImpl = function (pasteSettings) { + var merging = (isWord && pasteSettings.mergeOfficeStyles) === true || (!isWord && pasteSettings.mergeHtmlStyles === true); + + try { + var dump = RunPaste.go(documentElement, platform, container, merging, isWord); + if (dump !== undefined && dump !== null && dump.length > 0) { + var elements = Elements.fromHtml(dump); + + backgroundAssets.fold(function () { + events.trigger.paste(elements, []); + }, function (future) { + future.get(function (assets) { + events.trigger.paste(elements, assets); + }); + }); + backgroundAssets = Option.none(); + } else { + // This is required to stop the scroll blocking. (TBIO-2440) + events.trigger.paste([], []); + } + } catch (e) { + console.error(e); + events.trigger.error('errors.paste.process.failure'); + } + }; + + // This potentially prompts the user, so it needs to be a callback + var normalPaste = Fun.curry(mergeSettings.get, isWord, pasteImpl); + + // Temporary hack until we restructure in TBIO-1515 + findClipboardTags(container, isWord).fold(normalPaste, function (tags) { + Arr.each(tags, Remove.remove); + // making sure it's asynchronous in both scenarios + setTimeout(function () { + // No need to call mergeSettings.get, we're just hard coding true + pasteImpl({ mergeHtmlStyles: true }); + }, 0); + }); + }); + + var destroy = function () { + proxyPaste.destroy(); + }; + + var handler = function (raw) { + try { + backgroundAssets = IeBlob.convert(raw); + var instance = proxyPaste.instance(); + instance(); + } catch (e) { + console.error(e); + events.trigger.error('errors.paste.process.failure'); + } + }; + + return { + handler: handler, + isSupported: Fun.constant(true), + events: events.registry, + destroy: destroy + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.smartpaste.PasteHandlers', + + [ + 'ephox.cement.html.HtmlPaste', + 'ephox.cement.images.ImagePaste', + 'ephox.cement.pastiche.Pastiche', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.scullion.Struct', + 'ephox.violin.Strings' + ], + + function (HtmlPaste, ImagePaste, Pastiche, Event, Events, Struct, Strings) { + var result = Struct.immutable('captured'); + + var dataContainsMicrosoftOfficeUrn = function (data) { + // copied from ELJ, this logic doesn't exist in Tord and Pastiche's version isn't good enough + return Strings.contains(data, '<html') && + (Strings.contains(data, 'xmlns:o="urn:schemas-microsoft-com:office:office"') || + Strings.contains(data, 'xmlns:x="urn:schemas-microsoft-com:office:excel"')); + }; + + return function (prePasteFilter, body, mergeSettings, pasteSettings) { + // Temporary hack until we restructure in TBIO-1515 + var intraFlag = pasteSettings.intraFlag; + + var htmlPaste = HtmlPaste(mergeSettings, pasteSettings); + var imagePaste = ImagePaste(pasteSettings); + var fallback = Pastiche(prePasteFilter, body, mergeSettings, intraFlag); + + var events = Events.create({ + paste: Event(['elements', 'assets']), + error: Event(['message']), + cancel: Event([]) + }); + + var bindEvents = function (source) { + // why can't this be easy + source.events.error.bind(function (event) { + events.trigger.error(event.message()); + }); + source.events.paste.bind(function (event) { + var elements = event.elements(); + var assets = event.assets(); + + if (elements.length === 0 && assets.length === 0) + events.trigger.cancel(); + else events.trigger.paste(elements, assets); + }); + }; + + bindEvents(htmlPaste); + bindEvents(imagePaste); + bindEvents(fallback); + + var htmlRawImpl = function (raw, preferredType) { + var data = raw.clipboardData.getData(preferredType); + // the decision was made that non-word HTML paste uses pastiche, + // rather than run pastiche after tord + var captured = dataContainsMicrosoftOfficeUrn(data) ? + htmlPaste.handler(data) : + execFallback(raw, preferredType); + + return result(captured); + }; + + var imageRawImpl = function (raw, _) { + var captured = imagePaste.handler(raw.clipboardData.items); + return result(captured); + }; + + // has it's own function to ensure when the arguments change both places are updated + var execFallback = function (raw, _) { + fallback.handler(raw); + return false; + }; + + var fallbackImpl = function (raw, preferredType) { + var captured = execFallback(raw, preferredType); + return result(captured); + }; + + // this must contain everything from the priority list in PasteBroker + var handlers = { + 'html': htmlRawImpl, + 'image': imagePaste.isSupported() ? imageRawImpl : fallbackImpl, + 'files': imagePaste.isSupported() ? imageRawImpl : fallbackImpl, + 'fallback': fallbackImpl + }; + + // Temporary hack until we restructure in TBIO-1515 + if (intraFlag !== undefined) { + handlers[intraFlag.clipboardType()] = fallbackImpl; + } + + var destroy = function () { + fallback.destroy(); + }; + + return { + events: events.registry, + handlers: handlers, + destroy: destroy + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.smartpaste.PasteBroker', + + [ + 'ephox.cement.smartpaste.Inspection', + 'ephox.cement.smartpaste.PasteHandlers', + 'ephox.perhaps.Option', + 'ephox.perhaps.Options', + 'global!RegExp' + ], + + function (Inspection, PasteHandlers, Option, Options, RegExp) { + // these must match the list of handler functions in PasteHandlers + var defaultPriority = ['html', 'image', 'files']; + + var unknownFlavor = { flavor: 'fallback' }; + + var getPreferredFlavor = function (priority, data) { + if (!Inspection.isValidData(data)) return unknownFlavor; + var types = data.types; + + var r = Options.findMap(priority, function (p) { + // case insensitive match on priority text (e.g. 'html' matches 'text/html') + var pmatch = new RegExp(p, 'i'); + return Options.findMap(types, function (t) { + return t.match(pmatch) !== null ? + Option.some({ type: t, flavor: p }) : + Option.none(); + }); + }); + return r.getOr(unknownFlavor); + }; + + // extracted to enforce separation of concerns between events, priority order and handling functions + var createHandler = function (intraFlag, handlers) { + + // Temporary hack until we restructure in TBIO-1515 + var priority = intraFlag === undefined ? defaultPriority : [ intraFlag.clipboardType() ].concat(defaultPriority); + + return function (raw) { + var preferred = getPreferredFlavor(priority, raw.clipboardData); + var impl = handlers[preferred.flavor]; + var result = impl(raw, preferred.type); + if (result.captured()) { + raw.preventDefault(); + } + }; + }; + + return function (prePasteFilter, body, mergeSettings, pasteSettings) { + var pasteHandlers = PasteHandlers(prePasteFilter, body, mergeSettings, pasteSettings); + + var handlePaste = createHandler(pasteSettings.intraFlag, pasteHandlers.handlers); + + var destroy = function () { + pasteHandlers.destroy(); + }; + + return { + events: pasteHandlers.events, + handlePaste: handlePaste, + destroy: destroy + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.porkbun.SourceEvent', + + [ + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.porkbun.Event' + ], + + function (Arr, Fun, Event) { + + /** An event sourced from another event. + + :: ([String], {bind: ..., unbind: ...}) -> SourceEvent + */ + return function (fields, source) { + var mine = Event(fields); + var numHandlers = 0; + + var triggerer = function(evt) { + // yay! Let's unbox this event, convert it to a varargs, so it can be re-boxed! + var args = Arr.map(fields, function (field) { + return evt[field](); + }); + mine.trigger.apply(null, args); + }; + + var bind = function (handler) { + mine.bind(handler); + numHandlers++; + if (numHandlers === 1) { + source.bind(triggerer); + } + }; + + var unbind = function (handler) { + mine.unbind(handler); + numHandlers--; + if (numHandlers === 0) { + source.unbind(triggerer); + } + }; + + return { + bind: bind, + unbind: unbind, + trigger: Fun.die("Cannot trigger a source event.") + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.cement.api.Cement', + + [ + 'ephox.cement.flash.Flash', + 'ephox.cement.smartpaste.MergeSettings', + 'ephox.cement.smartpaste.PasteBroker', + 'ephox.limbo.api.RtfImage', + 'ephox.plumber.tap.function.BlockTap', + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.porkbun.SourceEvent', + 'ephox.sloth.api.Paste', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.InsertAll' + ], + + function (Flash, MergeSettings, PasteBroker, RtfImage, BlockTap, Event, Events, SourceEvent, Paste, Element, InsertAll) { + return function (body, createDialog, prePasteFilter, cementConfig) { + var flash = Flash(createDialog, cementConfig); + var mergeSettings = MergeSettings(createDialog, cementConfig); + var pasteSettings = { baseUrl: cementConfig.baseUrl, allowLocalImages: cementConfig.allowLocalImages, intraFlag: cementConfig.intraFlag }; + var pasteBroker = PasteBroker(prePasteFilter, body, mergeSettings, pasteSettings); + + var events = Events.create({ + cancel: SourceEvent([], mergeSettings.events.cancel), // only merge settings can cancel paste, not flash + error: Event(['message']), + insert: Event(['elements', 'assets']) + }); + + var insert = function (event) { + pasteTap.control.unblock(); + events.trigger.insert(event.elements(), event.assets()); + }; + + flash.events.insert.bind(insert); + + var pasteTap = BlockTap.tap(function (nativeEvent) { + if (Paste.willBlock()) { + /* + On IE10, a second paste is required. That happens synchronously, before we can + return anything that says "block the tap". + In order to make this code reentrant, we need to eagerly block. + */ + pasteTap.control.block(); + + /* + We then need to cancel the native event, because due to reentrancy the "is blocked" + check below actually returns false. If we don't prevent default here, we allow the + default paste to complete on the initial paste event. + */ + nativeEvent.preventDefault(); + } + + pasteBroker.handlePaste(nativeEvent); + + // If dialogs are opened, we set the block and need to prevent default + if (pasteTap.control.isBlocked()) nativeEvent.preventDefault(); + }); + + // block the broker from receiving paste events while the merge window is open. + mergeSettings.events.open.bind(pasteTap.control.block); + mergeSettings.events.close.bind(pasteTap.control.unblock); + + pasteBroker.events.paste.bind(function (event) { + var elements = event.elements(); + var content = Element.fromTag('div'); + InsertAll.append(content, elements); + + if (RtfImage.exists(content)) { + // block the broker from receiving paste events while the flash window is open. + pasteTap.control.block(); + flash.gordon(content, event.assets()); + } else { + insert(event); + } + }); + + var destroy = function () { + pasteBroker.destroy(); + }; + + var passThroughError = function (event) { + pasteTap.control.unblock(); + events.trigger.error(event.message()); + }; + flash.events.error.bind(passThroughError); + pasteBroker.events.error.bind(passThroughError); + + return { + paste: pasteTap.instance, + isBlocked: pasteTap.control.isBlocked, + destroy: destroy, + events: events.registry + }; + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.settings.Defaults', + + [ + + ], + + function() { + return { + officeStyles: 'prompt', + htmlStyles: 'clean' + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.styles.Styles', + + [ + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorExists', + 'ephox.sugar.api.SelectorFind', + 'global!document' + ], + + function(Attr, Element, Insert, Remove, SelectorExists, SelectorFind, document) { + var styleid = 'powerpaste-styles'; + var styleidselector = '#' + styleid; + + var injectStyles = function(url) { + if (!SelectorExists.any(styleidselector)){ + var htmlString = + '<style>' + + '.ephox-cement-flashbin-helpcopy-kbd ' + + '{font-size: 3em !important; text-align: center !important; vertical-align: middle !important; margin: .5em 0} ' + + '.ephox-cement-flashbin-helpcopy-kbd .ephox-polish-help-kbd ' + + '{font-size: 3em !important; vertical-align: middle !important;} ' + + '.ephox-cement-flashbin-helpcopy a ' + + '{text-decoration: underline} ' + + '.ephox-cement-flashbin-loading-spinner ' + + '{background-image: url(' + url + ') !important; width: 96px !important; height:96px !important; display: block; margin-left: auto !important; margin-right: auto !important; margin-top: 2em !important; margin-bottom: 2em !important;} ' + + '.ephox-cement-flashbin-loading p ' + + '{text-align: center !important; margin: 2em 0 !important} ' + + '.ephox-cement-flashbin-target ' + + '{height: 1px !important;} ' + + '.ephox-cement-flashbin-target.ephox-cement-flash-activate ' + + '{height: 150px !important; width: 100% !important;} ' + + '.ephox-cement-flashbin-target object ' + + '{height: 1px !important;} ' + + '.ephox-cement-flashbin-target.ephox-cement-flash-activate object ' + + '{height: 150px !important; width: 100% !important;} ' + + '</style>'; + + var style = Element.fromHtml(htmlString); + Attr.set(style, 'type', 'text/css'); + Attr.set(style, 'id', styleid); + + var head = SelectorFind.first('head').getOrDie('Head element could not be found.'); + + Insert.append(head, style); + + } + }; + + var removeStyles = function() { + if (SelectorExists.any(styleidselector)) { + + var head = SelectorFind.first('head').getOrDie('Head element could not be found.'); + var style = SelectorFind.descendant(head, styleidselector).getOrDie('The style element could not be removed'); + + Remove.remove(style); + + } + }; + + return { + injectStyles: injectStyles, + removeStyles: removeStyles + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.ModernTinyDialog', + + [ + 'ephox.porkbun.Event', + 'ephox.porkbun.Events', + 'ephox.powerpaste.util.NodeUtil', + 'ephox.sugar.api.Attr', + 'ephox.sugar.api.Element', + 'ephox.sugar.api.Insert', + 'ephox.sugar.api.Remove', + 'ephox.sugar.api.SelectorFind' + ], + + function(Event, Events, NodeUtil, Attr, Element, Insert, Remove, SelectorFind) { + return function(editor) { + var createDialog = function() { + var win, title = "", content = "", controls = [], dialogContent = null; + + var events = Events.create({ + close: Event([]) + }); + + var setTitle = function(label) { + title = label; + }; + + var setContent = function(c) { + if (tinymce.Env.safari) { + + } + var contentString = NodeUtil.nodeToString(c.dom()); + content = [{ + type: 'container', + html: contentString + }]; + dialogContent = c; + }; + + var setButtons = function(buttons) { + var tinyButtons = []; + + buttons.forEach(function(element, index, array){ + //Convert cement buttons into tiny buttons + tinyButtons.push({ + text: element.text, + onclick: element.click + }); + }); + + controls = tinyButtons; + + }; + + var winCloseEvent = function(e) { + events.trigger.close(); + }; + + var programmaticWinClose = function() { + //Unbind the close event, as the dialog close event has already triggered and doesn't need to be triggered again + win.off('close', winCloseEvent); + win.close('close'); + }; + + var show = function() { + //If we don't have any buttons, we need to add one (even if it just closes the dialog) + if (controls.length === 0) { + //This gives us back the capability to hit esc to close the dialog & the dialog doesn't take focus away from the editor + controls = [{ + text: 'Close', + onclick: function() { + win.close(); + } + }]; + } + + var winSettings = { + title: title, + spacing: 10, + padding: 10, + items: content, + buttons: controls + }; + + win = editor.windowManager.open(winSettings); + + var tinyWindow = Element.fromDom(win.getEl()); + var proxy = SelectorFind.descendant(tinyWindow, '.' + Attr.get(dialogContent, 'class')).getOrDie('We must find this element or we cannot continue'); + Insert.before(proxy, dialogContent); + Remove.remove(proxy); + + win.on('close', winCloseEvent); + + }; + + var hide = function() { + programmaticWinClose(); + }; + + var destroy = function() { + programmaticWinClose(); + }; + + var reflow = function() { + //(this doesn't work, reflow doesn't calc based on what's actually there, it works it out based on what's in the container on tiny's side) + //So we could update the items, but for now the dialog sizes match so... + }; + + return { + events: events.registry, + setTitle: setTitle, + setContent: setContent, + setButtons: setButtons, + show: show, + hide: hide, + destroy: destroy, + reflow: reflow + }; + }; + + return { + createDialog: createDialog + }; + }; + + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.ModernPowerPaste', + [ + 'ephox.cement.api.Cement', + 'ephox.compass.Arr', + 'ephox.peanut.Fun', + 'ephox.powerpaste.i18n.I18n', + 'ephox.powerpaste.settings.Defaults', + 'ephox.powerpaste.styles.Styles', + 'ephox.powerpaste.tinymce.ErrorDialog', + 'ephox.powerpaste.tinymce.ModernTinyDialog', + 'ephox.powerpaste.util.NodeUtil', + 'ephox.sugar.api.DomEvent', + 'ephox.sugar.api.Element', + 'global!setTimeout', + 'global!tinymce' + ], + function (Cement, Arr, Fun, I18n, Defaults, Styles, ErrorDialog, ModernTinyDialog, NodeUtil, DomEvent, Element, setTimeout, tinymce) { + return function (editor, url, settings, uploader) { + + var bm, swfUrl, imgUrl, cssUrl, jsUrl; + + jsUrl = (settings ? settings.swfUrl : url) + '/js'; + swfUrl = (settings ? settings.swfUrl : url) + '/flash/textboxpaste.swf'; + imgUrl = (settings ? settings.imgUrl : url) + '/img/spinner_96.gif'; + cssUrl = (settings ? settings.cssUrl : url) + '/css/editorcss.css'; + + editor.on('init', function(e) { + //Inject the styles for our dialog into the page + Styles.injectStyles(imgUrl); + + //Inject css into editor + editor.dom.loadCSS(cssUrl); + + var cementSettings = { + baseUrl: jsUrl, + swf: swfUrl, + officeStyles: editor.settings.powerpaste_word_import || Defaults.officeStyles, + htmlStyles: editor.settings.powerpaste_html_import || Defaults.htmlStyles, + translations: I18n.translate, + allowLocalImages: editor.settings.powerpaste_allow_local_images + }; + + var tinyDialog = ModernTinyDialog(editor); + var ed = Element.fromDom(editor.getBody()); + var cement = Cement(ed, tinyDialog.createDialog, Fun.noop, cementSettings); + + cement.events.cancel.bind(function() { + bm = null; + }); + + cement.events.error.bind(function(event) { + + bm = null; + + ErrorDialog.showDialog(editor, + I18n.translate( + event.message() + ) + ); + }); + + cement.events.insert.bind(function(event) { + + var stringHTML = Arr.map(event.elements(), function (element) { + return NodeUtil.nodeToString(element.dom()); + }).join(''); + + //This code was taken from tiny4 + if (editor.hasEventListeners('PastePostProcess')) { + // We need to attach the element to the DOM so Sizzle selectors work on the contents + var tempBody = editor.dom.add(editor.getBody(), 'div', {style: 'display:none'}, stringHTML); + stringHTML = editor.fire('PastePostProcess', {node: tempBody}).node.innerHTML; + editor.dom.remove(tempBody); + } + + //Ensure the editor has focus + editor.focus(); + + //Wait for focus to come back (ie10) + setTimeout(function(){ + + //Once we've got the html we want to insert and have performed post processing, return the + editor.selection.moveToBookmark(bm); //the selection to where it was + + //Delete the bookmark reference so we can do it all again + bm = null; + + editor.undoManager.transact(function(){ + //Content insertion + editor.insertContent(stringHTML, {merge: editor.settings.paste_merge_formats !== false}); + + uploader.prepareImages(event.assets()); + }); + + uploader.uploadImages(event.assets()); + + }, 1); + + + }); + + DomEvent.bind(ed, 'paste', function (e) { + //We need to bookmark the selection before we paste the content + //So that it knows where to place it back in to the editor when we insert from cement. + + if (!bm) { + //Since ie pastes twice, we need to get the bookmark once and ignore the second + bm = editor.selection.getBookmark(); + } + + cement.paste(e.raw()); + + //IE appears to require that we blur the iframe + setTimeout(function() { + if (editor.windowManager.windows[0]) { + editor.windowManager.windows[0].getEl().focus(); + } + }, 1); + }); + + }); + + editor.on('remove', function(e) { + //When we're removing the last editor, we need to remove our injected styles + if (tinymce.editors.length === 1) { + Styles.removeStyles(); + } + }); + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.tinymce.TinyPowerPaste', + [ + 'ephox.powerpaste.imageupload.UploaderFactory', + 'ephox.powerpaste.tinymce.LegacyPowerPaste', + 'ephox.powerpaste.tinymce.ModernPowerDrop', + 'ephox.powerpaste.tinymce.ModernPowerPaste', + 'global!tinymce' + ], + + function (UploaderFactory, LegacyPowerPaste, ModernPowerDrop, ModernPowerPaste, tinymce) { + /*jshint jquery:true */ + return function (settings) { + + return function (editor, url) { + + var setupModern = function () { + var uploader = UploaderFactory(editor); + + ModernPowerPaste(editor, url, settings, uploader); + + if (!editor.settings.powerpaste_block_drop) { + ModernPowerDrop(editor, url, settings, uploader); + } + }; + + var setupLegacy = function () { + LegacyPowerPaste(editor, settings); + }; + + if (tinymce.Env.ie && tinymce.Env.ie < 10) { + setupLegacy(); + } else { + setupModern(); + } + + var blockDragEvents = function (element) { + editor.dom.bind(element, 'drop dragstart dragend dragover dragenter dragleave dragdrop draggesture', function(e) { + return tinymce.dom.Event.cancel(e); + }); + }; + + if (editor.settings.powerpaste_block_drop) { + editor.on('init', function(e) { + blockDragEvents(editor.getBody()); + blockDragEvents(editor.getDoc()); + }); + } + + if (editor.settings.paste_postprocess) { + editor.on('PastePostProcess', function(e) { + editor.settings.paste_postprocess.call(this, this, e); + }); + } + }; + }; + } +); + +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +(function (define, require, demand) { +define( + 'ephox.powerpaste.PowerPastePlugin', + [ + 'ephox.powerpaste.tinymce.TinyPowerPaste', + 'global!tinymce' + ], + function(TinyPowerPaste, tinymce) { + return function(settings) { + tinymce.PluginManager.requireLangPack('powerpaste', 'ar,ca,cs,da,de,el,es,fa,fi,fr_FR,he_IL,hr,hu_HU,it,ja,kk,ko_KR,nb_NO,nl,pl,pt_BR,pt_PT,ro,ru,sk,sl_SI,sv_SE,th_TH,tr,uk,zh_CN,zh_TW'); + tinymce.PluginManager.add('powerpaste', TinyPowerPaste(settings)); + + }; + } +); +})(ephox.bolt.module.api.define, ephox.bolt.module.api.require, ephox.bolt.module.api.demand); + +dem('ephox.powerpaste.PowerPastePlugin')(); + if (this.ephox && this.ephox.bolt) + this.ephox.bolt = old; +})(); diff --git a/static/tinymce1.3/plugins/powerpaste/plugin.min.js b/static/tinymce1.3/plugins/powerpaste/plugin.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a6f2107a2d0e5f786d7df2188750898ddb0da073 --- /dev/null +++ b/static/tinymce1.3/plugins/powerpaste/plugin.min.js @@ -0,0 +1,23 @@ +; +/* Ephox Fluffy plugin + * + * Copyright 2010-2016 Ephox Corporation. All rights reserved. + * + * Version: 1.0.0-3 + */ + +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};g("1",[],function(){var a=function(a,b){return{isRequired:a,applyPatch:b}},b=function(a,b){return function(){var c=Array.prototype.slice.call(arguments),d=b.apply(this,c),e="undefined"==typeof d?c:d;return a.apply(this,e)}},c=function(a,b){return function(){var c=a.apply(this,arguments),d=b(c),e="undefined"==typeof d?c:d;return e}},d=function(a,b){if(a)for(var c=0;c<b.length;c++)b[c].isRequired(a)&&b[c].applyPatch(a);return a};return{nu:a,before:b,after:c,applyPatches:d}}),g("5",[],function(){var a=function(a,b){b=b.split(".");for(var c=0;c<b.length&&(a=a[b[c]],a);c++);return a};return{resolve:a}}),h("d",setInterval),h("e",clearInterval),g("b",["d","e"],function(a,b){var c=function(){return(new Date).getTime()},d=function(d,e,f,g,h){var i,j=c();i=a(function(){d()&&(b(i),e()),c()-j>h&&(b(i),f())},g)};return{waitFor:d}}),h("4",window),h("c",document),g("8",["b","4","c"],function(a,b,c){var d=function(a,c){var d=a.currentStyle?a.currentStyle[c]:b.getComputedStyle(a,null)[c];return d?d:""},e=function(a){return function(){var b=d(a,"position").toLowerCase();return"absolute"===b||"fixed"===b}},f=function(){var a=c.createElement("div");return a.style.display="none",a.className="mce-floatpanel",a},g=function(a){a.parentNode.removeChild(a)},h=function(b,d){var h=f();c.body.appendChild(h),a.waitFor(e(h),function(){g(h),b()},function(){g(h),d()},10,5e3)};return{waitForSkinLoaded:h}}),h("9",alert),g("6",["8","9"],function(a,b){var c=function(a,b){a.notificationManager?a.notificationManager.open({text:b,type:"warning",timeout:0,icon:""}):a.windowManager.alert(b)},d=function(d){d.EditorManager.on("AddEditor",function(d){var e=d.editor,f=e.settings.service_message;f&&a.waitForSkinLoaded(function(){c(e,e.settings.service_message)},function(){b(f)})})};return{error:c,register:d}}),g("2",["5","1","6","4"],function(a,b,c,d){var e=function(b){var c,e,f=a.resolve(d,"tinymce.util.URI");c=b.base_url,c&&(this.baseURL=new f(this.documentBaseURL).toAbsolute(c.replace(/\/+$/,"")),this.baseURI=new f(this.baseURL)),e=b.suffix,b.suffix&&(this.suffix=e),this.defaultSettings=b},f=function(b){var c=a.resolve(d,"tinymce.util.Tools");return[c.extend({},this.defaultSettings,b)]},g=function(a){return"function"!=typeof a.overrideDefaults},h=function(a){c.register(a),a.overrideDefaults=e,a.EditorManager.init=b.before(a.EditorManager.init,f)};return{patch:b.nu(g,h)}}),g("a",[],function(){var a=0,b=1,c=-1,d=function(a){return parseInt(a,10)},e=function(a){return function(){return a}},f=function(a,b,c){return{major:e(a),minor:e(b),patch:e(c)}},g=function(a){var b=/([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(a);return b?f(d(b[1]),d(b[2]),d(b[3])):f(0,0,0)},h=function(d,e){var f=d-e;return 0===f?a:f>0?b:c},i=function(b,c){var d=h(b.major(),c.major());if(d!==a)return d;var e=h(b.minor(),c.minor());if(e!==a)return e;var f=h(b.patch(),c.patch());return f!==a?f:a};return{nu:f,parse:g,compare:i}}),g("7",["a"],function(a){var b=function(a){var b=[a.majorVersion,a.minorVersion].join(".");return b.split(".").slice(0,3).join(".")},c=function(c){return c?a.parse(b(c)):null},d=function(b,d){return a.compare(c(b),a.parse(d))<0};return{getVersion:c,isLessThan:d}}),g("3",["7","1"],function(a,b){var c=function(a){return function(b){var c=b.plugin_base_urls;for(var d in c)a.PluginManager.urls[d]=c[d]}},d=function(b){return a.isLessThan(b,"4.5.0")},e=function(a){a.overrideDefaults=b.before(a.overrideDefaults,c(a))};return{patch:b.nu(d,e)}}),g("0",["1","2","3","4"],function(a,b,c,d){var e=function(d){a.applyPatches(d,[b.patch,c.patch])};return e(d.tinymce),function(){return{applyPatches:e}}}),d("0")()}();; + +/* Ephox PowerPaste plugin + * + * Copyright 2010-2016 Ephox Corporation. All rights reserved. + * + * Version: 2.1.10-115 + */ + +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;i<g;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;f<c;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("12",Array),h("13",String),g("g",["12","13"],function(a,b){var c=function(a){return function(b){return a===b}},d=function(){var b=a.prototype.indexOf,d=function(a,c){return b.call(a,c)},e=function(a,b){return r(a,c(b))};return void 0===b?e:d}(),e=function(a,b){return d(a,b)>-1},f=function(a,b){return r(a,b)>-1},g=function(a,b){for(var c=[],d=0;d<a.length;d+=b){var e=a.slice(d,d+b);c.push(e)}return c},h=function(b,c){for(var d=b.length,e=new a(d),f=0;f<d;f++){var g=b[f];e[f]=c(g,f,b)}return e},i=function(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];b(e,c,a)}},j=function(a,b){for(var c=[],d=[],e=0,f=a.length;e<f;e++){var g=a[e],h=b(g,e,a)?c:d;h.push(g)}return{pass:c,fail:d}},k=function(a,b){for(var c=[],d=0,e=a.length;d<e;d++){var f=a[d];b(f,d,a)&&c.push(f)}return c},l=function(a,b){if(0===a.length)return[];for(var c=b(a[0]),d=[],e=[],f=0,g=a.length;f<g;f++){var h=a[f],i=b(h);i!==c&&(d.push(e),e=[]),c=i,e.push(h)}return 0!==e.length&&d.push(e),d},m=function(a,b,c){return n(z(a),b,c)},n=function(a,b,c){return i(a,function(a){c=b(c,a)}),c},o=function(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];if(b(e,c,a))return e}},p=function(a,b,c){var d=o(a,b);return void 0!==d?d:c},q=function(a,c,d){var e=o(a,c);if(void 0===e)throw d||"Could not find element in array: "+b(a);return e},r=function(a,b){for(var c=b||v,d=0,e=a.length;d<e;++d)if(c(a[d])===!0)return d;return-1},s=a.prototype.push,t=function(a){for(var b=[],c=0,d=a.length;c<d;++c)s.apply(b,a[c]);return b},u=function(a,b){var c=h(a,b);return t(c)},v=c(!0),w=function(a,b){for(var c=b||v,d=0,e=a.length;d<e;++d)if(c(a[d],d)!==!0)return!1;return!0},x=function(a,b){return a.length===b.length&&w(a,function(a,c){return a===b[c]})},y=a.prototype.slice,z=function(a){var b=y.call(a,0);return b.reverse(),b},A=function(a,b){return k(a,function(a){return!e(b,a)})},B=function(a,c){for(var d={},e=0,f=a.length;e<f;e++){var g=a[e];d[b(g)]=c(g,e)}return d},C=function(a){return[a]};return{map:h,each:i,partition:j,filter:k,groupBy:l,indexOf:d,foldr:m,foldl:n,find:o,findIndex:r,findOr:p,findOrDie:q,flatten:t,bind:u,forall:w,exists:f,contains:e,equal:x,reverse:z,chunk:g,difference:A,mapToObject:B,pure:C}}),g("p",["12"],function(a){var b=function(){},c=function(a,b){return function(){return a(b.apply(null,arguments))}},d=function(a){return function(){return a}},e=function(a){return a},f=function(a,b){return a===b},g=function(b){for(var c=new a(arguments.length-1),d=1;d<arguments.length;d++)c[d-1]=arguments[d];return function(){for(var d=new a(arguments.length),e=0;e<d.length;e++)d[e]=arguments[e];var f=c.concat(d);return b.apply(null,f)}},h=function(a){return function(){return!a.apply(null,arguments)}},i=function(a){return function(){throw a}},j=function(a){return a()},k=function(a){a()};return{noop:b,compose:c,constant:d,identity:e,tripleEquals:f,curry:g,not:h,die:i,apply:j,call:k}}),h("14",Object),g("n",["p","14"],function(a,b){var c=a.constant(!1),d=a.constant(!0),e=function(){return f},f=function(){var f=function(a){return a.isNone()},g=function(a){return a()},h=function(a){return a},i={fold:function(a,b){return a()},is:c,isSome:c,isNone:d,getOr:h,getOrThunk:g,getOrDie:function(a){throw a||"error: getOrDie called on none."},or:h,orThunk:g,map:e,ap:e,each:e,bind:e,flatten:e,exists:c,forall:d,filter:e,equals:f,equals_:f,toArray:function(){return[]},toString:a.constant("none()")};return b.freeze&&b.freeze(i),i}(),g=function(a){var b=function(){return a},h=function(){return k},i=function(b){return g(b(a))},j=function(b){return b(a)},k={fold:function(b,c){return c(a)},is:function(b){return a===b},isSome:d,isNone:c,getOr:b,getOrThunk:b,getOrDie:b,or:h,orThunk:h,map:i,ap:function(b){return b.fold(e,function(b){return g(b(a))})},each:i,bind:j,flatten:b,exists:j,forall:j,filter:function(b){return b(a)?k:f},equals:function(b){return b.is(a)},equals_:function(b,d){return b.fold(c,function(b){return d(a,b)})},toArray:function(){return[a]},toString:function(){return"some("+a+")"}};return k},h=function(a){return null===a||void 0===a?f:g(a)},i=function(a,b){return a.equals(b)},j=function(a,b,c){return a.equals_(b,c)};return{some:g,none:e,from:h,equals:i,equals_:j}}),g("c",["g","p"],function(a,b){return function(c){var d=function(){c.uploadImages()},e=function(d){a.each(d,function(d){d.fold(function(b,d,e,f){a.each(c.dom.select('img[src="'+e+'"]'),function(a){c.dom.setAttrib(a,"src",f.result)})},b.noop)})},f=function(a,b,c,d){return d.result};return{uploadImages:d,prepareImages:e,getLocalURL:f}}}),g("y",[],function(){return function(a){var b=!1;return function(){b||(b=!0,a.apply(null,arguments))}}}),h("2",tinymce),g("d",["2"],function(a){var b=function(){return"Your browser security settings may be preventing images from being imported."},c=function(){return a.Env.mac&&a.Env.webkit?b()+' <a href="https://support.ephox.com/entries/59328357-Safari-6-1-and-7-Flash-Sandboxing" style="text-decoration: underline">More information on paste for Safari</a>':b()},d=function(){return'Safari does not support direct paste of images. <a href="https://support.ephox.com/entries/88543243-Safari-Direct-paste-of-images-does-not-work" style="text-decoration: underline">More information on image pasting for Safari</a>'},e={"cement.dialog.paste.title":"Paste Formatting Options","cement.dialog.paste.instructions":"Choose to keep or remove formatting in the pasted content.","cement.dialog.paste.merge":"Keep Formatting","cement.dialog.paste.clean":"Remove Formatting","cement.dialog.flash.title":"Additional step needed to paste images","cement.dialog.flash.trigger-paste":"Your browser requires you to take one more action to paste the images in your content. Please press the below keys to complete the image paste:","cement.dialog.flash.missing":'Adobe Flash is required to import images from Microsoft Office. Install the <a href="http://get.adobe.com/flashplayer/" target="_blank">Adobe Flash Player</a>.',"cement.dialog.flash.press-escape":'Press <span class="ephox-polish-help-kbd">"Close"</span> to paste your content without images.',"loading.wait":"Please wait...","flash.clipboard.no.rtf":c(),"safari.imagepaste":d(),"webview.imagepaste":d(),"error.code.images.not.found":"The images service was not found: (","error.imageupload":"Image failed to upload: (","error.full.stop":").","errors.local.images.disallowed":"Local image paste has been disabled. Local images have been removed from pasted content.","flash.crashed":"Images have not been imported as Adobe Flash appears to have crashed. This may be caused by pasting large documents.","errors.imageimport.failed":"Some images failed to import.","errors.imageimport.unsupported":"Unsupported image type.","errors.imageimport.invalid":"Image is invalid."},f=function(a){return e[a]},g=function(b){return a.translate(f(b))};return{translate:g}}),g("s",[],function(){return{showDialog:function(a,b){var c=function(){win.close()},d=[{text:"Ok",onclick:c}],e={title:"Error",spacing:10,padding:10,items:[{type:"container",html:b}],buttons:d};win=a.windowManager.open(e)}}}),g("15",["y","d","s"],function(a,b,c){return function(d,e){var f=function(){return b.translate("error.code.images.not.found")+e+b.translate("error.full.stop")},g=function(){return b.translate("error.imageupload")+e+b.translate("error.full.stop")},h=function(a){var b=a.status(),e=0===b||b>=400||b<500,h=e?f:g;c.showDialog(d,h())},i=function(){return a(h)};return{instance:i}}}),g("3g",["g"],function(a){var b=function(b){var e=c(b),f=function(b){var c=b.split(" "),f=a.map(c,function(a){return d(e,a)});return f.join(" ")};return{resolve:f}},c=function(a){return a.replace(/\./g,"-")},d=function(a,b){return a+"-"+b};return{create:b,cssNamespace:c,cssClass:d}}),g("2d",["3g"],function(a){var b=a.create("ephox-salmon");return{resolve:b.resolve}}),g("26",["p","2d"],function(a,b){var c=b.resolve("upload-image-in-progress"),d="data-"+b.resolve("image-blob");return{uploadInProgress:a.constant(c),blobId:a.constant(d)}}),g("3h",[],function(){return function(a,b,c){var d=c||!1,e=function(){b(),d=!0},f=function(){a(),d=!1},g=function(){var a=d?f:e;a()},h=function(){return d};return{on:e,off:f,toggle:g,isOn:h}}}),g("1b",["12","13"],function(a,b){var c=function(c){if(null===c)return"null";var d=typeof c;return"object"===d&&a.prototype.isPrototypeOf(c)?"array":"object"===d&&b.prototype.isPrototypeOf(c)?"string":d},d=function(a){return function(b){return c(b)===a}};return{isString:d("string"),isObject:d("object"),isArray:d("array"),isNull:d("null"),isBoolean:d("boolean"),isUndefined:d("undefined"),isFunction:d("function"),isNumber:d("number")}}),g("1c",["14"],function(a){var b=function(){var b=a.keys,c=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b};return void 0===b?c:b}(),c=function(a,c){for(var d=b(a),e=0,f=d.length;e<f;e++){var g=d[e],h=a[g];c(h,g,a)}},d=function(a,b){return e(a,function(a,c,d){return{k:c,v:b(a,c,d)}})},e=function(a,b){var d={};return c(a,function(c,e){var f=b(c,e,a);d[f.k]=f.v}),d},f=function(a,b){var d={},e={};return c(a,function(a,c){var f=b(a,c)?d:e;f[c]=a}),{t:d,f:e}},g=function(a,b){var d=[];return c(a,function(a,c){d.push(b(a,c))}),d},h=function(a,c){for(var d=b(a),e=0,f=d.length;e<f;e++){var g=d[e],h=a[g];if(c(h,g,a))return h}},i=function(a){return g(a,function(a){return a})},j=function(a){return i(a).length};return{bifilter:f,each:c,map:d,mapToArray:g,tupleMap:e,find:h,keys:b,values:i,size:j}}),g("2e",[],function(){return{ATTRIBUTE:2,CDATA_SECTION:4,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,ELEMENT:1,TEXT:3,PROCESSING_INSTRUCTION:7,ENTITY_REFERENCE:5,ENTITY:6,NOTATION:12}}),g("1d",["2e"],function(a){var b=function(a){var b=a.dom().nodeName;return b.toLowerCase()},c=function(a){return a.dom().nodeType},d=function(a){return a.dom().nodeValue},e=function(a){return function(b){return c(b)===a}},f=function(d){return c(d)===a.COMMENT||"#comment"===b(d)},g=e(a.ELEMENT),h=e(a.TEXT),i=e(a.DOCUMENT);return{name:b,type:c,value:d,isElement:g,isText:h,isDocument:i,isComment:f}}),h("1e",Error),g("1f",[],function(){return"undefined"==typeof console&&(console={log:function(){}}),console}),g("j",["1b","g","1c","1d","1e","1f"],function(a,b,c,d,e,f){var g=function(b,c,d){if(!(a.isString(d)||a.isBoolean(d)||a.isNumber(d)))throw f.error("Invalid call to Attr.set. Key ",c,":: Value ",d,":: Element ",b),new e("Attribute value was not simple");b.setAttribute(c,d+"")},h=function(a,b,c){g(a.dom(),b,c)},i=function(a,b){var d=a.dom();c.each(b,function(a,b){g(d,b,a)})},j=function(a,b){var c=a.dom().getAttribute(b);return null===c?void 0:c},k=function(a,b){var c=a.dom();return!(!c||!c.hasAttribute)&&c.hasAttribute(b)},l=function(a,b){a.dom().removeAttribute(b)},m=function(a){var b=a.dom().attributes;return void 0===b||null===b||0===b.length},n=function(a){return b.foldl(a.dom().attributes,function(a,b){return a[b.name]=b.value,a},{})},o=function(a,b,c){k(a,c)&&!k(b,c)&&h(b,c,j(a,c))},p=function(a,c,e){d.isElement(a)&&d.isElement(c)&&b.each(e,function(b){o(a,c,b)})};return{clone:n,set:h,setAll:i,get:j,has:k,remove:l,hasNone:m,transfer:p}}),g("5z",["g","j"],function(a,b){var c=function(a,c){var d=b.get(a,c);return void 0===d||""===d?[]:d.split(" ")},d=function(a,d,e){var f=c(a,d),g=f.concat([e]);b.set(a,d,g.join(" "))},e=function(d,e,f){var g=a.filter(c(d,e),function(a){return a!==f});g.length>0?b.set(d,e,g.join(" ")):b.remove(d,e)};return{read:c,add:d,remove:e}}),g("3i",["g","5z"],function(a,b){var c=function(a){return void 0!==a.dom().classList},d=function(a){return b.read(a,"class")},e=function(a,c){return b.add(a,"class",c)},f=function(a,c){return b.remove(a,"class",c)},g=function(b,c){a.contains(d(b),c)?f(b,c):e(b,c)};return{get:d,add:e,remove:f,toggle:g,supports:c}}),g("27",["3h","j","3i"],function(a,b,c){var d=function(a,b){c.supports(a)?a.dom().classList.add(b):c.add(a,b)},e=function(a){var d=c.supports(a)?a.dom().classList:c.get(a);0===d.length&&b.remove(a,"class")},f=function(a,b){if(c.supports(a)){var d=a.dom().classList;d.remove(b)}else c.remove(a,b);e(a)},g=function(a,b){return c.supports(a)?a.dom().classList.toggle(b):c.toggle(a,b)},h=function(b,d){var e=c.supports(b),f=b.dom().classList,g=function(){e?f.remove(d):c.remove(b,d)},h=function(){e?f.add(d):c.add(b,d)};return a(g,h,i(b,d))},i=function(a,b){return c.supports(a)&&a.dom().classList.contains(b)};return{add:d,remove:f,toggle:g,toggler:h,has:i}}),h("1g",document),g("k",["p","1e","1f","1g"],function(a,b,c,d){var e=function(a,b){var e=b||d,f=e.createElement("div");if(f.innerHTML=a,!f.hasChildNodes()||f.childNodes.length>1)throw c.error("HTML does not have a single root node",a),"HTML must have a single root node";return h(f.childNodes[0])},f=function(a,b){var c=b||d,e=c.createElement(a);return h(e)},g=function(a,b){var c=b||d,e=c.createTextNode(a);return h(e)},h=function(c){if(null===c||void 0===c)throw new b("Node cannot be null or undefined");return{dom:a.constant(c)}};return{fromHtml:e,fromTag:f,fromText:g,fromDom:h}}),g("3k",["g","1c","p","12"],function(a,b,c,d){var e=function(e,f){var g=function(){for(var b=new d(arguments.length),f=0;f<b.length;f++)b[f]=arguments[f];if(e.length!==b.length)throw'Wrong number of arguments to struct. Expected "['+e.length+']", got '+b.length+" arguments";var g={};return a.each(e,function(a,d){g[a]=c.constant(b[d])}),g},h=function(a,b){for(var d=0;d<e.length;d++){var g=f&&f[d]||c.tripleEquals,h=e[d];if(!g(a[h](),b[h]()))return!1}return!0},i=function(a){return b.map(a,function(a){return a()})};return{nu:g,eq:h,evaluate:i}};return{product:e}}),g("3j",["3k"],function(a){return function(){return a.product(arguments).nu}}),g("60",["1b","g"],function(a,b){var c=function(a){return a.slice(0).sort()},d=function(a,b){throw"All required keys ("+c(a).join(", ")+") were not specified. Specified keys were: "+c(b).join(", ")+"."},e=function(a){throw"Unsupported keys for object: "+c(a).join(", ")},f=function(c,d){if(!a.isArray(d))throw"The "+c+" fields must be an array. Was: "+d+".";b.each(d,function(b){if(!a.isString(b))throw"The value "+b+" in the "+c+" fields was not a string."})},g=function(a,b){throw"All values need to be of type: "+b+". Keys ("+c(a).join(", ")+") were not."},h=function(a){var d=c(a),e=b.find(d,function(a,b){return b<d.length-1&&a===d[b+1]});if(void 0!==e&&null!==e)throw"The field: "+e+" occurs more than once in the combined fields: ["+d.join(", ")+"]."};return{sort:c,reqMessage:d,unsuppMessage:e,validateStrArr:f,invalidTypeMessage:g,checkDupes:h}}),g("3l",["g","1c","p","n","60","14"],function(a,b,c,d,e,f){return function(g,h){var i=g.concat(h);if(0===i.length)throw"You must specify at least one required or optional field.";return e.validateStrArr("required",g),e.validateStrArr("optional",h),e.checkDupes(i),function(j){var k=b.keys(j),l=a.forall(g,function(b){return a.contains(k,b)});l||e.reqMessage(g,k);var m=a.filter(k,function(b){return!a.contains(i,b)});m.length>0&&e.unsuppMessage(m);var n={};return a.each(g,function(a){n[a]=c.constant(j[a])}),a.each(h,function(a){n[a]=c.constant(f.prototype.hasOwnProperty.call(j,a)?d.some(j[a]):d.none())}),n}}}),g("2c",["3j","3k","3l"],function(a,b,c){return{immutable:a,immutable2:b,immutableBag:c}}),g("3m",[],function(){var a=function(a,b){var c=[],d=function(a){return c.push(a),b(a)},e=b(a);do e=e.bind(d);while(e.isSome());return c};return{toArray:a}}),g("4j",["p"],function(a){return function(b,c,d){var e=b.isiOS()&&/ipad/i.test(d)===!0,f=b.isiOS()&&!e,g=b.isAndroid()&&3===b.version.major,h=b.isAndroid()&&4===b.version.major,i=e||g||h&&/mobile/i.test(d)===!0,j=b.isiOS()||b.isAndroid(),k=j&&!i,l=c.isSafari()&&b.isiOS()&&/safari/i.test(d)===!1;return{isiPad:a.constant(e),isiPhone:a.constant(f),isTablet:a.constant(i),isPhone:a.constant(k),isTouch:a.constant(j),isAndroid:b.isAndroid,isiOS:b.isiOS,isWebView:a.constant(l)}}}),g("4k",[],function(){var a=function(a,b,c){return{browser:{current:a,version:b},os:{current:c}}};return{create:a}}),g("61",[],function(){var a=function(a){return function(){return a}},b=function(b,c,d){for(var e=0;e<d.length;e++)b["is"+d[e].name]=a(d[e].name===c)};return{getter:a,attachGetters:b}}),g("4l",["61"],function(a){var b=function(b,c,d){var e=a.attachGetters,f={};return f.current=c,f.version=d,e(f,f.current,b),f};return{create:b}}),h("62",Math),h("63",isFinite),h("64",isNaN),h("65",parseFloat),g("3s",["62","63","64","65"],function(a,b,c,d){var e=function(a){return function(b,c){var d=typeof c;if(d!==a)throw b+" was not a "+a+". Was: "+c+" ("+d+")"}},f=e("string"),g=function(a,b){f(a,b);var c=b.length;if(1!==c)throw a+" was not a single char. Was: "+b},h=e("number"),i=function(b,c){if(h(b,c),c!==a.abs(c))throw b+" was not an integer. Was: "+c},j=function(a){return!c(d(a))&&b(a)},k=function(a,b){if(i(a,b),b<0)throw a+" was not a natural number. Was: "+b};return{vString:f,vChar:g,vInt:i,vNat:k,pNum:j}}),g("37",["3s"],function(a){var b=function(a,b,c){if(""===b)return!0;if(a.length<b.length)return!1;var d=a.substr(c,c+b.length);return d===b},c=function(a,b){var c=function(a){var b=typeof a;return"string"===b||"number"===b};return a.replace(/\${([^{}]*)}/g,function(a,d){var e=b[d];return c(e)?e:a})},d=function(a){var b=function(a,b){for(var c=[],d=0;d<a.length;d++)c.push(b(a[d]));return c};return function(){var c=b(arguments,function(a){return"string"==typeof a?a.toLowerCase():a});return a.apply(this,c)}},e=function(a,c){return b(a,c,0)},f=d(e),g=function(a,c){return b(a,c,a.length-c.length)},h=d(g),i=function(a,b){return a.substr(0,b)},j=function(a,b){return a.substr(a.length-b,a.length)},k=function(a,b){return function(c,d){return a(c,d)?b(c,c.length-d.length):c}},l=k(e,j),m=k(g,i),n=function(a,b){return a+b},o=function(a,b){return b+a},p=function(a,b){return function(c,d){return a(c,d)?c:b(c,d)}},q=p(e,o),r=p(g,n),s=function(a){return a.replace(/^\s+|\s+$/g,"")},t=function(a){return a.replace(/^\s+/g,"")},u=function(a){return a.replace(/\s+$/g,"")},v=function(a,b){return a.indexOf(b)!=-1},w=d(v),x=function(a){return a.replace(/\"/gm,""")},y=function(a,b){return a===b},z=d(y),A=function(a){if(""===a)throw"head on empty string";return a.substr(0,1)},B=function(a){if(""===a)throw"toe on empty string";return a.substr(a.length-1,a.length)},C=function(a){if(""===a)throw"tail on empty string";return a.substr(1,a.length-1)},D=function(a){if(""===a)throw"torso on empty string";return a.substr(0,a.length-1)},E=function(a){return""===a?a:A(a).toUpperCase()+C(a)},F=function(b,c){a.vString("str",b),a.vNat("num",c);for(var d="",e=0;e<c;e++)d+=b;return d},G=function(b){return function(c,d,e){a.vString("str",c),a.vChar("c",d),a.vNat("width",e);var f=c.length;return f>=e?c:b(c,F(d,e-f))}},H=G(function(a,b){return b+a}),I=G(function(a,b){return a+b});return{supplant:c,startsWith:e,startsWithIgnoringCase:f,endsWith:g,endsWithIgnoringCase:h,first:i,last:j,removeLeading:l,removeTrailing:m,ensureLeading:q,ensureTrailing:r,trim:s,lTrim:t,rTrim:u,contains:v,containsIgnoringCase:w,htmlEncodeDoubleQuotes:x,equals:y,equalsIgnoringCase:z,head:A,repead:F,padLeft:H,padRight:I,toe:B,tail:C,torso:D,capitalize:E}}),g("4m",["37"],function(a){var b=a.contains,c=function(a){return function(c){return b(c,a)}},d=function(){try{var a=new ActiveXObject("ChromeTab.ChromeFrame");return!!a}catch(b){return!1}},e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,f=function(a){var d=[{name:"Spartan",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(a){var c=b(a,"edge/")&&b(a,"chrome")&&b(a,"safari")&&b(a,"applewebkit");return c}},{name:"ChromeFrame",versionRegexes:[/.*?chromeframe\/([0-9]+)\.([0-9]+).*/,e],search:function(c){return!!b(c,"chromeframe")&&a()}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,e],search:function(a){return b(a,"chrome")&&!b(a,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(c){var d=b(c,"msie")||b(c,"trident"),e=b(c,"chromeframe");return e?d&&!a():d}},{name:"Opera",versionRegexes:[e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:c("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:c("firefox")},{name:"Safari",versionRegexes:[e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(a){return(b(a,"safari")||b(a,"mobile/"))&&b(a,"applewebkit")}},{name:"Envjs",versionRegexes:[/.*?envjs\/\ ?([0-9]+)\.([0-9]+).*/],search:c("envjs")}],f=[{name:"Windows",search:c("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(a){return b(a,"iphone")||b(a,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:c("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:c("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:c("linux")},{name:"Solaris",search:c("sunos")},{name:"FreeBSD",search:c("freebsd")}];return{browsers:d,oses:f}};return{create:f,chromeFrameChecker:d}}),g("4n",[],function(){var a=function(a,b){var c=typeof a;if("boolean"===c)return!!a;if("object"===c){var d=a.minimum;return b.major>d.major||b.major===d.major&&b.minor>=d.minor}throw"invalid spec"};return{meetsSpec:a}}),g("66",[],function(){var a=function(a,b,c){for(var d=0;d<a.length;d++){var e=a[d];if(c(e,d,a))return e}return b};return{findOneInArrayOr:a}}),g("4o",["66"],function(a){var b=function(b,c){var d=a.findOneInArrayOr,e=String(c).toLowerCase();return d(b,{name:void 0},function(a){return a.search(e)})};return{detect:b}}),g("4p",[],function(){var a=function(a,b){function c(a,b){for(var c=0;c<a.length;c++){var d=a[c];if(d.test(b))return d}}function d(a,b){var d=c(a,b);if(!d)return{major:0,minor:0};var e=function(a){return Number(b.replace(d,"$"+a))};return{major:e(1),minor:e(2)}}var e=String(b).toLowerCase(),f=a.versionRegexes;return f?d(f,e):{major:0,minor:0}};return{detectVersion:a}}),g("2t",["4j","4k","4l","4m","4n","4o","4p"],function(a,b,c,d,e,f,g){var h=g.detectVersion,i=c.create,j=e.meetsSpec,k=f.detect,l=function(a,b,c,d){return!!a[b]&&(a[b][c]?j(a[b][c],d):!!a[b].All)},m=function(a,b){var c=b.browser,d=b.os;return l(a,d.current,c.current,c.version)},n=function(b,c){var e=d.create(c),f=e.browsers,g=e.oses,j=k(g,b),m=j.name,n=h(j,b),o=k(f,b),p=o.name,q=h(o,b),r=i(g,m,n),s=i(f,p,q),t=a(r,s,b),u=function(a){return l(a,m,p,q)};return{browser:s,os:r,deviceType:t,isSupported:u}},o=function(){return n(navigator.userAgent,d.chromeFrameChecker)};return{Platform:b,detect:o,doDetect:n,isSupported:l,isSupportedPlatform:m}}),g("72",[],function(){return Function("return this;")()}),g("68",["72"],function(a){var b=function(b,c){for(var d=c||a,e=0;e<b.length&&void 0!==d&&null!==d;++e)d=d[b[e]];return d},c=function(a,c){var d=a.split(".");return b(d,c)};return{path:b,resolve:c}}),g("3p",["68"],function(a){var b=function(b,c){return a.resolve(b,c)},c=function(a,c){var d=b(a,c);if(void 0===d)throw a+" not available on this browser";return d};return{getOrDie:c}}),g("67",["3p"],function(a){var b=function(){var b=a.getOrDie("Node");return b},c=function(a,b,c){return 0!==(a.compareDocumentPosition(b)&c)},d=function(a,d){return c(a,d,b().DOCUMENT_POSITION_PRECEDING)},e=function(a,d){return c(a,d,b().DOCUMENT_POSITION_CONTAINED_BY)};return{documentPositionPreceding:d,documentPositionContainedBy:e}}),g("2h",["2e","g","n","k","1e","1g"],function(a,b,c,d,e,f){var g=0,h=1,i=2,j=3,k=function(){var a=f.createElement("span");return void 0!==a.matches?g:void 0!==a.msMatchesSelector?h:void 0!==a.webkitMatchesSelector?i:void 0!==a.mozMatchesSelector?j:-1}(),l=a.ELEMENT,m=a.DOCUMENT,n=function(a,b){var c=a.dom();if(c.nodeType!==l)return!1;if(k===g)return c.matches(b);if(k===h)return c.msMatchesSelector(b);if(k===i)return c.webkitMatchesSelector(b);if(k===j)return c.mozMatchesSelector(b);throw new e("Browser lacks native selectors")},o=function(a){return a.nodeType!==l&&a.nodeType!==m||0===a.childElementCount},p=function(a,c){var e=void 0===c?f:c.dom();return o(e)?[]:b.map(e.querySelectorAll(a),d.fromDom)},q=function(a,b){var e=void 0===b?f:b.dom();return o(e)?c.none():c.from(e.querySelector(a)).map(d.fromDom)};return{all:p,is:n,one:q}}),g("3n",["g","2t","67","p","2h"],function(a,b,c,d,e){var f=function(a,b){return a.dom()===b.dom()},g=function(a,b){return a.dom().isEqualNode(b.dom())},h=function(b,c){return a.exists(c,d.curry(f,b))},i=function(a,b){var c=a.dom(),d=b.dom();return c!==d&&c.contains(d)},j=function(a,b){return c.documentPositionContainedBy(a.dom(),b.dom())},k=b.detect().browser,l=k.isIE()?j:i;return{eq:f,isEqualNode:g,member:h,contains:l,is:e.is}}),g("3f",["1b","g","p","n","2c","3m","3n","k"],function(a,b,c,d,e,f,g,h){var i=function(a){return h.fromDom(a.dom().ownerDocument)},j=function(a){var b=i(a);return h.fromDom(b.dom().documentElement)},k=function(a){var b=a.dom(),c=b.ownerDocument.defaultView;return h.fromDom(c)},l=function(a){var b=a.dom();return d.from(b.parentNode).map(h.fromDom)},m=function(a){return l(a).bind(function(c){var e=u(c),f=b.findIndex(e,function(b){return g.eq(a,b)});return f>-1?d.some(f):d.none()})},n=function(b,d){for(var e=a.isFunction(d)?d:c.constant(!1),f=b.dom(),g=[];null!==f.parentNode&&void 0!==f.parentNode;){var i=f.parentNode,j=h.fromDom(i);if(g.push(j),e(j)===!0)break;f=i}return g},o=function(a){var c=function(c){return b.filter(c,function(b){return!g.eq(a,b)})};return l(a).map(u).map(c).getOr([])},p=function(a){var b=a.dom();return d.from(b.offsetParent).map(h.fromDom)},q=function(a){var b=a.dom();return d.from(b.previousSibling).map(h.fromDom)},r=function(a){var b=a.dom();return d.from(b.nextSibling).map(h.fromDom)},s=function(a){return b.reverse(f.toArray(a,q))},t=function(a){return f.toArray(a,r)},u=function(a){var c=a.dom();return b.map(c.childNodes,h.fromDom)},v=function(a,b){var c=a.dom().childNodes;return d.from(c[b]).map(h.fromDom)},w=function(a){return v(a,0)},x=function(a){return v(a,a.dom().childNodes.length-1)},y=e.immutable("element","offset"),z=function(a,b){var c=u(a);return c.length>0&&b<c.length?y(c[b],0):y(a,b)};return{owner:i,defaultView:k,documentElement:j,parent:l,findIndex:m,parents:n,siblings:o,prevSibling:q,offsetParent:p,prevSiblings:s,nextSibling:r,nextSiblings:t,children:u,child:v,firstChild:w,lastChild:x,leaf:z}}),g("28",["g","k","3f","1g"],function(a,b,c,d){var e=function(a,e){var f=e||d,g=f.createElement("div");return g.innerHTML=a,c.children(b.fromDom(g))},f=function(c,d){return a.map(c,function(a){return b.fromTag(a,d)})},g=function(c,d){return a.map(c,function(a){return b.fromText(a,d)})},h=function(c){return a.map(c,b.fromDom)};return{fromHtml:e,fromTags:f,fromText:g,fromDom:h}}),g("1x",["3f"],function(a){var b=function(b,c){var d=a.parent(b);d.each(function(a){a.dom().insertBefore(c.dom(),b.dom())})},c=function(c,d){var f=a.nextSibling(c);f.fold(function(){var b=a.parent(c);b.each(function(a){e(a,d)})},function(a){b(a,d)})},d=function(b,c){var d=a.firstChild(b);d.fold(function(){e(b,c)},function(a){b.dom().insertBefore(c.dom(),a.dom())})},e=function(a,b){a.dom().appendChild(b.dom())},f=function(c,d,f){a.child(c,f).fold(function(){e(c,d)},function(a){b(a,d)})},g=function(a,c){b(a,c),e(c,a)};return{before:b,after:c,prepend:d,append:e,appendAt:f,wrap:g}}),g("29",["g","1x"],function(a,b){var c=function(c,d){a.each(d,function(a){b.before(c,a)})},d=function(c,d){a.each(d,function(a,e){var f=0===e?c:d[e-1];b.after(f,a)})},e=function(c,d){a.each(d.slice().reverse(),function(a){b.prepend(c,a)})},f=function(c,d){a.each(d,function(a){b.append(c,a)})};return{before:c,after:d,prepend:e,append:f}}),g("5w",[],function(){var a=function(a){var b,c=!1;return function(){return c||(c=!0,b=a.apply(null,arguments)),b}};return{cached:a}}),g("5i",["5w","k","1d","1g"],function(a,b,c,d){var e=function(a){var b=c.isText(a)?a.dom().parentNode:a.dom();return void 0!==b&&null!==b&&b.ownerDocument.body.contains(b)},f=a.cached(function(){return g(b.fromDom(d))}),g=function(a){var c=a.dom().body;if(null===c||void 0===c)throw"Body is not available yet";return b.fromDom(c)};return{body:f,getBody:g,inBody:e}}),g("3o",["g","5i","3f"],function(a,b,c){var d=function(a){return h(b.body(),a)},e=function(b,d,e){return a.filter(c.parents(b,e),d)},f=function(b,d){return a.filter(c.siblings(b),d)},g=function(b,d){return a.filter(c.children(b),d)},h=function(b,d){var e=[];return a.each(c.children(b),function(a){d(a)&&(e=e.concat([a])),e=e.concat(h(a,d))}),e};return{all:d,ancestors:e,siblings:f,children:g,descendants:h}}),g("2a",["3o","2h"],function(a,b){var c=function(a){return b.all(a)},d=function(c,d,e){return a.ancestors(c,function(a){return b.is(a,d)},e)},e=function(c,d){return a.siblings(c,function(a){return b.is(a,d)})},f=function(c,d){return a.children(c,function(a){return b.is(a,d)})},g=function(a,c){return b.all(c,a)};return{all:c,ancestors:d,siblings:e,children:f,descendants:g}}),g("16",["g","26","27","k","28","29","2a"],function(a,b,c,d,e,f,g){var h=function(a){c.remove(a,b.uploadInProgress())},i=function(c){for(var i=0;i<c.undoManager.data.length;i++){var j=c.undoManager.data[i].content,k=d.fromTag("div");f.append(k,e.fromHtml(j));var l=g.descendants(k,"."+b.uploadInProgress());a.each(l,h),c.undoManager.data[i].content=k.dom().innerHTML}},j=function(a,b,c){for(var d=0;d<a.undoManager.data.length;d++)a.undoManager.data[d].content=a.undoManager.data[d].content.split(b.objurl()).join(c.location)};return{unwrapHistory:i,resrcHistory:j}}),g("2b",["3p"],function(a){var b=function(){return a.getOrDie("URL")},c=function(a){return b().createObjectURL(a)},d=function(a){b().revokeObjectURL(a)};return{createObjectURL:c,revokeObjectURL:d}}),g("17",["1c","2b","n","2c"],function(a,b,c,d){var e=d.immutable("id","blob","objurl","data");return function(){var d={},f=function(a,b,c,f){var g=e(a,b,c,f);return d[a]=g,g},g=function(a){return c.from(d[a])},h=function(a){b.revokeObjectURL(a.objurl())},i=function(b){return c.from(a.find(d,function(a){return a.data().result===b}))},j=function(a){var b=d[a];delete d[a],void 0!==b&&h(b)},k=function(){a.each(d,h),d={}};return{add:f,get:g,remove:j,lookupByData:i,destroy:k}}}),g("21",["g","2c"],function(a,b){return function(c){var d=b.immutable.apply(null,c),e=[],f=function(a){if(void 0===a)throw"Event bind error: undefined handler";e.push(a)},g=function(b){e=a.filter(e,function(a){return a!==b})},h=function(){var b=d.apply(null,arguments);a.each(e,function(a){a(b)})};return{bind:f,unbind:g,trigger:h}}}),g("22",["1c"],function(a){var b=function(b){var c=a.map(b,function(a){return{bind:a.bind,unbind:a.unbind}}),d=a.map(b,function(a){return a.trigger});return{registry:c,trigger:d}};return{create:b}}),g("18",["g","2d","26","21","22","j","2a"],function(a,b,c,d,e,f,g){var h="data-"+b.resolve("image-upload"),i=function(a,b){return g.descendants(a,"img["+h+'="'+b+'"]')},j=function(a){return g.descendants(a,"img:not(["+h+"])["+c.blobId()+"]")};return function(){var b=[],c=[],g=e.create({complete:d(["response"])}),k=function(a,c){f.set(a,h,c),b.push(c)},l=function(c){b=a.filter(b,function(a,b){return a!==c}),p()===!1&&o()},m=function(a,b){c.push({success:a,element:b.dom()})},n=function(b,c,d){a.each(c,function(a){f.remove(a,h),m(d,a)}),l(b)},o=function(){g.trigger.complete(c),c=[]},p=function(){return b.length>0},q=function(c){return a.contains(b,c)};return{findById:i,findAll:j,register:k, +report:n,inProgress:p,isActive:q,events:g.registry}}}),g("1l",["1b","12"],function(a,b){var c=function(a,b){return b},d=function(b,c){var d=a.isObject(b)&&a.isObject(c);return d?f(b,c):c},e=function(a){return function(){for(var c=new b(arguments.length),d=0;d<c.length;d++)c[d]=arguments[d];if(0===c.length)throw"Can't merge zero objects";for(var e={},f=0;f<c.length;f++){var g=c[f];for(var h in g)g.hasOwnProperty(h)&&(e[h]=a(e[h],g[h]))}return e}},f=e(d),g=e(c);return{deepMerge:f,merge:g}}),g("1m",["1b","g","1c","12"],function(a,b,c,d){var e=function(e){if(!a.isArray(e))throw"cases must be an array";if(0===e.length)throw"there must be at least one case";var f={};return b.each(e,function(b,g){var h=c.keys(b);if(1!==h.length)throw"one and only one name per case";var i=h[0],j=b[i];if(void 0!==f[i])throw"duplicate key detected:"+i;if("cata"===i)throw"cannot have a case named cata (sorry)";if(!a.isArray(j))throw"case arguments must be an array";f[i]=function(){var a=arguments.length;if(a!==j.length)throw"Wrong number of arguments to case "+i+". Expected "+j.length+" ("+j+"), got "+a;for(var b=new d(a),c=0;c<b.length;c++)b[c]=arguments[c];return{fold:function(){if(arguments.length!==e.length)throw"Wrong number of arguments to fold. Expected "+e.length+", got "+arguments.length;var a=arguments[g];return a.apply(null,b)}}}}),f};return{generate:e}}),g("h",["1l","1m"],function(a,b){var c=b.generate([{blob:["id","blob","objurl","data"]},{url:["id","url","raw"]}]),d=function(a,b,c){return a.fold(b,c)};return a.merge(c,{cata:d})}),g("2f",["p","n"],function(a,b){var c=function(a){return e(function(b,c){return c(a)})},d=function(a){return e(function(b,c){return b(a)})},e=function(e){var f=function(b){return e(a.constant(!1),function(a){return a===b})},g=function(){return e(a.constant(!1),a.constant(!0))},h=a.not(g),i=function(b){return e(a.constant(b),a.identity)},j=function(b){return e(b,a.identity)},k=function(){return e(function(b){a.die(b)()},a.identity)},l=function(b){return e(a.constant(b),c)},m=function(a){return e(a,c)},n=function(a){return p(function(b){return c(a(b))})},o=n,p=function(a){return e(d,a)},q=function(b){return e(a.constant(!1),b)},r=function(b){return e(a.constant(!0),b)},s=function(){return e(b.none,b.some)};return{is:f,isValue:g,isError:h,getOr:i,getOrThunk:j,getOrDie:k,or:l,orThunk:m,fold:e,map:n,each:o,bind:p,exists:q,forall:r,toOption:s}};return{value:c,error:d}}),g("3q",["g","27","3i","12"],function(a,b,c,d){var e=function(c,d){a.each(d,function(a){b.add(c,a)})},f=function(c,d){a.each(d,function(a){b.remove(c,a)})},g=function(c,d){a.each(d,function(a){b.toggle(c,a)})},h=function(c,d){return a.forall(d,function(a){return b.has(c,a)})},i=function(c,d){return a.exists(d,function(a){return b.has(c,a)})},j=function(a){for(var b=a.dom().classList,c=new d(b.length),e=0;e<b.length;e++)c[e]=b.item(e);return c},k=function(a){return c.supports(a)?j(a):c.get(a)};return{add:e,remove:f,toggle:g,hasAll:h,hasAny:i,get:k}}),g("2g",["27","3q"],function(a,b){var c=function(b){return function(c){a.add(c,b)}},d=function(b){return function(c){a.remove(c,b)}},e=function(a){return function(c){b.remove(c,a)}},f=function(b){return function(c){return a.has(c,b)}};return{addClass:c,removeClass:d,removeClasses:e,hasClass:f}}),g("2i",["1b","n"],function(a,b){return function(c,d,e,f,g){return c(e,f)?b.some(e):a.isFunction(g)&&g(e)?b.none():d(e,f,g)}}),g("20",["n","2a","2h","2i"],function(a,b,c,d){var e=function(c){return a.from(b.all(c)[0])},f=function(c,d,e){return a.from(b.ancestors(c,d,e)[0])},g=function(c,d){return a.from(b.siblings(c,d)[0])},h=function(c,d){return a.from(b.children(c,d)[0])},i=function(c,d){return a.from(b.descendants(c,d)[0])},j=function(a,b,e){return d(c.is,f,a,b,e)};return{first:e,ancestor:f,sibling:g,child:h,descendant:i,closest:j}}),g("19",["g","h","p","n","2f","26","1m","2c","j","27","2g","20","1f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=h.immutable("image","blobInfo"),o=g.generate([{failure:["error"]},{success:["result","images","blob"]}]),p=function(a,b,c){var e=a.isActive(b);return a.register(c,b),j.add(c,f.uploadInProgress()),e?d.none():d.some(b)},q=function(b,c,d,e){return a.each(c,function(a){i.set(a,"src",e.location),i.remove(a,f.blobId())}),u(b,d)},r=function(b,d,e,g,h,i,j){var l=function(){m.error("Internal error with blob cache",h),j(o.failure({status:c.constant(666)}))};b.upload(i,h,function(b){var c=d.findById(g,h);a.each(c,k.removeClass(f.uploadInProgress())),b.fold(function(a){j(o.failure(a))},function(a){q(e,c,h,a).fold(l,function(b){j(o.success(a,c,b))})}),d.report(h,c,b.isValue())})},s=function(a,b,c,d,e,g){var h=a.lookupByData(e.result).getOrThunk(function(){return a.add(b,c,d,e)});return i.set(g,f.blobId(),h.id()),n(g,h)},t=function(a,b){var c=i.get(b,f.blobId());return a.get(c).fold(function(){return e.error(c)},function(a){return e.value(n(b,a))})},u=function(a,b){return a.get(b).fold(function(){return e.error("Internal error with blob cache")},function(c){return a.remove(b),e.value(c)})},v=function(d,f,g){return a.bind(g,function(a){return b.cata(a,function(a,b,c,g){var h=l.descendant(f,'img[src="'+c+'"]');return h.fold(function(){return[e.error("Image that was just inserted could not be found: "+c)]},function(f){return[e.value(s(d,a,b,c,g,f))]})},c.constant([]))})},w=function(b,c,d){var e=b.findAll(d);return b.inProgress()?[]:a.map(e,function(a){return t(c,a)})};return{prepareForUpload:p,handleUpload:r,registerAssets:v,registerBlob:s,findBlobs:w}}),g("3r",["3p"],function(a){return function(){var b=a.getOrDie("FormData");return new b}}),g("2j",["1b","g","3r","2c","37"],function(a,b,c,d,e){var f=d.immutable("message","status","contents"),g=["jpg","png","gif","jpeg"],h=function(c,d){if(a.isString(c.type)&&e.startsWith(c.type,"image/")){var f=c.type.substr("image/".length);return b.contains(g,f)?d+"."+f:d}return d},i=function(b,c){var d=a.isString(b.name)&&!e.endsWith(b.name,".tmp");return d?b.name:h(b,c)},j=function(a,b,d){var e=c();return e.append(a,b,d),{data:e,contentType:!1,processData:!1}};return{failureObject:f,getFilename:i,buildExtra:j}}),g("1u",["12"],function(a){var b=function(b){return function(){var c=a.prototype.slice.call(arguments),d=this;setTimeout(function(){b.apply(d,c)},0)}};return{bounce:b}}),g("1v",[],function(){return function(a,b){var c=function(c){return a(function(a){b(function(b){var d=c(b);a(d)})})},d=function(c){return a(function(a){b(function(b){c(b).get(a)})})},e=function(c){return a(function(a){b(function(b){c.get(a)})})};return{get:b,map:c,bind:d,anonBind:e}}}),g("1w",["g"],function(a){return function(b){var c=function(a){return b(function(b){b(a)})},d=function(c){return b(function(b){var d=[],e=0,f=function(a){return function(f){d[a]=f,e++,e>=c.length&&b(d)}};0===c.length?b([]):a.each(c,function(a,b){a.get(f(b))})})},e=function(b,c){return d(a.map(b,c))},f=function(a,c,d){return b(function(b){var e=!1,f=!1,g=void 0,h=void 0,i=function(){if(e&&f){var a=d(g,h);b(a)}};a.get(function(a){g=a,e=!0,i()}),c.get(function(a){h=a,f=!0,i()})})},g=function(a,b){return function(c){return b(c).bind(a)}};return{nu:b,pure:c,par:d,mapM:e,lift2:f,compose:g}}}),g("o",["1u","1v","1w"],function(a,b,c){var d=function(c){var e=function(b){c(a.bounce(b))};return b(d,e)};return c(d)}),g("2u",["3p"],function(a){return function(){var b=a.getOrDie("FileReader");return new b}}),g("73",["o","2u"],function(a,b){return function(c){return a.nu(function(a){var d=b();d.onload=function(b){var c=b.target;a(c.result)},d.readAsText(c)})}}),g("74",["3p"],function(a){return function(){var b=a.getOrDie("XMLHttpRequest");return new b}}),g("69",["1b","1c","1l","73","o","74","n","2f","37","1f"],function(a,b,c,d,e,f,g,h,i,j){var k={"*":"*/*",text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},l=function(l,m,n,o){var p={url:l,contentType:"application/json",processData:!1,type:"GET"},q=c.merge(p,o),r=f();r.open(q.type.toUpperCase(),q.url,!0),"blob"===q.responseType&&(r.responseType=q.responseType),a.isString(q.contentType)&&r.setRequestHeader("Content-Type",q.contentType);var s=q.dataType,t=a.isString(s)&&"*"!==s?k[s]+", "+k["*"]+"; q=0.01":k["*"];r.setRequestHeader("Accept",t),void 0!==q.xhrFields&&q.xhrFields.withCredentials===!0&&(r.withCredentials=!0),a.isObject(q.headers)&&b.each(q.headers,function(b,c){a.isString(c)||a.isString(b)?r.setRequestHeader(c,b):j.error("Request header data was not a string: ",c," -> ",b)});var u=function(a,b,c){m(a)},v=function(){return"blob"===q.responseType?g.from(r.response).map(d).getOr(e.pure("no response content")):e.pure(r.responseText)},w=function(){v().get(function(a){0===r.status?n("Unknown HTTP error (possible cross-domain request)",r.status,a):n('Could not load url "'+l+'": '+r.statusText,r.status,a)})},x=function(){try{return h.value(JSON.parse(r.response))}catch(a){return h.error({status:r.status,statusText:"Response was not JSON",responseText:r.responseText})}},y=function(){var a="json"===s?x(r):h.value(r.response);a.fold(w,function(a){u(a,r.statusText,r)})},z=function(){0===r.status?i.startsWith(q.url,"file:")?y():w():r.status<100||r.status>=400?w():y()};r.onerror=w,r.onload=z,void 0===q.data?r.send():r.send(q.data)};return{ajax:l}}),g("3u",["3p"],function(a){var b=function(){return a.getOrDie("JSON")},c=function(a){return b().parse(a)},d=function(a,c,d){return b().stringify(a,c,d)};return{parse:c,stringify:d}}),g("3t",["1l","69","3u"],function(a,b,c){var d=function(c,d,e,f){b.ajax(c,d,e,a.merge({dataType:"text",type:"GET"},f))},e=function(d,e,f,g,h){b.ajax(d,f,g,a.merge({dataType:"text",data:c.stringify(e),type:"POST"},h))};return{get:d,post:e}}),g("6a",[],function(){var a=function(a){var b="";return""!==a.protocol&&(b+=a.protocol,b+=":"),""!==a.authority&&(b+="//",b+=a.authority),b+=a.path,""!==a.query&&(b+="?",b+=a.query),""!==a.anchor&&(b+="#",b+=a.anchor),b};return{recompose:a}}),g("75",["1l"],function(a){var b={strictMode:!1,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@\/]*)(?::([^:@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@\/]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*)(?::([^:@\/]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}},c=function(a,b){for(var c=b,d=c.parser[c.strictMode?"strict":"loose"].exec(a),e={},f=14;f--;)e[c.key[f]]=d[f]||"";return e[c.q.name]={},e[c.key[12]].replace(c.q.parser,function(a,b,d){b&&(e[c.q.name][b]=d)}),e},d=function(d,e){var f=a.merge(b,e);return c(d,f)};return{parse:d}}),g("76",["37"],function(a){var b=function(b){return a.removeTrailing(b,d(b))},c=function(a){return a.match(/(^\/?.*?)(\/|$)/)[1]},d=function(a){return a.substring(a.lastIndexOf("/"))},e=function(d){for(var e=d,f="";""!==e;)if(a.startsWith(e,"../"))e=a.removeLeading(e,"../");else if(a.startsWith(e,"./"))e=a.removeLeading(e,"./");else if(a.startsWith(e,"/./"))e="/"+a.removeLeading(e,"/./");else if("/."===e)e="/";else if(a.startsWith(e,"/../"))e="/"+a.removeLeading(e,"/../"),f=b(f);else if("/.."===e)e="/",f=b(f);else if("."===e||".."===e)e="";else{var g=c(e);e=a.removeLeading(e,g),f+=g}return f};return{remove:e}}),g("77",["37"],function(a){var b=function(b,c,d){if(""!==d&&""===b)return"/"+c;var e=b.substring(b.lastIndexOf("/")+1);return a.removeTrailing(b,e)+c};return{merge:b}}),g("6b",["37","75","76","77"],function(a,b,c,d){var e=function(e,f){var g={strictMode:!0},h=b.parse(e,g),i=b.parse(f,g),j={};return""!==i.protocol?(j.protocol=i.protocol,j.authority=i.authority,j.path=c.remove(i.path),j.query=i.query):(""!==i.authority?(j.authority=i.authority,j.path=c.remove(i.path),j.query=i.query):(""===i.path?(j.path=h.path,""!==i.query?j.query=i.query:j.query=h.query):(a.startsWith(i.path,"/")?j.path=c.remove(i.path):(j.path=d.merge(h.path,i.path,e.authority),j.path=c.remove(j.path)),j.query=i.query),j.authority=h.authority),j.protocol=h.protocol),j.anchor=i.anchor,j};return{transform:e}}),g("3v",["6a","6b"],function(a,b){var c=function(c,d){var e=b.transform(c,d);return a.recompose(e)};return{resolve:c}}),g("2k",["1b","1l","3t","3u","2f","2j","37","3v"],function(a,b,c,d,e,f,g,h){return function(i){var j=function(){var a=i.url,b=a.lastIndexOf("/"),c=b>0?a.substr(0,b):a,d=void 0===i.basePath?c:i.basePath;return g.endsWith(d,"/")?d:d+"/"},k=j(),l=function(a,b){var c=a.split(/\s+/),d=1===c.length&&""!==c[0]?c[0]:b;return h.resolve(k,d)},m=function(g,h,j){var k=g.blob(),m=function(a,b,c){j(e.error(f.failureObject(a,b,c)))},n=f.getFilename(k,h),o=i.credentials!==!0?{}:{xhrFields:{withCredentials:!0}},p=b.merge(o,f.buildExtra("image",k,n)),q=function(b){var c;try{var f=d.parse(b);if(!a.isString(f.location))return void m("JSON response did not contain a string location",500,b);c=f.location}catch(g){c=b}var h=l(c,n);j(e.value({location:h}))};c.post(i.url,{},q,m,p)};return{upload:m}}}),h("x",setTimeout),g("2l",["1b","2f","2j","2c","1f","x"],function(a,b,c,d,e,f){var g=d.immutable("id","filename","blob","base64");return function(d){var h=function(h,i,j){var k=function(a){j(b.error(a))},l=function(c){a.isString(c)?j(b.value({location:c})):(e.error("Image upload result was not a string"),k(""))},m=c.getFilename(h.blob(),i),n=g(i,m,h.blob(),h.data().result);f(function(){d(n,l,k)},0)};return{upload:h}}}),g("1a",["2j","2k","2l"],function(a,b,c){var d=function(a){return b(a)},e=function(a){return c(a)},f=function(b,c,d){return a.failureObject(b,c,d)},g=function(b,c){return a.getFilename(b,c)},h=function(b,c,d){return a.buildExtra(b,c,d)};return{direct:d,custom:e,failureObject:f,getFilename:g,buildExtra:h}}),g("b",["g","p","n","c","15","16","17","18","19","1a","j","k"],function(a,b,c,d,e,f,g,h,i,j,k,l){var m=function(d,m){var n=g(),o=h(),p=(e(),e(d,m.url)),q=j.direct(m),r=function(){return l.fromDom(d.getBody())},s=function(b,c,e){a.each(c,function(a){k.set(a,"data-mce-src",b.location)}),f.resrcHistory(d,e,b)};o.events.complete.bind(function(a){f.unwrapHistory(d)});var t=function(a,b,c){i.handleUpload(q,o,n,r(),a,b,function(a){a.fold(function(a){c(a)},s)})},u=function(a,b){i.prepareForUpload(o,a.blobInfo().id(),a.image()).each(function(c){t(c,a.blobInfo(),b)})},v=function(b){var c=p.instance(),d=i.registerAssets(n,r(),b);a.each(d,function(a){a.fold(function(a){console.error(a)},function(a){u(a,c)})})},w=function(){var b=p.instance(),d=i.findBlobs(o,n,r());a.each(d,function(a){a.fold(function(a){o.report(a,c.none(),!1)},function(a){u(a,b)})})},x=function(a){w(),v(a)},y=function(a,b,c,d){return c};return{uploadImages:x,prepareImages:b.noop,getLocalURL:y}},n=function(a){var c=d(a);return{uploadImages:b.noop,prepareImages:c.prepareImages,getLocalURL:c.getLocalURL}};return function(a,b){return b?m(a,b):n(a)}}),g("3",["b","c"],function(a,b){return function(c){var d=!c.uploadImages&&c.settings.images_upload_url?{url:c.settings.images_upload_url,basePath:c.settings.images_upload_base_path,credentials:c.settings.images_upload_credentials}:null;return c.uploadImages?b(c):a(c,d)}}),g("1h",[],function(){var a=function(a,b){return function(){return a.apply(b,arguments)}},b=function(a){return a.ownerDocument.defaultView?a.ownerDocument.defaultView.getComputedStyle(a,null):a.currentStyle||{}},c=function(a){"undefined"!=typeof console&&console.log&&console.log(a)},d=function(a){var b=Array.prototype.slice.call(a).reverse();return function(a){for(var c=a,d=0;d<b.length;d++){var e=b[d];c=e(c)}return c}},e=function(a){return tinymce.each(Array.prototype.slice.call(arguments,1),function(b){for(var c in b)a[c]=b[c]}),a};return{each:tinymce.each,trim:tinymce.trim,bind:a,extend:e,ephoxGetComputedStyle:b,log:c,compose:d}}),g("e",["1h"],function(a){var b=(tinymce.each,function(b,c,d,e){var f,g,h,i,j,k=b.selection,l=b.dom,m=b.getBody();if(j=d.isText(),d.reset(),e.clipboardData&&e.clipboardData.getData("text/html")){e.preventDefault();var n=e.clipboardData.getData("text/html"),o=n.match(/<html[\s\S]+<\/html>/i),p=null===o?n:o[0];return c(p)}if(!l.get("_mcePaste")){if(f=l.add(m,"div",{id:"_mcePaste","class":"mcePaste"},'\ufeff<br _mce_bogus="1">'),i=m!=b.getDoc().body?l.getPos(b.selection.getStart(),m).y:m.scrollTop,l.setStyles(f,{position:"absolute",left:-1e4,top:i,width:1,height:1,overflow:"hidden"}),tinymce.isIE)return h=l.doc.body.createTextRange(),h.moveToElementText(f),h.execCommand("Paste"),l.remove(f),"\ufeff"===f.innerHTML?(b.execCommand("mcePasteWord"),void e.preventDefault()):(c(j?f.innerText:f.innerHTML),tinymce.dom.Event.cancel(e));var q=function(a){a.preventDefault()};l.bind(b.getDoc(),"mousedown",q),l.bind(b.getDoc(),"keydown",q),tinymce.isGecko&&(h=b.selection.getRng(!0),h.startContainer==h.endContainer&&3==h.startContainer.nodeType&&(nodes=l.select("p,h1,h2,h3,h4,h5,h6,pre",f),1==nodes.length&&l.remove(nodes.reverse(),!0))),g=b.selection.getRng(),f=f.firstChild,h=b.getDoc().createRange(),h.setStart(f,0),h.setEnd(f,1),k.setRng(h),window.setTimeout(function(){var d="",e=l.select("div.mcePaste");a.each(e,function(b){var c=b.firstChild;c&&"DIV"==c.nodeName&&c.style.marginTop&&c.style.backgroundColor&&l.remove(c,1),a.each(l.select("div.mcePaste",b),function(a){l.remove(a,1)}),a.each(l.select("span.Apple-style-span",b),function(a){l.remove(a,1)}),a.each(l.select("br[_mce_bogus]",b),function(a){l.remove(a)}),d+=b.innerHTML}),a.each(e,function(a){l.remove(a)}),g&&k.setRng(g),c(d),l.unbind(b.getDoc(),"mousedown",q),l.unbind(b.getDoc(),"keydown",q)},0)}}),c=function(a,c,d){return function(e){b(a,c,d,e)}},d=function(a,c,d){return function(e){(tinymce.isOpera||navigator.userAgent.indexOf("Firefox/2")>0)&&((tinymce.isMac?e.metaKey:e.ctrlKey)&&86==e.keyCode||e.shiftKey&&45==e.keyCode)&&b(a,c,d,e)}};return{getOnPasteFunction:c,getOnKeyDownFunction:d}}),g("1i",[],function(){var a=function(a,b){var c,d=b.getDoc(),e="ephoxInsertMarker",f=b.selection,g=b.dom;f.setContent('<span id="'+e+'"> </span>'),c=g.get(e);for(var h=d.createDocumentFragment();a.firstChild&&!g.isBlock(a.firstChild);)h.appendChild(a.firstChild);for(var i=d.createDocumentFragment();a.lastChild&&!g.isBlock(a.lastChild);)i.appendChild(a.lastChild);if(c.parentNode.insertBefore(h,c),g.insertAfter(i,c),a.firstChild){if(g.isBlock(a.firstChild)){for(;!g.isBlock(c.parentNode)&&c.parentNode!==g.getRoot();)c=g.split(c.parentNode,c);g.is(c.parentNode,"td,th")||c.parentNode===g.getRoot()||(c=g.split(c.parentNode,c))}g.replace(a,c)}else g.remove(c)};return{insert:a}}),g("1j",["1h"],function(a){var b={strip_class_attributes:"all",retain_style_properties:"none"},c={strip_class_attributes:"none",retain_style_properties:"valid"},d=function(a,d){if(a&&"string"!=typeof a)return a;switch(a){case"clean":return b;case"merge":return c;default:return d}},e=function(b,c,e){var f=d(b,c);return f=a.extend(f,{base_64_images:e})},f=function(a,d,f){var g=e(a,b,f),h=e(d,c,f),i=h,j=function(a){i=a?g:h},k=function(a){return i[a]};return{setWordContent:j,get:k}};return{create:f}}),g("6c",["1h"],function(a){var b=function(a){return a.specified!==!1||"name"===a.nodeName&&""!==a.value},c=function(a,b){return a&&b?function(c,d){return b(c,a(c,d))}:a||b},d=function(d){var e,f,g=0,h=function(){return e},i=function(){return f()};f=function(){return e={},g=0,a.each(d.attributes,function(a){var c=a.nodeName,d=a.value;b(a)&&null!==d&&void 0!==d&&(e[c]=d,g++)}),void 0===e.style&&d.style.cssText&&(e.style=d.style.cssText,g++),f=h,e};var j,k,l=function(){return f(),g},m=function(a){j||(k=f),j=c(j,a),f=function(){return f=k,o(function(a,b){var c=j(a,b);null===c?(d.removeAttribute(a),delete e[a],g--):c!==b&&("class"===a?d.className=c:d.setAttribute(a,c),e[a]=c)}),f=h,e}},n=function(a){return f()[a]},o=function(b){a.each(f(),function(a,c){b(c,a)})};return{get:n,each:o,filter:m,getAttributes:i,getAttributeCount:l}};return{manager:d}}),g("3w",["6c","1h"],function(a,b,c){var d="startElement",e="endElement",f="text",g="comment",h=a.manager,i=function(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})},j=function(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()})},k=!1,l=function(a,c,d){var e,f,g;a.style.length;g=c||a.getAttribute("style"),void 0!==g&&null!==g&&g.split||(g=a.style.cssText),b.each(g.split(";"),function(a){var c=a.indexOf(":");c>0&&(e=b.trim(a.substring(0,c)),e.toUpperCase()===e&&(e=e.toLowerCase()),e=j(e),f=b.trim(a.substring(c+1)),k||(k=0===e.indexOf("mso-")),d(e,f))}),k||(f=a.style["mso-list"],f&&d("mso-list",f))},m=function(a,c,j){var k,m,n,o,p;switch(a.nodeType){case 1:c?k=e:(k=d,o=h(a),p={},l(a,j,function(a,b){p[a]=b})),m="HTML"!==a.scopeName&&a.scopeName&&a.tagName&&a.tagName.indexOf(":")<=0?(a.scopeName+":"+a.tagName).toUpperCase():a.tagName;break;case 3:k=f,n=a.nodeValue;break;case 8:k=g,n=a.nodeValue;break;default:b.log("WARNING: Unsupported node type encountered: "+a.nodeType)}var q=function(){return o&&o.getAttributes(),a},r=function(){return m},s=function(){return k},t=function(){return n},u=function(){return"Type: "+k+", Tag: "+m+" Text: "+n},v=function(a){return o.get(a.toLowerCase())},w=function(a){k===d&&o.filter(a)},x=function(c){if(s()===d){var e="";b.each(p,function(b,d){var f=c(d,b);null===f?(a.style.removeProperty?a.style.removeProperty(i(d)):a.style.removeAttribute(i(d)),delete p[d]):(e+=d+": "+f+"; ",p[d]=f)}),e=e?e:null,w(function(a,b){return"style"===a?e:b}),a.style.cssText=e}},y=function(){return o.getAttributeCount()},z=function(a){o.each(a)},A=function(a){return p[a]},B=function(a){b.each(p,function(b,c){a(c,b)})},C=function(){return b.ephoxGetComputedStyle(a)},D=function(){return k===f&&/^[\s\u00A0]*$/.test(n)};return{getNode:q,tag:r,type:s,text:t,toString:u,getAttribute:v,filterAttributes:w,filterStyles:x,getAttributeCount:y,attributes:z,getStyle:A,styles:B,getComputedStyle:C,isWhitespace:D}},n=function(a,c,d,e){var f=e.createElement(a),g="";return b.each(c,function(a,b){f.setAttribute(b,a)}),b.each(d,function(a,b){g+=b+":"+a+";",f.style[i(b)]=a}),m(f,!1,""!==g?g:null)},o=function(a,b){return m(b.createElement(a),!0)},p=function(a,b){return m(b.createComment(a),!1)},q=function(a,b){return m(b.createTextNode(a))},r=o("HTML",window.document);return{START_ELEMENT_TYPE:d,END_ELEMENT_TYPE:e,TEXT_TYPE:f,COMMENT_TYPE:g,FINISHED:r,token:m,createStartElement:n,createEndElement:o,createComment:p,createText:q}}),g("2m",["3w"],function(a){var b=function(b){var c=b.createDocumentFragment(),d=c,e=function(a){g(a),c=a},f=function(){c=c.parentNode},g=function(a){c.appendChild(a)},h=function(c){var d=function(a){var b=a.getNode().cloneNode(!1);e(b)},h=function(a,c){var d=b.createTextNode(a.text());g(d)};switch(c.type()){case a.START_ELEMENT_TYPE:d(c);break;case a.TEXT_TYPE:h(c);break;case a.END_ELEMENT_TYPE:f();break;case a.COMMENT_TYPE:break;default:throw{message:"Unsupported token type: "+c.type()}}};return{dom:d,receive:h}};return{create:b}}),g("2n",["3w"],function(a){var b=function(b,c){var d;c=c||window.document,d=c.createElement("div"),c.body.appendChild(d),d.style.position="absolute",d.style.left="-10000px",d.innerHTML=b,nextNode=d.firstChild||a.FINISHED;var e=[];endNode=!1;var f=function(b,c){return b===a.FINISHED?b:b?a.token(b,c):void 0},g=function(){var b=nextNode,g=endNode;return!endNode&&nextNode.firstChild?(e.push(nextNode),nextNode=nextNode.firstChild):endNode||1!==nextNode.nodeType?nextNode.nextSibling?(nextNode=nextNode.nextSibling,endNode=!1):(nextNode=e.pop(),endNode=!0):endNode=!0,b===a.FINISHED||nextNode||(c.body.removeChild(d),nextNode=a.FINISHED),f(b,g)},h=function(){return void 0!==nextNode};return{hasNext:h,next:g}};return{tokenize:b}}),g("3x",["3w","1h"],function(a,b){var c=function(c,d){var e=function(e,f,g){var h,i,j,k=!1,l=function(){d&&d(w),k=!1,i=[],j=[]},m=function(a){b.each(a,function(a){e.receive(a)})},n=function(a){k?j.push(a):e.receive(a)},o=function(b){d&&i.push(b),c(w,b),b===a.FINISHED&&r()},p=function(){k=!0},q=function(){m(i),l()},r=function(){u(),m(j),l()},s=function(a){h=h||[],h.push(a)},t=function(){return h&&h.length>0},u=function(){b.each(h,function(a){n(a)}),v()},v=function(){h=[]},w={document:g||window.document,settings:f||{},emit:n,receive:o,startTransaction:p,rollback:q,commit:r,defer:s,hasDeferred:t,emitDeferred:u,dropDeferred:v};return l(),w};return e},d=function(a){return c(function(c,d){d.filterAttributes(b.bind(a,c)),c.emit(d)})};return{createFilter:c,createAttributeFilter:d}}),g("2o",["3x","3w"],function(a,b){var c=/^(P|H[1-6]|T[DH]|LI|DIV|BLOCKQUOTE|PRE|ADDRESS|FIELDSET|DD|DT|CENTER)$/,d=function(a){return c.test(a.tag())},e=function(){return null},f=!1;return a.createFilter(function(a,c){var g=function(){f||(a.emit(b.createStartElement("P",{},{},a.document)),f=!0)};switch(c.type()){case b.TEXT_TYPE:g(),a.emit(c);break;case b.END_ELEMENT_TYPE:f&&(d(c)||c===b.FINISHED)?(a.emit(b.createEndElement("P",a.document)),f=!1):"BR"===c.tag()&&a.emit(c);break;case b.START_ELEMENT_TYPE:"BR"===c.tag()?(c.filterAttributes(e),c.filterStyles(e),a.emit(c)):"IMG"===c.tag()&&c.getAttribute("alt")&&(g(),a.emit(b.createText(c.getAttribute("alt"),a.document)))}c===b.FINISHED&&a.emit(c)})}),g("3y",["3w"],function(a){var b=function(){if(navigator.userAgent.indexOf("Gecko")>0&&navigator.userAgent.indexOf("WebKit")<0)return!1;var b=document.createElement("div");try{b.innerHTML='<p style="mso-list: Ignore;"> </p>'}catch(c){return!1}return"Ignore"===a.token(b.firstChild).getStyle("mso-list")},c=b(),d=function(a){return"A"===a.tag()||"SPAN"===a.tag()},e=function(a){var b=a.getStyle("mso-list");return b&&"skip"!==b},f=function(b,c){return b.type()===a.START_ELEMENT_TYPE?0===b.getAttributeCount()||c&&1===b.getAttributeCount()&&null!==b.getAttribute("style")&&void 0!==b.getAttribute("style"):b.type()===a.END_ELEMENT_TYPE};return{hasNoAttributes:f,supportsCustomStyles:c,spanOrA:d,hasMsoListStyle:e}}),g("42",["3w","1h"],function(a,b){var c=[{regex:/^\(?[dc][\.\)]$/,type:{tag:"OL",type:"lower-alpha"}},{regex:/^\(?[DC][\.\)]$/,type:{tag:"OL",type:"upper-alpha"}},{regex:/^\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\.\)]$/,type:{tag:"OL",type:"upper-roman"}},{regex:/^\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\.\)]$/,type:{tag:"OL",type:"lower-roman"}},{regex:/^\(?[0-9]+[\.\)]$/,type:{tag:"OL"}},{regex:/^([0-9]+\.)*[0-9]+\.?$/,type:{tag:"OL",variant:"outline"}},{regex:/^\(?[a-z]+[\.\)]$/,type:{tag:"OL",type:"lower-alpha"}},{regex:/^\(?[A-Z]+[\.\)]$/,type:{tag:"OL",type:"upper-alpha"}}],d={"\u2022":{tag:"UL",type:"disc"},"\xb7":{tag:"UL",type:"disc"},"\xa7":{tag:"UL",type:"square"}},e={o:{tag:"UL",type:"circle"},"-":{tag:"UL",type:"disc"},"\u25cf":{tag:"UL",type:"disc"}},f=function(a,b){var c={tag:a.tag,type:a.type,variant:b};return a.start&&(c.start=a.start),a.type||delete c.type,c},g=function(a,g,i){var j,k,l,m=null;return a&&(j=a.text,k=a.symbolFont),j=b.trim(j),m=e[j],m?m=f(m,j):k?(m=d[j],m=m?f(m,j):{tag:"UL",variant:j}):(b.each(c,function(a){if(a.regex.test(j)){if(g&&h(a.type,g,!0))return m=a.type,m.start=parseInt(j),!1;m||(m=a.type),m.start=parseInt(j)}}),m&&!m.variant&&(l="("===j.charAt(0)?"()":")"===j.charAt(j.length-1)?")":".",m=f(m,l))),m&&"OL"===m.tag&&i&&("P"!==i.tag()||/^MsoHeading/.test(i.getAttribute("class")))&&(m=null),m},h=function(a,b,c){return a===b||a&&b&&a.tag===b.tag&&a.type===b.type&&(c||a.variant===b.variant)},i=function(b,c){return b.type()==a.START_ELEMENT_TYPE&&(font=b.getStyle("font-family"),font?c="Wingdings"===font||"Symbol"===font:/^(P|H[1-6]|DIV)$/.test(b.tag())&&(c=!1)),c};return{guessListType:g,eqListType:h,checkFont:i}}),g("3z",["3w","42","1h"],function(a,b,c){var d=function(d,e){var f,g,h,i=!1,j=function(a){var b=a.style.fontFamily;b&&(i="Wingdings"===b||"Symbol"===b)};if(d.type()===a.START_ELEMENT_TYPE&&e.openedTag&&"SPAN"===d.tag()){for(f=e.openedTag.getNode(),j(f),f.childNodes.length>1&&"A"===f.firstChild.tagName&&""===f.firstChild.textContent&&(f=f.childNodes[1]);f.firstChild&&("SPAN"===f.firstChild.tagName||"A"===f.firstChild.tagName);)f=f.firstChild,j(f);if(f=f.firstChild,!f||3!==f.nodeType)return f&&"IMG"===f.tagName;if(g=f.value,c.trim(g)||(f=f.parentNode.nextSibling,g=f?f.value:""),!f||c.trim(f.parentNode.textContent)!=g)return!1;if(h=b.guessListType({text:g,symbolFont:i},null,e.originalToken))return f.nextSibling&&"SPAN"===f.nextSibling.tagName&&/^[\u00A0\s]/.test(f.nextSibling.firstChild.value)&&("P"===e.openedTag.tag()||"UL"===h.tag)}return!1},e=function(a,b){var c,d=0;for(c=a.parentNode;null!==c&&void 0!==c&&c!==b.parentNode;)d+=c.offsetLeft,c=c.offsetParent;return d},f=function(a){var b={};return function(c,d){var e,f=c+","+d;return b.hasOwnProperty(f)?b[f]:(e=a.call(null,c,d),b[f]=e,e)}},g=function(a){var b=a.indexOf(".");if(b>=0&&c.trim(a.substring(b+1))===className)return match=results[2],!1},h=f(function(a,b){var d,e,f,h,i=/([^{]+){([^}]+)}/g;for(i.lastIndex=0;null!==(d=i.exec(a))&&!e;)c.each(d[1].split(","),g(selector));return!!e&&(f=document.createElement("p"),f.setAttribute("style",e),h=c.ephoxGetComputedStyle(f),!!h&&""+h.marginLeft)}),i=function(){var a,b,c=function(c,d,f,g){var i,j,k=1;return g&&/^([0-9]+\.)+[0-9]+\.?$/.test(g.text)?g.text.replace(/([0-9]+|\.$)/g,"").length+1:(i=b||parseInt(h(f,d.getAttribute("class"))),j=e(c.getNode(),d.getNode()),i?a?j+=a:0===j&&(a=i,j+=i):i=48,b=i=Math.min(j,i),k=Math.max(1,Math.floor(j/i))||1)};return{guessIndentLevel:c}},j=function(){var b=!1,c="",d=function(d){return b&&d.type()===a.TEXT_TYPE?(c+=d.text(),!0):d.type()===a.START_ELEMENT_TYPE&&"STYLE"===d.tag()?(b=!0,!0):d.type()===a.END_ELEMENT_TYPE&&"STYLE"===d.tag()&&(b=!1,!0)};return{check:d}};return{isListWithoutCommentsOrStyles:d,indentGuesser:i,styles:j}}),g("40",["3w","42"],function(a,b){var c=["disc","circle","square"],d=function(a,b){return"UL"===a.tag&&c[b-1]===a.type&&(a={tag:"UL"}),a};return function(c,e){var f,g=[],h=[],i=0,j=function(b,d){var h={},j={};i++,d&&b.type&&(h={"list-style-type":b.type}),b.start&&b.start>1&&(j={start:b.start}),g.push(b),c.emit(a.createStartElement(b.tag,j,h,e)),f=b},k=function(){c.emit(a.createEndElement(g.pop().tag,e)),i--,f=g[g.length-1]},l=function(){for(;i>0;)m(),k();c.commit()},m=function(){var b=h?h.pop():"P";"P"!=b&&c.emit(a.createEndElement(b,e)),c.emit(a.createEndElement("LI",e))},n=function(d,g,i){var l={};if(d){var m=d.getStyle("margin-left");void 0!==m&&(l["margin-left"]=m)}else l["list-style-type"]="none";f&&!b.eqListType(f,g)&&(k(),i&&(c.emit(a.createStartElement("P",{},{},e)),c.emit(a.createText("\xa0",e)),c.emit(a.createEndElement("P",e))),j(g,!0)),c.emit(a.createStartElement("LI",{},l,e)),d&&"P"!=d.tag()?(h.push(d.tag()),d.filterStyles(function(){return null}),c.emit(d)):h.push("P")},o=function(b,f,g,l){if(g){for(i||(i=0);i>b;)m(),k();if(g=d(g,b),i==b)m(),n(f,g,l);else for(b>1&&h.length>0&&"P"!==h[h.length-1]&&(c.emit(a.createEndElement(h[h.length-1],e)),h[h.length-1]="P");i<b;)j(g,i==b-1),n(i==b?f:void 0,g)}},p=function(){return i},q=function(){return f};return{openList:j,closelist:k,closeAllLists:l,closeItem:m,openLI:n,openItem:o,getCurrentListType:q,getCurrentLevel:p}}}),g("41",["3y","3w","3z","42","1h"],function(a,b,c,d,e){var f=function(a,b){e.log("Unexpected token in list conversion: "+b.toString()),a.rollback()},g=function(a,b,c){return b==c?a:null},h=function(c,d,f){f.type()===b.TEXT_TYPE&&""===e.trim(f.text())?c.defer(f):d.skippedPara||f.type()!==b.START_ELEMENT_TYPE||"P"!==f.tag()||a.hasMsoListStyle(f)?j(c,d,f):(d.openedTag=f,c.defer(f),d.nextFilter=i)},i=function(d,e,f){f.type()!==b.START_ELEMENT_TYPE||"SPAN"!==f.tag()||0!==e.spanCount.length||!a.supportsCustomStyles&&c.isListWithoutCommentsOrStyles(f,e)||a.hasMsoListStyle(f)?f.type()===b.END_ELEMENT_TYPE?"SPAN"===f.tag()?(d.defer(f),e.spanCount.pop()):"P"===f.tag()?(d.defer(f),e.skippedPara=!0,e.openedTag=null,e.nextFilter=h):(e.nextFilter=j,e.nextFilter(d,e,f)):f.isWhitespace()?d.defer(f):(e.nextFilter=j,e.nextFilter(d,e,f)):(d.defer(f),e.spanCount.push(f))},j=function(d,e,f){ +var g=function(){e.emitter.closeAllLists(),d.emitDeferred(),e.openedTag=null,d.emit(f),e.nextFilter=j};if(f.type()===b.START_ELEMENT_TYPE&&a.hasMsoListStyle(f)&&"LI"!==f.tag()){var h=(f.getStyle("mso-list"),/ level([0-9]+)/.exec(f.getStyle("mso-list")));h&&h[1]?(e.itemLevel=parseInt(h[1],10)+e.styleLevelAdjust,e.nextFilter===j?d.emitDeferred():d.dropDeferred(),e.nextFilter=l,d.startTransaction(),e.originalToken=f,e.commentMode=!1):g()}else!a.supportsCustomStyles&&(f.type()===b.COMMENT_TYPE&&"[if !supportLists]"===f.text()||c.isListWithoutCommentsOrStyles(f,d))?(f.type()===b.START_ELEMENT_TYPE&&"SPAN"===f.tag()&&e.spanCount.push(f),e.nextFilter=l,d.startTransaction(),e.originalToken=e.openedTag,e.commentMode=!0,e.openedTag=null,d.dropDeferred()):f.type()===b.END_ELEMENT_TYPE&&a.spanOrA(f)?(d.defer(f),e.spanCount.pop()):f.type()===b.START_ELEMENT_TYPE?a.spanOrA(f)?(d.defer(f),e.spanCount.push(f)):(e.openedTag&&(e.emitter.closeAllLists(),d.emitDeferred()),e.openedTag=f,d.defer(f)):g()},k=function(a,c,d){d.type()===b.END_ELEMENT_TYPE&&c.originalToken.tag()===d.tag()&&(c.nextFilter=h,c.styleLevelAdjust=-1),a.emit(d)},l=function(a,c,d){if(d.type()==b.START_ELEMENT_TYPE&&"Ignore"===d.getStyle("mso-list")&&(c.nextFilter=m),d.type()===b.START_ELEMENT_TYPE&&"SPAN"===d.tag())c.spanCount.push(d),(c.commentMode&&""===d.getAttribute("style")||null===d.getAttribute("style"))&&(c.nextFilter=m);else if("A"===d.tag())d.type()===b.START_ELEMENT_TYPE?c.spanCount.push(d):c.spanCount.pop();else if(d.type()===b.TEXT_TYPE)if(c.commentMode)c.nextFilter=m,c.nextFilter(a,c,d);else{var g=c.originalToken,h=c.spanCount;c.emitter.closeAllLists(),a.emit(g),e.each(h,e.bind(a.emit,a)),a.emit(d),a.commit(),c.originalToken=g,c.nextFilter=k}else(c.commentMode||d.type()!==b.COMMENT_TYPE)&&f(a,d)},m=function(c,d,e){e.type()===b.TEXT_TYPE?e.isWhitespace()||(d.nextFilter=n,d.bulletInfo={text:e.text(),symbolFont:d.symbolFont}):a.spanOrA(e)?e.type()===b.START_ELEMENT_TYPE?d.spanCount.push(e):d.spanCount.pop():e.type()===b.START_ELEMENT_TYPE&&"IMG"===e.tag()?(d.nextFilter=n,d.bulletInfo={text:"\u2202",symbolFont:!0}):f(c,e)},n=function(c,d,e){e.type()===b.START_ELEMENT_TYPE&&a.spanOrA(e)?(d.spanCount.push(e),d.nextFilter=o):e.type()===b.END_ELEMENT_TYPE&&a.spanOrA(e)?(d.spanCount.pop(),d.nextFilter=p):e.type()===b.END_ELEMENT_TYPE&&"IMG"===e.tag()||f(c,e)},o=function(c,d,e){e.type()===b.END_ELEMENT_TYPE&&(a.spanOrA(e)&&d.spanCount.pop(),d.nextFilter=p)},p=function(c,h,i){var j=function(a){if(h.nextFilter=q,h.commentMode&&(h.itemLevel=h.indentGuesser.guessIndentLevel(i,h.originalToken,h.styles.styles,h.bulletInfo)),h.listType=d.guessListType(h.bulletInfo,g(h.emitter.getCurrentListType(),h.emitter.getCurrentLevel(),h.itemLevel),h.originalToken),h.listType){for(h.emitter.openItem(h.itemLevel,h.originalToken,h.listType,h.skippedPara),c.emitDeferred();h.spanCount.length>0;)c.emit(h.spanCount.shift());a&&c.emit(i)}else e.log("Unknown list type: "+h.bulletInfo.text+" Symbol font? "+h.bulletInfo.symbolFont),c.rollback()};i.type()===b.TEXT_TYPE||i.type()===b.START_ELEMENT_TYPE?j(!0):i.type()===b.COMMENT_TYPE?j("[endif]"!==i.text()):i.type()===b.END_ELEMENT_TYPE?a.spanOrA(i)&&h.spanCount.pop():f(c,i)},q=function(a,c,d){d.type()===b.END_ELEMENT_TYPE&&d.tag()===c.originalToken.tag()?(c.nextFilter=h,c.skippedPara=!1):a.emit(d)},r=j;return{initial:r}}),g("2p",["3x","3y","3w","3z","40","41","42","1h"],function(a,b,c,d,e,f,g,h){var i={},j=function(a){i.nextFilter=f.initial,i.itemLevel=0,i.originalToken=null,i.commentMode=!1,i.openedTag=null,i.symbolFont=!1,i.listType=null,i.indentGuesser=d.indentGuesser(),i.emitter=e(a,a.document),i.styles=d.styles(),i.spanCount=[],i.skippedPara=!1,i.styleLevelAdjust=0,i.bulletInfo=void 0};j({});var k=function(a){j(a)},l=function(a,b){i.styles.check(b)||(i.symbolFont=g.checkFont(b,i.symbolFont),i.nextFilter(a,i,b))};return a.createFilter(l,k)}),g("2q",["1h"],function(a){var b=function(a){var b=a,c=65279===b.charCodeAt(b.length-1);return c?b.substring(0,b.length-1):a},c=function(a){return/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(a)?a.replace(/(?:<br> [\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br> [\s\r\n]+|<br>)*/g,"$1"):a},d=function(a){return a.replace(/<br><br>/g,"<BR><BR>")},e=function(a){return a.replace(/<br>/g," ")},f=function(a){return a.replace(/<BR><BR>/g,"<br>")},g=[b],h=tinymce.isIE&&document.documentMode>=9?[f,e,d,c].concat(g):g,i=a.compose(h);return{all:i,textOnly:b}}),g("43",["3x"],function(a){var b=/^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\..*)$/,c=function(a){return function(c,d){var e=!1;switch(a){case"all":case"*":e=!0;break;case"valid":e=!b.test(c);break;case void 0:case"none":e="list-style-type"===c;break;default:e=(","+a+",").indexOf(","+c+",")>=0}return e?d:null}};return a.createFilter(function(a,b){var d=a.settings.get("retain_style_properties");b.filterStyles(c(d)),a.emit(b)})}),g("44",["3x","3w"],function(a,b){return a.createFilter(function(a,c){a.seenList?a.emit(c):a.inferring?("LI"===c.tag()&&(c.type()===b.START_ELEMENT_TYPE?a.inferring++:(a.inferring--,a.inferring||(a.needsClosing=!0))),a.emit(c)):("OL"===c.tag()||"UL"===c.tag()?a.seenList=!0:"LI"===c.tag()&&(a.inferring=1,a.needsClosing||a.emit(b.createStartElement("UL",{},{},a.document))),!a.needsClosing||a.inferring||c.isWhitespace()||(a.needsClosing=!1,a.emit(b.createEndElement("UL",a.document))),a.emit(c))})}),g("45",["3x"],function(a){return a.createAttributeFilter(function(a,b){return"name"===a||"id"===a?null:b})}),g("46",["3x"],function(a){return a.createAttributeFilter(function(a,b){var c;if("class"===a)switch(c=this.settings.get("strip_class_attributes")){case"mso":return 0===b.indexOf("Mso")?null:b;case"none":return b;default:return null}return b})}),g("47",["3x","3y","3w"],function(a,b,c){var d=[],e=[],f=!1,g=function(a,b){var e,f,g=1;for(e=b+1;e<a;e++)if(f=d[e],f&&"SPAN"===f.tag())if(f.type()===c.START_ELEMENT_TYPE)g++;else if(f.type()===c.END_ELEMENT_TYPE&&(g--,0===g))return void(d[e]=null)},h=function(a){if(f){var h,i,j=d.length;for(i=0;i<j;i++)h=d[i],h&&(h.type()===c.START_ELEMENT_TYPE&&"SPAN"===h.tag()&&b.hasNoAttributes(h)?g(j,i):a.emit(h))}d=[],e=[],f=!1},i=function(a,b){if(d.push(b),e=e||[],b.type()===c.START_ELEMENT_TYPE)e.push(b);else if(b.type()===c.END_ELEMENT_TYPE&&(e.pop(),0===e.length))return void h(a,b)};return a.createFilter(function(a,e){var g=",FONT,EM,STRONG,SAMP,ACRONYM,CITE,CODE,DFN,KBD,TT,B,I,U,S,SUB,SUP,INS,DEL,VAR,SPAN,";d=d||[];var h=function(a){return!(g.indexOf(","+a.tag()+",")>=0&&b.hasNoAttributes(a,!0))};0===d.length?e.type()===c.START_ELEMENT_TYPE?h(e)?a.emit(e):i(a,e):a.emit(e):(f||(f=h(e)),i(a,e))})}),g("48",["3x"],function(a){return a.createAttributeFilter(function(a,b){return"style"===a&&""===b?null:b})}),g("49",["3x"],function(a){return a.createAttributeFilter(function(a,b){return"lang"===a?null:b})}),g("4a",["3x","3w"],function(a,b){return a.createFilter(function(a,c){if("IMG"===c.tag()){if(c.type()===b.END_ELEMENT_TYPE&&a.skipEnd)return void(a.skipEnd=!1);if(c.type()===b.START_ELEMENT_TYPE){if(/^file:/.test(c.getAttribute("src")))return void(a.skipEnd=!0);if(a.settings.get("base_64_images")&&/^data:image\/.*;base64/.test(c.getAttribute("src")))return void(a.skipEnd=!0)}}a.emit(c)})}),g("4b",["3x"],function(a){return a.createFilter(function(a,b){"META"!==b.tag()&&"LINK"!==b.tag()&&a.emit(b)})}),g("4c",["3x","3y","3w"],function(a,b,c){var d=function(a){return!b.hasNoAttributes(a)&&!/^OLE_LINK/.test(a.getAttribute("name"))},e=[];return a.createFilter(function(a,b){var f;b.type()===c.START_ELEMENT_TYPE&&"A"===b.tag()?(e.push(b),d(b)&&a.defer(b)):b.type()===c.END_ELEMENT_TYPE&&"A"===b.tag()?(f=e.pop(),d(f)&&a.defer(b),0===e.length&&a.emitDeferred()):a.hasDeferred()?a.defer(b):a.emit(b)})}),g("4d",["3x","3w"],function(a,b){var c=!1;return a.createFilter(function(a,d){"SCRIPT"===d.tag()?c=d.type()===b.START_ELEMENT_TYPE:c||(d.filterAttributes(function(a,b){return/^on/.test(a)||"language"===a?null:b}),a.emit(d))})}),g("2r",["43","44","45","46","47","48","49","4a","4b","4c","4d"],function(a,b,c,d,e,f,g,h,i,j,k){return[k,c,h,a,g,f,d,j,e,i,b]}),g("4e",["3x"],function(a){return a.createFilter(function(a,b){b.filterAttributes(function(a,c){return"align"===a?null:"UL"!==b.tag()&&"OL"!==b.tag()||"type"!==a?c:null}),a.emit(b)})}),g("4f",["3x"],function(a){return a.createAttributeFilter(function(a,b){return/^xmlns(:|$)/.test(a)?null:b})}),g("4g",["3x"],function(a){return a.createFilter(function(a,b){b.tag&&/^([OVWXP]|U[0-9]+|ST[0-9]+):/.test(b.tag())||a.emit(b)})}),g("4h",["3x"],function(a){return a.createAttributeFilter(function(a,b){return"href"===a&&(b.indexOf("#_Toc")>=0||b.indexOf("#_mso")>=0)?null:b})}),g("4i",["3x"],function(a){return a.createAttributeFilter(function(a,b){return/^v:/.test(a)?null:b})}),g("2s",["4e","4f","4g","4h","4i","2p"],function(a,b,c,d,e,f){return[c,f,d,e,b,a]}),g("1k",["2m","2n","2o","2p","2q","2r","2s"],function(a,b,c,d,e,f,g){var h=function(a,b,c,d){var e,f=b;for(e=a.length-1;e>=0;e--)f=a[e](f,c,d);return f},i=function(c,d,e,f){var g=a.create(e),i=b.tokenize(c,e);for(pipeline=h(f,g,d,e);i.hasNext();)pipeline.receive(i.next());return g.dom},j=function(a,b,c){var d=e.all(a),h=l(d);b.setWordContent(h);var j=f;return h&&(j=g.concat(f)),i(d,b,c,j)},k=function(a,b,d){var f=e.textOnly(a);return i(f,b,d,[c])},l=function(a){return a.indexOf("<o:p>")>=0||a.indexOf("p.MsoNormal, li.MsoNormal, div.MsoNormal")>=0||a.indexOf("MsoListParagraphCxSpFirst")>=0||a.indexOf("<w:WordDocument>")>=0};return{filter:j,filterPlainText:k,isWordContent:l}}),g("f",["1i","1j","1k","x"],function(a,b,c,d){return function(e,f){var g=function(g){var h=function(d){var f={content:g};e.fire("PastePreProcess",f);var h=b.create(d||e.settings.powerpaste_word_import,d||e.settings.powerpaste_html_import,!0),i=c.filter(f.content,h,e.getDoc());e.fire("PastePostProcess",i),e.undoManager.transact(function(){a.insert(i,e)})},i=function(a){return"clean"===a||"merge"===a},j=function(){var a,b=function(){a.close(),h("clean")},c=function(){a.close(),h("merge")},g=[{text:f("cement.dialog.paste.clean"),onclick:b},{text:f("cement.dialog.paste.merge"),onclick:c}],i={title:f("cement.dialog.paste.title"),spacing:10,padding:10,items:[{type:"container",html:f("cement.dialog.paste.instructions")}],buttons:g};a=e.windowManager.open(i),d(function(){a&&a.getEl().focus()},1)};c.isWordContent(g)&&!i(e.settings.powerpaste_word_import)?j():i(e.settings.powerpaste_html_import)?h():j()};return{showDialog:g}}}),g("4",["d","e","f"],function(a,b,c){return function(d,e,f){var g,h,i=this,j=c(d,a.translate),k=function(a){return function(b){a(b)}};g=b.getOnPasteFunction(d,j.showDialog,e),d.on("paste",k(g)),h=b.getOnKeyDownFunction(d,j.showDialog,e),d.on("keydown",k(h)),d.addCommand("mceInsertClipboardContent",function(a,b){j.showDialog(b.content||b)}),d.settings.paste_preprocess&&d.on("PastePreProcess",function(a){d.settings.paste_preprocess.call(i,i,a)})}}),g("1s",[],function(){var a=0,b=function(b){var c=new Date,d=c.getTime(),e=Math.floor(1e9*Math.random());return a++,b+"_"+e+a+String(d)};return{generate:b}}),g("1n",["g","1s","2t","h","o","2u","2b","j"],function(a,b,c,d,e,f,g,h){var i=c.detect(),j=function(a){var b=g.createObjectURL(a);return k(a,b)},k=function(a,c){return e.nu(function(e){var g=f();g.onload=function(f){var g=b.generate("image"),h=f.target,i=d.blob(g,a,c,h);e(i)},g.readAsDataURL(a)})},l=function(a){return 0===a.length?e.pure([]):e.mapM(a,j)},m=function(a){return a.raw().target.files||a.raw().dataTransfer.files},n=function(b){return 1===b.length&&a.contains(b,"Files")},o=function(b){return!a.contains(b,"text/_moz_htmlcontext")},p=function(b){return a.contains(b,"Files")},q=function(a){return!0},r=function(){return i.browser.isChrome()||i.browser.isSafari()||i.browser.isOpera()?p:i.browser.isFirefox()?o:i.browser.isIE()?n:q},s=r(),t=function(c){var f=a.map(c,function(a){var c=b.generate("image");return d.url(c,h.get(a,"src"),a)});return e.pure(f)};return{multiple:l,toFiles:m,isFiles:s,fromImages:t,single:j,singleWithUrl:k}}),g("i",["1n"],function(a){var b=function(b){return a.multiple(b)},c=function(b){return a.single(b)},d=function(b,c){return a.singleWithUrl(b,c)};return{multiple:b,single:c,singleWithUrl:d}}),g("5",["g","h","i","j","k","d","f","2"],function(a,b,c,d,e,f,g,h){return function(i,j,k,l){var m,n=/^image\/(jpe?g|png|gif|bmp)$/i;i.on("dragstart dragend",function(a){m="dragstart"===a.type}),i.on("dragover dragend dragleave",function(a){a.preventDefault()});var o=function(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d];b[e]=a.getData(e)}}return b},p=function(a,b){return b in a&&a[b].length>0},q=function(a){return!r(a)&&(p(a,"text/html")||p(a,"text/plain"))},r=function(a){var b=a["text/plain"];return!!b&&0===b.indexOf("file://")},s=function(b){var c=b.target.files||b.dataTransfer.files;return a.filter(c,function(a){return n.test(a.type)})},t=function(c){return a.map(c,function(a){var c=e.fromTag("img"),f=b.cata(a,l.getLocalURL,function(a,b,c){return b});return d.set(c,"src",f),c.dom().outerHTML}).join("")},u=function(a){c.multiple(a).get(function(a){var b=t(a);i.insertContent(b,{merge:i.settings.paste_merge_formats!==!1}),l.uploadImages(a)})};i.on("drop",function(a){if(!m){if(h.dom.RangeUtils&&h.dom.RangeUtils.getCaretRangeFromPoint){var b=h.dom.RangeUtils.getCaretRangeFromPoint(a.clientX,a.clientY,i.getDoc());b&&i.selection.setRng(b)}var c=s(a);if(c.length>0)return u(c),void a.preventDefault();var d=o(a.dataTransfer);if(q(d)){var e=g(i,f.translate);e.showDialog(d["text/html"]||d["text/plain"]),a.preventDefault()}}})}}),g("4r",["g","2c","1f"],function(a,b,c){var d=["officeStyles","htmlStyles","isWord","proxyBin","isInternal","backgroundAssets"],e=function(b,c){var e={};return a.each(d,function(a){var d=c[a]().or(b[a]());d.each(function(b){e[a]=b})}),f(e)},f=b.immutableBag([],d);return{nu:f,merge:e}}),g("2w",["n","1m"],function(a,b){var c=b.generate([{error:["message"]},{paste:["elements","assets","correlated"]},{cancel:[]},{incomplete:["elements","assets","correlated","message"]}]),d=function(a,b,c,d,e){return a.fold(b,c,d,e)},e=function(b,e){return d(b,a.none,a.none,a.none,function(b,f,g,h){return d(e,a.none,function(b,d,e){return a.some(c.incomplete(b,d,e,h))},a.none,a.none)}).getOr(e)};return{error:c.error,paste:c.paste,cancel:c.cancel,incomplete:c.incomplete,cata:d,carry:e}}),g("4q",["4r","2w","1v","2c"],function(a,b,c,d){var e=d.immutableBag(["response","bundle"],[]),f=function(a){return l(function(b){var c=e(a);b(c)})},g=function(a,b){a(e(b))},h=function(a){return f({response:a.response(),bundle:a.bundle()})},i=function(c){return f({response:b.error(c),bundle:a.nu({})})},j=function(){return f({response:b.cancel(),bundle:a.nu({})})},k=function(){return f({response:b.paste([],[],[]),bundle:a.nu({})})},l=function(a){var b=function(b){a(b)};return c(l,b)};return{call:g,sync:l,pure:f,pass:h,done:e,error:i,initial:k,cancel:j}}),g("23",["n"],function(a){var b=function(a){for(var b=[],c=function(a){b.push(a)},d=0;d<a.length;d++)a[d].each(c);return b},c=function(b,c){for(var d=0;d<b.length;d++){var e=c(b[d],d);if(e.isSome())return e}return a.none()},d=function(b,c){for(var d=[],e=0;e<b.length;e++){var f=b[e];if(!f.isSome())return a.none();d.push(f.getOrDie())}return a.some(c.apply(null,d))};return{cat:b,findMap:c,liftN:d}}),g("2v",["4q","4r","2w","g","p","23","2c"],function(a,b,c,d,e,f,g){var h=g.immutable("steps","input","label","capture"),i=function(a,b){return f.findMap(a,function(a){return a.getAvailable(b).map(function(b){return h(a.steps(),b,a.label(),a.capture())})})},j=function(a,b,c){var d=i(a,c);return d.getOrThunk(function(){var a=b.getAvailable(c);return h(b.steps(),a,b.label(),b.capture())})},k=function(d,f){var g=e.curry(a.pass,d),h=function(){return f().map(function(e){var f=b.merge(d.bundle(),e.bundle()),g=c.carry(d.response(),e.response());return a.done({response:g,bundle:f})})};return c.cata(d.response(),g,h,g,h)},l=function(b,c){var e=d.foldl(b,function(a,b){return a.bind(function(a){var d=function(){return b(c,a)};return k(a,d)})},a.initial());return e.map(function(a){return a.response()})};return{choose:j,run:l}}),g("4s",[],function(){var a=function(){var a=!1,b=function(){return a},c=function(){a=!0},d=function(){a=!1};return{isBlocked:b,block:c,unblock:d}};return{create:a}}),g("4t",[],function(){var a=function(a,b){return{control:a,instance:b}};return{create:a}}),g("2x",["4s","4t"],function(a,b){var c=function(c){var d=a.create(),e=function(){d.isBlocked()||c.apply(null,arguments)};return b.create(d,e)};return{tap:c}}),g("2y",["2t","p","x"],function(a,b,c){var d=a.detect(),e=function(a,b,c){b.control.block(),a.dom().execCommand("paste"),c(),b.control.unblock()},f=function(a,b,d){c(d,1)},g=d.browser.isIE()&&d.browser.version.major<=10,h=g?e:f,i=function(a,b,c){return h(a,b,c)};return{willBlock:b.constant(g),run:i}}),g("1o",["2v","2w","g","p","2x","21","22","2y"],function(a,b,c,d,e,f,g,h){return function(i,j){var k=g.create({cancel:f([]),error:f(["message"]),insert:f(["elements","assets","correlated"])}),l=e.tap(function(d){h.willBlock()&&(l.control.block(),d.preventDefault());var e=a.choose(i,j,d);e.capture()&&d.preventDefault();var f=c.map(e.steps(),function(a){return a(l.control)}),g=a.run(f,e.input());g.get(function(a){b.cata(a,function(a){k.trigger.error(a)},function(a,b,c){k.trigger.insert(a,b,c)},function(){k.trigger.cancel()},function(a,b,c,d){k.trigger.insert(a,b,c),k.trigger.error(d)})})});return{paste:l.instance,isBlocked:l.control.isBlocked,destroy:d.noop,events:k.registry}}}),g("2z",["p"],function(a){var b=function(a){return function(b){return function(c,d,e){return b.block(),a(c,d,e).map(function(a){return b.unblock(),a})}}},c=function(b){return a.constant(b)};return{blocking:b,normal:c}}),g("4u",["68","i","o","2b","n"],function(a,b,c,d,e){var f=function(a){return void 0!==a.convertURL?a.convertURL:void 0!==a.msConvertURL?a.msConvertURL:void 0},g=function(g){var h=a.resolve("window.clipboardData.files"),i=f(g);if(void 0!==h&&void 0!==i&&h.length>0){var j=c.mapM(h,function(a){var c=d.createObjectURL(a);return i.apply(g,[a,"specified",c]),b.singleWithUrl(a,c)});return e.some(j)}return e.none()};return{convert:g}}),g("30",["4u","o","p","n"],function(a,b,c,d){var e=function(){var c=d.none(),e=function(b){c=a.convert(b)},f=function(a){return c.fold(function(){return b.nu(function(a){a([])})},function(a){return a}).get(a)},g=function(){c=d.none()};return{convert:e,listen:f,clear:g}},f=function(){return{convert:d.none,listen:function(a){a([])},clear:c.noop}};return{background:e,ignore:f}}),h("4v",RegExp),g("31",["n","23","4v"],function(a,b,c){var d=function(a){return void 0!==a&&void 0!==a.types&&null!==a.types},e=function(a,c){return b.findMap(a,function(a){return f(c,a)})},f=function(d,e){var f=new c(e,"i");return b.findMap(d,function(b){return null!==b.match(f)?a.some({type:b,flavor:e}):a.none()})};return{isValidData:d,getPreferredFlavor:e,getFlavor:f}}),g("4x",["1l","1m"],function(a,b){var c=b.generate([{none:[]},{error:["message "]},{blob:["blob"]}]),d=function(a,b,c,d){return a.fold(b,c,d)};return a.merge(c,{cata:d})}),g("78",["3p"],function(a){return function(b,c){var d=a.getOrDie("Blob");return new d(b,c)}}),g("79",["3p"],function(a){return function(b){var c=a.getOrDie("Uint8Array");return new c(b)}}),g("7a",["3p"],function(a){var b=function(b){var c=a.getOrDie("requestAnimationFrame");c(b)},c=function(b){var c=a.getOrDie("atob");return c(b)};return{atob:c,requestAnimationFrame:b}}),g("6d",["4x","78","79","7a","n","2f","37","12","62"],function(a,b,c,d,e,f,g,h,i){var j=function(a,e){for(var f=1024,g=d.atob(a),j=g.length,k=i.ceil(j/f),l=new h(k),m=0;m<k;++m){for(var n=m*f,o=i.min(n+f,j),p=new h(o-n),q=n,r=0;q<o;++r,++q)p[r]=g[q].charCodeAt(0);l[m]=c(p)}return b(l,{type:e})},k=function(a){return g.startsWith(a,"data:image/")&&a.indexOf(";base64,")>"data:image/".length},l=function(b){if(!k(b))return a.none();var c=b.indexOf(";"),d=b.substr("data:".length,c-"data:".length),e=b.substr(c+";base64,".length);try{var f=a.blob(j(e,d));return f}catch(g){return a.error(g)}};return{convert:l}}),g("4w",["6d"],function(a){var b=function(b){return a.convert(b)};return{toBlob:b}}),g("4y",["2w","g","h","p","2c","j","k","1d","2a","1f"],function(a,b,c,d,e,f,g,h,i,j){var k=e.immutable("asset","image"),l=function(a,e){var g=[];return b.each(a,function(a,b){c.cata(a,function(c,d,h,i){var j=e[b];f.set(j,"src",h),g.push(k(a,j))},d.noop)}),g},m=function(a,e){var g=[],j=b.bind(a,function(a){return"img"===h.name(a)?[a]:i.descendants(a,"img")});return b.each(e,function(a){c.cata(a,function(c,d,e,h){b.each(j,function(b){f.get(b,"src")===e&&g.push(k(a,b))})},d.noop)}),g},n=function(d){var e=[],h=[],i=[];return b.each(d,function(a){return c.cata(a,function(b,c,d,j){var l=g.fromTag("img");f.set(l,"src",d),e.push(l),h.push(a),i.push(k(a,l))},function(a,b,c){j.error("Internal error: Paste operation produced an image URL instead of a Data URI: ",b)})}),a.paste(e,h,i)};return{createImages:n,findImages:m,updateSources:l}}),g("1y",["g","29","3f"],function(a,b,c){var d=function(b){b.dom().textContent="",a.each(c.children(b),function(a){e(a)})},e=function(a){var b=a.dom();null!==b.parentNode&&b.parentNode.removeChild(b)},f=function(a){var d=c.children(a);d.length>0&&b.before(a,d),e(a)};return{empty:d,remove:e,unwrap:f}}),g("32",["4w","4x","4q","4y","2w","g","i","n","2c","j","k","1d","1y","29","2a"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=i.immutable("blob","image"),q=function(c,d){var e=a.toBlob(d);return b.cata(e,h.none,h.none,function(a){return h.some(p(a,c))})},r=function(a){var b=k.fromTag("div");return n.append(b,a),o.descendants(b,"img[src]")},s=function(a){return 0===a.indexOf("data:")&&a.indexOf("base64")>-1},t=function(a){return 0===a.indexOf("blob:")},u=function(a){return s(a)||t(a)},v=function(a){var b=j.get(a,"src");return u(b)},w=function(a){return f.bind(r(a),function(a){var b=j.get(a,"src");return u(b)?q(a,b).toArray():[]})},x=function(a){var b=f.filter(a,function(a){return"img"!==l.name(a)||!v(a)});return e.incomplete(b,[],[],"errors.local.images.disallowed")};return function(a){return function(b,h){return c.sync(function(b){var i=function(){c.call(b,{response:h.response(),bundle:h.bundle()})},j=function(a){var i=w(a),j=f.map(i,function(a){return a.blob()});g.multiple(j).get(function(g){var j=f.map(i,function(a){return a.image()}),k=d.updateSources(g,j);c.call(b,{response:e.paste(a,g,k),bundle:h.bundle()})})},k=function(a){var d=f.filter(r(a),v);f.each(d,m.remove),c.call(b,{response:d.length>0?x(a):h.response(),bundle:h.bundle()})},l=function(b,c,d,e){a.allowLocalImages===!1?k(b):0===c.length?j(b):i()};e.cata(h.response(),i,l,i,l)})}}}),g("4z",["4q","2w","o","1f"],function(a,b,c,d){var e=function(c){var e=function(e,f){return c.proxyBin().fold(function(){return d.error(e),a.pure({response:b.cancel(),bundle:{}})},f)};return{handle:e}},f=function(a){return c.nu(function(b){a.backgroundAssets().fold(function(){b([])},function(a){a.listen(b)})})},g=function(a){var b=j(a);return b&&h(a)||!b&&i(a)},h=function(a){return a.officeStyles().getOr(!0)},i=function(a){return a.htmlStyles().getOr(!1)},j=function(a){return a.isWord().getOr(!1)},k=function(a){return a.isInternal().getOr(!1)};return{proxyBin:e,backgroundAssets:f,merging:g,mergeOffice:h,mergeNormal:i,isWord:j,isInternal:k}}),g("5c",["3g"],function(a){var b=a.create("ephox-cement");return{resolve:b.resolve}}),g("50",["5c","1l","p","n","27","k","28","1x","29"],function(a,b,c,d,e,f,g,h,i){return function(j,k){var l=k.translations,m=function(a,c,e){e(d.some(b.merge(c,{officeStyles:a,htmlStyles:a})))},n=function(b,c){var k=function(){t(),m(!1,b,c)},n=function(){t(),m(!0,b,c)},o=f.fromTag("div");e.add(o,a.resolve("styles-dialog-content"));var p=f.fromTag("p"),q=g.fromHtml(l("cement.dialog.paste.instructions"));i.append(p,q),h.append(o,p);var r={text:l("cement.dialog.paste.clean"),tabindex:0,className:a.resolve("clean-styles"),click:k},s={text:l("cement.dialog.paste.merge"),tabindex:1,className:a.resolve("merge-styles"),click:n},t=function(){v.destroy()},u=function(){c(d.none()),t()},v=j(!0);v.setTitle(l("cement.dialog.paste.title")),v.setContent(o),v.setButtons([r,s]),v.show(),v.events.close.bind(u)},o=function(a,b){var c=a?"officeStyles":"htmlStyles",d=k[c];"clean"===d?m(!1,k,b):"merge"===d?m(!0,k,b):n(k,b)};return{get:o,destroy:c.noop}}}),g("33",["4q","4r","4z","50","2w"],function(a,b,c,d,e){var f=function(f,g){var h=d(f,g);return function(d,f){var g=f.bundle(),i=f.response();return a.sync(function(d){h.get(c.isWord(g),function(c){var g=c.fold(function(){return{response:e.cancel(),bundle:f.bundle()}},function(a){return{response:i,bundle:b.nu({officeStyles:a.officeStyles,htmlStyles:a.htmlStyles})}});a.call(d,g)})})}},g=function(d,e){return function(g,h){return c.isInternal(h.bundle())?a.pure({response:h.response(),bundle:b.nu({officeStyles:!0,htmlStyles:!0})}):f(d,e)(g,h)}},h=function(c,d){return function(e,f){return a.pure({response:f.response(),bundle:b.nu({officeStyles:c,htmlStyles:d})})}};return{fixed:h,fromConfig:f,fromConfigIfExternal:g}}),g("7r",["2t","p","k","1g"],function(a,b,c,d){var e=function(a){for(var b=[];null!==a.nextNode();)b.push(c.fromDom(a.currentNode));return b},f=function(a){try{return e(a)}catch(b){return[]}},g=a.detect().browser,h=g.isIE()||g.isSpartan()?f:e,i=b.constant(b.constant(!0)),j=function(a,b){var c=b.fold(i,function(a){return function(b){return a(b.nodeValue)}});c.acceptNode=c;var e=d.createTreeWalker(a.dom(),NodeFilter.SHOW_COMMENT,c,!1);return h(e)};return{find:j}}),g("7b",["n","7r","37","1g"],function(a,b,c,d){var e=function(d){return b.find(d,a.some(function(a){return c.startsWith(a,"[if gte vml 1]")}))};return{find:e}}),g("6q",[],function(){var a=function(a){return void 0!==a.style};return{isSupported:a}}),h("11",window),g("5d",["1b","g","1c","n","j","5i","k","1d","6q","37","1e","1f","11"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=function(b,c,d){if(!a.isString(d))throw l.error("Invalid call to CSS.set. Property ",c,":: Value ",d,":: Element ",b),new k("CSS value must be a string: "+d);i.isSupported(b)&&b.style.setProperty(c,d)},o=function(a,b){i.isSupported(a)&&a.style.removeProperty(b)},p=function(a,b,c){var d=a.dom();n(d,b,c)},q=function(a,b){var d=a.dom();c.each(b,function(a,b){n(d,b,a)})},r=function(a,b){var d=a.dom();c.each(b,function(a,b){a.fold(function(){o(d,b)},function(a){n(d,b,a)})})},s=function(a,b){var c=a.dom(),d=m.getComputedStyle(c),e=d.getPropertyValue(b),g=""!==e||f.inBody(a)?e:t(c,b);return null===g?void 0:g},t=function(a,b){return i.isSupported(a)?a.style.getPropertyValue(b):""},u=function(a,b){var c=a.dom(),e=t(c,b);return d.from(e).filter(function(a){return a.length>0})},v=function(a,b,c){var d=g.fromTag(a);p(d,b,c);var e=u(d,b);return e.isSome()},w=function(a,b){var c=a.dom();o(c,b),e.has(a,"style")&&""===j.trim(e.get(a,"style"))&&e.remove(a,"style")},x=function(a,b){var c=e.get(a,"style"),d=b(a),f=void 0===c?e.remove:e.set;return f(a,"style",c),d},y=function(a,b){var c=a.dom(),d=b.dom();i.isSupported(c)&&i.isSupported(d)&&(d.style.cssText=c.style.cssText)},z=function(a){return a.dom().offsetWidth},A=function(a,b,c){u(a,c).each(function(a){u(b,c).isNone()&&p(b,c,a)})},B=function(a,c,d){h.isElement(a)&&h.isElement(c)&&b.each(d,function(b){A(a,c,b)})};return{copy:y,set:p,preserve:x,setAll:q,setOptions:r,remove:w,get:s,getRaw:u,isValidValue:v,reflow:z,transfer:B}}),g("6r",["1b","g","p","n","5i","3n","k","2i"],function(a,b,c,d,e,f,g,h){var i=function(a){return n(e.body(),a)},j=function(b,e,f){for(var h=b.dom(),i=a.isFunction(f)?f:c.constant(!1);h.parentNode;){h=h.parentNode;var j=g.fromDom(h);if(e(j))return d.some(j);if(i(j))break}return d.none()},k=function(a,b,c){var d=function(a){return b(a)};return h(d,j,a,b,c)},l=function(a,b){var c=a.dom();return c.parentNode?m(g.fromDom(c.parentNode),function(c){return!f.eq(a,c)&&b(c)}):d.none()},m=function(a,e){var f=b.find(a.dom().childNodes,c.compose(e,g.fromDom));return d.from(f).map(g.fromDom)},n=function(a,b){var c=function(a){for(var e=0;e<a.childNodes.length;e++){if(b(g.fromDom(a.childNodes[e])))return d.some(g.fromDom(a.childNodes[e]));var f=c(a.childNodes[e]);if(f.isSome())return f}return d.none()};return c(a.dom())};return{first:i,ancestor:j,closest:k,sibling:l,child:m,descendant:n}}),g("6s",["j","k","1x","29","1y","3f"],function(a,b,c,d,e,f){var g=function(a,c){return b.fromDom(a.dom().cloneNode(c))},h=function(a){return g(a,!1)},i=function(a){return g(a,!0)},j=function(c,d){var e=b.fromTag(d),f=a.clone(c);return a.setAll(e,f),e},k=function(a,b){var c=j(a,b),e=f.children(i(a));return d.append(c,e),c},l=function(a,b){var g=j(a,b);c.before(a,g);var h=f.children(a);return d.append(g,h),e.remove(a),g};return{shallow:h,shallowAs:j,deep:i,copy:k,mutate:l}}),g("5a",["n","j","27","5d","k","1d","6r","6s","2a","37"],function(a,b,c,d,e,f,g,h,i,j){var k=function(a,b){var c=f.value(a),d=e.fromTag("div"),h=c.indexOf("]>");return d.dom().innerHTML=c.substr(h+"]>".length),g.descendant(d,function(a){return f.name(a)===b})},l=function(b){return f.isComment(b)?k(b,"v:shape"):a.none()},m=function(a){return l(a).map(function(a){var f=b.get(a,"o:spid"),g=void 0===f?b.get(a,"id"):f,h=e.fromTag("img");return c.add(h,"rtf-data-image"),b.set(h,"data-image-id",g.substr("_x0000_".length)),b.set(h,"data-image-type","code"),d.setAll(h,{width:d.get(a,"width"),height:d.get(a,"height")}),h})},n=function(d){if("img"===f.name(d)){var e=b.get(d,"src");if(void 0!==e&&null!==e&&j.startsWith(e,"file://")){var g=h.shallow(d),i=e.split(/[\/\\]/),k=i[i.length-1];return b.set(g,"data-image-id",k),b.remove(g,"src"),b.set(g,"data-image-type","local"),c.add(g,"rtf-data-image"),a.some(g)}return a.none()}return a.none()},o=function(a){return p(a).length>0},p=function(a){return i.descendants(a,".rtf-data-image")};return{local:n,vshape:m,find:p,exists:o,scour:l}}),g("6e",["7b","g","5a","n","23","2c","j","28","2a","1f"],function(a,b,c,d,e,f,g,h,i,j){var k=f.immutable("img","vshape"),l=function(a){var b=n(a);return b._rawElement=a.dom(),b},m=function(a){var b=n(a);return b._rawElement=a.dom(),b},n=function(a){return g.clone(a)},o=function(d){var f=h.fromHtml(d),g=b.bind(f,function(a){return i.descendants(a,"img")}),j=b.bind(f,a.find),k=e.cat(b.map(j,c.scour)),l=b.map(g,function(a){return p(a,k)});return e.cat(l)},p=function(a,c){var e=g.get(a,"v:shapes"),f=d.from(b.find(c,function(a){return g.get(a,"id")===e}));return f.isNone()&&j.log("WARNING: unable to find data for image",a.dom()),f.map(function(b){return q(a,b)})},q=function(a,b){return k(l(a),m(b))};return{extract:o}}),g("7c",["1b","g","p","n","j","27"],function(a,b,c,d,e,f){var g=function(b,c){var d=c.style;if(e.has(b,"width")&&e.has(b,"height")&&a.isString(d)){var f=d.match(/rotation:([^;]*)/);null===f||"90"!==f[1]&&"-90"!==f[1]||e.setAll(b,{width:e.get(b,"height"),height:e.get(b,"width")})}},h=function(a,b){var c=b["o:spid"],d=void 0===c?b.id:c;g(a,b),f.add(a,"rtf-data-image"),e.set(a,"data-image-id",d.substr("_x0000_".length)),e.set(a,"data-image-type","code")},i=function(a,b,c){return c.img()[a]===b},j=function(a,f,g){var h=e.get(f,g),j=c.curry(i,g,h),k=b.find(a,j);return d.from(k).map(function(a){return e.remove(f,g),a})},k=function(a,c,d){b.each(c,function(b){j(a,b,d).each(function(a){h(b,a.vshape())})})};return{rotateImage:g,insertRtfCorrelation:k}}),g("7s",["2t","n","1e"],function(a,b,c){return function(d,e){var f=function(a){if(!d(a))throw new c("Can only get "+e+" value of a "+e+" node");return j(a).getOr("")},g=function(a){try{return h(a)}catch(c){return b.none()}},h=function(a){ +return d(a)?b.from(a.dom().nodeValue):b.none()},i=a.detect().browser,j=i.isIE()&&10===i.version.major?g:h,k=function(a,b){if(!d(a))throw new c("Can only set raw "+e+" value of a "+e+" node");a.dom().nodeValue=b};return{get:f,getOption:j,set:k}}}),g("7d",["1d","7s"],function(a,b){var c=b(a.isComment,"comment"),d=function(a){return c.get(a)},e=function(a){return c.getOption(a)},f=function(a,b){c.set(a,b)};return{get:d,getOption:e,set:f}}),g("7t",["1x"],function(a){var b=function(b,c,d){b.dom().styleSheet?b.dom().styleSheet.cssText=c:a.append(b,d)};return{setCss:b}}),g("8f",[],function(){var a=function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")};return{escape:a}}),g("7u",["1c","8f","4v"],function(a,b,c){var d=function(a,d,e){var f=new c("url\\(\\s*['\"]?"+b.escape(d)+"(.*?)['\"]?\\s*\\)","g");return a.replace(f,'url("'+e+'$1")')},e=function(b,c){var e=b;return a.each(c,function(a,b){e=d(e,b,a)}),e};return{replace:d,replaceMany:e}}),g("7e",["j","k","1x","20","7t","7u","12"],function(a,b,c,d,e,f,g){var h=function(c){var d=b.fromTag("style",c.dom());return a.set(d,"type","text/css"),d},i=function(a,c,d){e.setCss(a,c,b.fromText(c,d.dom()))},j=function(a,b,e){var g=h(e),j=void 0===b?a:f.replaceMany(a,b);i(g,j,e);var k=d.descendant(e,"head").getOrDie();c.append(k,g)},k=function(a){var b=a.dom().styleSheets;return g.prototype.slice.call(b)};return{stylesheets:k,inject:j}}),g("7v",["g","2c"],function(a,b){var c=b.immutable("selector","style","raw"),d=function(b){var d=b.cssRules;return a.map(d,function(a){var b=a.selectorText,d=a.style.cssText;if(void 0===d)throw"WARNING: Browser does not support cssText property";return c(b,d,a.style)})},e=function(b){return a.bind(b,d)};return{extract:d,extractAll:e}}),g("7f",["7v"],function(a){var b=function(b){return a.extract(b)},c=function(b){return a.extractAll(b)};return{extract:b,extractAll:c}}),function(a,b,c){a("7g",[],function(){var a=function(){var a,b,c;return a=function(a){var c,d,e,f,g=[];for(c=a.split(","),e=0,f=c.length;e<f;e+=1)d=c[e],d.length>0&&g.push(b(d));return g},b=function(a){var b,c=a,d={a:0,b:0,c:0},e=[],f=/(\[[^\]]+\])/g,g=/(#[^\s\+>~\.\[:]+)/g,h=/(\.[^\s\+>~\.\[:]+)/g,i=/(::[^\s\+>~\.\[:]+|:first-line|:first-letter|:before|:after)/gi,j=/(:[\w-]+\([^\)]*\))/gi,k=/(:[^\s\+>~\.\[:]+)/g,l=/([^\s\+>~\.\[:]+)/g;return b=function(b,f){var g,h,i,j,k,l;if(b.test(c))for(g=c.match(b),h=0,i=g.length;h<i;h+=1)d[f]+=1,j=g[h],k=c.indexOf(j),l=j.length,e.push({selector:a.substr(k,l),type:f,index:k,length:l}),c=c.replace(j,Array(l+1).join(" "))},function(){var a=function(a){var b,d,e,f;if(a.test(c))for(b=c.match(a),d=0,e=b.length;d<e;d+=1)f=b[d],c=c.replace(f,Array(f.length+1).join("A"))},b=/\\[0-9A-Fa-f]{6}\s?/g,d=/\\[0-9A-Fa-f]{1,5}\s/g,e=/\\./g;a(b),a(d),a(e)}(),function(){var a=/:not\(([^\)]*)\)/g;a.test(c)&&(c=c.replace(a," $1 "))}(),function(){var a,b,d,e,f=new RegExp("{[^]*","gm");if(f.test(c))for(a=c.match(f),b=0,d=a.length;b<d;b+=1)e=a[b],c=c.replace(e,Array(e.length+1).join(" "))}(),b(f,"b"),b(g,"a"),b(h,"b"),b(i,"c"),b(j,"b"),b(k,"b"),c=c.replace(/[\*\s\+>~]/g," "),c=c.replace(/[#\.]/g," "),b(l,"c"),e.sort(function(a,b){return a.index-b.index}),{selector:a,specificity:"0,"+d.a.toString()+","+d.b.toString()+","+d.c.toString(),specificityArray:[0,d.a,d.b,d.c],parts:e}},c=function(a,c){var d,e,f;if("string"==typeof a){if(a.indexOf(",")!==-1)throw"Invalid CSS selector";d=b(a).specificityArray}else{if(!Array.isArray(a))throw"Invalid CSS selector or specificity array";if(4!==a.filter(function(a){return"number"==typeof a}).length)throw"Invalid specificity array";d=a}if("string"==typeof c){if(c.indexOf(",")!==-1)throw"Invalid CSS selector";e=b(c).specificityArray}else{if(!Array.isArray(c))throw"Invalid CSS selector or specificity array";if(4!==c.filter(function(a){return"number"==typeof a}).length)throw"Invalid specificity array";e=c}for(f=0;f<4;f+=1){if(d[f]<e[f])return-1;if(d[f]>e[f])return 1}return 0},{calculate:a,compare:c}}();return"undefined"!=typeof exports&&(exports.calculate=a.calculate,exports.compare=a.compare),a})}(f.bolt.module.api.define,f.bolt.module.api.require,f.bolt.module.api.demand),g("6f",["7c","g","p","2c","j","7d","5d","1y","2a","3f","7e","7f","7g"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=d.immutable("selector","raw"),o=function(b,c,d,e,f){var g=i.descendants(c,"img");t(c),a.insertRtfCorrelation(d,g,e);var h=f.mergeInline()?s:p;h(b,c)},p=c.noop,q=function(a,c){var d={};return b.each(a,function(e){if(void 0!==a[e]){var f=c.dom().style;b.contains(f,e)||(d[e]=a[e])}}),d},r=function(a,c){var d=b.bind(c,function(c){var d=i.descendants(a,c.selector());return b.each(d,function(a){var b=q(c.raw(),a);g.setAll(a,b)}),d});b.each(d,function(a){e.remove(a,"class")})},s=function(a,c){var d=k.stylesheets(a),e=l.extractAll(d),f=function(a){return a.selector().indexOf(",")!==-1},g=function(a){return!f(a)},h=function(a){var c=a.selector().split(",");return b.map(c,function(b){var c=b.trim();return n(c,a.raw())})},i=b.flatten(b.map(b.filter(e,f),h)),j=b.filter(e,g),o=j.concat(i);o.sort(function(a,b){return m.compare(a.selector(),b.selector())}).reverse(),r(c,o)},t=function(a){var c=j.children(a);b.each(c,function(a){f.getOption(a).each(function(b){"StartFragment"!==b&&"EndFragment"!==b||h.remove(a)})})};return{doMergeInlineStyles:r,process:o}}),g("71",["n","k"],function(a,b){var c=function(c){var d=c.dom();try{var e=d.contentWindow?d.contentWindow.document:d.contentDocument;return void 0!==e&&null!==e?a.some(b.fromDom(e)):a.none()}catch(f){return console.log("Error reading iframe: ",d),console.log("Error was: "+f),a.none()}},d=function(a){var b=c(a);return b.fold(function(){return a},function(a){return a})};return{doc:d}}),g("5x",["71","5i"],function(a,b){var c=function(c,d){if(!b.inBody(c))throw"Internal error: attempted to write to an iframe that is not in the DOM";var e=a.doc(c),f=e.dom();f.open(),f.writeln(d),f.close()};return{write:c}}),g("25",["p","k"],function(a,b){var c=function(b,c,d,e,f,g,h){return{target:a.constant(b),x:a.constant(c),y:a.constant(d),stop:e,prevent:f,kill:g,raw:a.constant(h)}},d=function(d,e){return function(f){if(d(f)){var g=b.fromDom(f.target),h=function(){f.stopPropagation()},i=function(){f.preventDefault()},j=a.compose(i,h),k=c(g,f.clientX,f.clientY,h,i,j,f);e(k)}}},e=function(b,c,e,f,g){var i=d(e,f);return b.dom().addEventListener(c,i,g),{unbind:a.curry(h,b,c,i,g)}},f=function(a,b,c,d){return e(a,b,c,d,!1)},g=function(a,b,c,d){return e(a,b,c,d,!0)},h=function(a,b,c,d){a.dom().removeEventListener(b,c,d)};return{bind:f,capture:g}}),g("w",["p","25"],function(a,b){var c=a.constant(!0),d=function(a,d,e){return b.bind(a,d,c,e)},e=function(a,d,e){return b.capture(a,d,c,e)};return{bind:d,capture:e}}),g("6g",["p","5x","5d","w","k","1x","1y","x"],function(a,b,c,d,e,f,g,h){return function(i){var j=function(j,k,l){var m=e.fromTag("div"),n=e.fromTag("iframe");c.setAll(m,{display:"none"});var o=d.bind(n,"load",function(){o.unbind(),b.write(n,j);var c=n.dom().contentWindow.document;if(void 0===c)throw"sandbox iframe load event did not fire correctly";var d=e.fromDom(c),f=c.body;if(void 0===f)throw"sandbox iframe does not have a body";var i=e.fromDom(f),p=k(d,i);g.remove(m),h(a.curry(l,p),0)});f.append(m,n),f.append(i,m)};return{play:j}}}),g("6h",["k","28","1x","29","1y","3f"],function(a,b,c,d,e,f){var g=function(a){return a.dom().innerHTML},h=function(g,h){var i=f.owner(g),j=i.dom(),k=a.fromDom(j.createDocumentFragment()),l=b.fromHtml(h,j);d.append(k,l),e.empty(g),c.append(g,k)},i=function(b){var d=a.fromTag("div"),e=a.fromDom(b.dom().cloneNode(!0));return c.append(d,e),g(d)};return{get:g,set:h,getOuter:i}}),g("51",["4q","4r","6e","6f","2w","p","6g","k","28","6h","1g"],function(a,b,c,d,e,f,g,h,i,j,k){var l="data-textbox-image",m=function(a){return void 0===a||null===a||0===a.length},n=function(a){var b=1;return a.replace(/(<img[^>]*)src=".*?"/g,function(a,c,d){return c+l+'="'+b++ +'"'})},o=function(a,b){var c=g(h.fromDom(k.body));return function(e,g){c.play(e,function(c,e){return d.process(c,e,a,l,{mergeInline:f.constant(b)}),j.get(e)},g)}},p=function(d,f,g){return a.sync(function(h){var j=c.extract(d),k=o(j,f);k(g,function(c){var d=i.fromHtml(c);a.call(h,{response:e.paste(d,[],[]),bundle:b.nu({})})})})},q=function(){return a.pure({response:e.paste([],[],[]),bundle:b.nu({})})},r=function(a){var b=a.indexOf("</html>");return b>-1?a.substr(0,b+"</html>".length):a},s=function(b,c,d){var f=r(b.data()),g=n(f);return d.cleanDocument(g,c).fold(function(){return a.pure({response:e.error("errors.paste.word.notready"),bundle:{}})},function(a){return m(a)?q():p(g,c,a)})};return{handle:s}}),g("52",["4q","4r","4y","g","i"],function(a,b,c,d,e){var f=function(f){var g=d.filter(f,function(a){return"file"===a.kind&&/image/.test(a.type)}),h=d.map(g,function(a){return a.getAsFile()});return a.sync(function(d){e.multiple(h).get(function(e){var f=c.createImages(e);a.call(d,{response:f,bundle:b.nu({})})})})};return{handle:f}}),g("7w",[],function(){return{validStyles:function(){return/^(mso-.*|tab-stops|tab-interval|language|text-underline|text-effect|text-line-through|font-color|horiz-align|list-image-[0-9]+|separator-image|table-border-color-(dark|light)|vert-align|vnd\..*)$/},specialInline:function(){return/^(font|em|strong|samp|acronym|cite|code|dfn|kbd|tt|b|i|u|s|sub|sup|ins|del|var|span)$/}}}),g("83",[],function(){var a=function(a){return g(function(b,c,d,e,f,g){return b(a)})},b=function(a){return g(function(b,c,d,e,f,g){return c(a)})},c=function(a){return g(function(b,c,d,e,f,g){return d(a)})},d=function(a){return g(function(b,c,d,e,f,g){return e(a)})},e=function(){return g(function(a,b,c,d,e,f){return e()})},f=function(a){return g(function(b,c,d,e,f,g){return g(a)})},g=function(a){var b=function(b){return a(function(a){return 0===b.toLowerCase().indexOf(a.toLowerCase())},function(a){return a.test(b.toLowerCase())},function(a){return b.toLowerCase().indexOf(a.toLowerCase())>=0},function(a){return b.toLowerCase()===a.toLowerCase()},function(){return!0},function(a){return!a.matches(b)})};return{fold:a,matches:b}},h=function(a,b,c,d,e,f,g){return a.fold(b,c,d,e,f,g)};return{starts:a,pattern:b,contains:c,exact:d,all:e,not:f,cata:h}}),g("7x",["p","1d","83"],function(a,b,c){var d=function(b,d,e,f){var g=f.name,h=void 0!==f.condition?f.condition:a.constant(!0),i=void 0!==f.value?f.value:c.all();return g.matches(e)&&i.matches(d)&&h(b)},e=function(c,d){var e=b.name(c),f=d.name,g=void 0!==d.condition?d.condition:a.constant(!0);return f.matches(e)&&g(c)};return{keyval:d,name:e}}),g("8g",["g","1c","p","j"],function(a,b,c,d){var e=function(b,c){var d={};return a.each(b.dom().attributes,function(a){c(a.value,a.name)||(d[a.name]=a.value)}),d},f=function(c,e,f){a.each(e,function(a){d.remove(c,a)}),b.each(f,function(a,b){d.set(c,b,a)})},g=function(c,d,e){var g=a.map(c.dom().attributes,function(a){return a.name});b.size(d)!==g.length&&f(c,g,d)};return{filter:e,clobber:g,scan:c.constant({})}}),g("8h",["g","1c","j","5d","37"],function(a,b,c,d,e){var f=function(b){var c={},d=void 0!==b&&null!==b?b.split(";"):[];return a.each(d,function(a){var b=a.split(":");2===b.length&&(c[e.trim(b[0])]=e.trim(b[1]))}),c},g=function(a,b){return a.dom().style.getPropertyValue(b)},h=function(b,c){var d=b.dom().style,e=void 0===d?[]:d,f={};return a.each(e,function(a){var d=g(b,a);c(d,a)||(f[a]=d)}),f},i=function(a,b,c){d.set(a,b,c)},j=function(b,c,d){var e=b.dom().getAttribute("style"),g=f(e),h={};return a.each(c,function(a){var b=g[a];void 0===b||d(b,a)||(h[a]=b)}),h},k=function(c){var d=b.keys(c);return a.map(d,function(a){return a+": "+c[a]}).join("; ")},l=function(a,d,e){c.set(a,"style","");var f=b.size(d),g=b.size(e);if(0===f&&0===g)c.remove(a,"style");else if(0===f)c.set(a,"style",k(e));else{b.each(d,function(b,c){i(a,c,b)});var h=c.get(a,"style"),j=g>0?k(e)+"; ":"";c.set(a,"style",j+h)}};return{filter:h,clobber:l,scan:j}}),g("7y",["8g","8h","p","k"],function(a,b,c,d){var e=["mso-list"],f=function(a,c){var d=b.scan(a,e,c),f=b.filter(a,c);b.clobber(a,f,d)},g=function(b,c){var d=a.filter(b,c);a.clobber(b,d,{})},h=function(a){var d=b.filter(a,c.constant(!1));b.clobber(a,d,{})},i=function(a,b){f(d.fromDom(a),b)},j=function(a,b){g(d.fromDom(a),b)};return{style:f,attribute:g,styleDom:i,attributeDom:j,validateStyles:h}}),g("7i",["g","1l","7x","7y","p","j","27","3q","1y","2a"],function(a,b,c,d,e,f,g,h,i,j){var k=function(b,d,e){b(e,function(b,f){return a.exists(d,function(a){return c.keyval(e,b,f,a)})})},l=function(l,m){var n=b.merge({styles:[],attributes:[],classes:[],tags:[]},m),o=j.descendants(l,"*");a.each(o,function(b){k(d.style,n.styles,b),k(d.attribute,n.attributes,b),a.each(n.classes,function(c){var d=f.has(b,"class")?h.get(b):[];a.each(d,function(a){c.name.matches(a)&&g.remove(b,a)})})});var p=j.descendants(l,"*");a.each(p,function(b){var d=a.exists(n.tags,e.curry(c.name,b));d&&i.remove(b)})},m=function(d,f){var g=b.merge({tags:[]},f),h=j.descendants(d,"*");a.each(h,function(b){var d=a.exists(g.tags,e.curry(c.name,b));d&&i.unwrap(b)})},n=function(d,f){var g=b.merge({tags:[]},f),h=j.descendants(d,"*");a.each(h,function(b){var d=a.find(g.tags,e.curry(c.name,b));void 0!==d&&null!==d&&d.mutate(b)})},o=function(b){var c=j.descendants(b,"*");a.each(c,function(a){d.validateStyles(a)})};return{remover:l,unwrapper:m,transformer:n,validator:o}}),g("86",["1c","5d","k"],function(a,b,c){var d="startElement",e="endElement",f="text",g="comment",h=function(a,h,i){var j,k,l,m=c.fromDom(a);switch(a.nodeType){case 1:h?j=e:(j=d,b.setAll(m,i||{})),k="HTML"!==a.scopeName&&a.scopeName&&a.tagName&&a.tagName.indexOf(":")<=0?(a.scopeName+":"+a.tagName).toUpperCase():a.tagName;break;case 3:j=f,l=a.nodeValue;break;case 8:j=g,l=a.nodeValue;break;default:console.log("WARNING: Unsupported node type encountered: "+a.nodeType)}var n=function(){return a},o=function(){return k},p=function(){return j},q=function(){return l};return{getNode:n,tag:o,type:p,text:q}},i=function(b,c,d,e){var f=e.createElement(b);return a.each(c,function(a,b){f.setAttribute(b,a)}),h(f,!1,d)},j=function(a,b){return h(b.createElement(a),!0)},k=function(a,b){return h(b.createComment(a),!1)},l=function(a,b){return h(b.createTextNode(a))},m=j("HTML",window.document);return{START_ELEMENT_TYPE:d,END_ELEMENT_TYPE:e,TEXT_TYPE:f,COMMENT_TYPE:g,FINISHED:m,token:h,createStartElement:i,createEndElement:j,createComment:k,createText:l}}),g("7z",["86"],function(a){var b=function(b){var c=b.createDocumentFragment(),d=c,e=function(a){g(a),c=a},f=function(){c=c.parentNode,null===c&&(c=d)},g=function(a){c.appendChild(a)},h=function(c){var d=function(a){var b=a.getNode().cloneNode(!1);e(b)},h=function(a,c){var d=b.createTextNode(a.text());g(d)};switch(c.type()){case a.START_ELEMENT_TYPE:d(c);break;case a.TEXT_TYPE:h(c);break;case a.END_ELEMENT_TYPE:f();break;case a.COMMENT_TYPE:break;default:throw{message:"Unsupported token type: "+c.type()}}};return{dom:d,receive:h,label:"SERIALISER"}};return{create:b}}),g("80",["86"],function(a){var b=function(b,c){var d;c=c||window.document,d=c.createElement("div"),c.body.appendChild(d),d.style.position="absolute",d.style.left="-10000px",d.innerHTML=b,nextNode=d.firstChild||a.FINISHED;var e=[];endNode=!1;var f=function(b,c){return b===a.FINISHED?b:b?a.token(b,c):void 0},g=function(){var b=nextNode,g=endNode;return!endNode&&nextNode.firstChild?(e.push(nextNode),nextNode=nextNode.firstChild):endNode||1!==nextNode.nodeType?nextNode.nextSibling?(nextNode=nextNode.nextSibling,endNode=!1):(nextNode=e.pop(),endNode=!0):endNode=!0,b===a.FINISHED||nextNode||(c.body.removeChild(d),nextNode=a.FINISHED),f(b,g)},h=function(){return void 0!==nextNode};return{hasNext:h,next:g}};return{tokenise:b}}),g("7j",["7z","80"],function(a,b){var c=function(a,b,c){var d,e=c;for(d=b.length-1;d>=0;d--)e=b[d](e,{},a);return e},d=function(d,e,f){for(var g=a.create(d),h=b.tokenise(e,d),i=c(d,f,g);h.hasNext();){var j=h.next();i.receive(j)}return g.dom};return{build:c,run:d}}),g("6m",["g","7i","7j","k","6h","1y","3f"],function(a,b,c,d,e,f,g){var h=function(a){return function(c){b.remover(c,a)}},i=function(a){return function(c){b.unwrapper(c,a)}},j=function(a){return function(c){b.transformer(c,a)}},k=function(){return function(a){b.validator(a)}},l=function(a){return function(b){var d=e.get(b),h=g.owner(b),i=c.run(h.dom(),d,a);f.empty(b),b.dom().appendChild(i)}},m=function(b,c,f){var g=d.fromTag("div",b.dom());return g.dom().innerHTML=c,a.each(f,function(a){a(g)}),e.get(g)},n=function(a,b){return a.indexOf("<o:p>")>=0||b.browser.isSpartan()&&a.indexOf('v:shapes="')>=0||b.browser.isSpartan()&&a.indexOf("mso-")>=0||a.indexOf("mso-list")>=0||a.indexOf("p.MsoNormal, li.MsoNormal, div.MsoNormal")>=0||a.indexOf("MsoListParagraphCxSpFirst")>=0||a.indexOf("<w:WordDocument>")>=0};return{removal:h,unwrapper:i,transformer:j,validate:k,pipeline:l,isWordContent:n,go:m}}),g("7l",["g","86"],function(a,b){return function(c,d,e){return function(e,f,g){var h=function(b){a.each(b,i)},i=function(a){e.receive(a)},j=function(a){c(l,a,k)},k=function(a,c){return b.token(c,a.type()===b.END_ELEMENT_TYPE,{})},l={emit:i,emitTokens:h,receive:j,document:window.document};return d(l),l}}}),g("8u",["8h","86","p","j","5d","k"],function(a,b,c,d,e,f){var g=function(a,b){var c=f.fromDom(a.getNode());return d.get(c,b)},h=function(a,b){var c=f.fromDom(a.getNode());return e.get(c,b)},i=function(a){return a.type()===b.TEXT_TYPE&&/^[\s\u00A0]*$/.test(a.text())},j=function(b){var d=f.fromDom(b.getNode()),e=a.scan(d,["mso-list"],c.constant(!1));return e["mso-list"]};return{getAttribute:g,getStyle:h,isWhitespace:i,getMsoList:j}}),g("96",["g","n"],function(a,b){var c=function(c,e){var f=a.find(c,function(a){return"UL"===a.tag||e&&d(a,e,!0)});return void 0!==f?b.some(f):c.length>0?b.some(c[0]):b.none()},d=function(a,b,c){return a===b||a&&b&&a.tag===b.tag&&a.type===b.type&&(c||a.variant===b.variant)};return{guessFrom:c,eqListType:d}}),g("8l",[],function(){var a=function(a,b){if(void 0===a||void 0===b)throw console.trace(),"brick";a.nextFilter.set(b)},b=function(b){return function(c,d,e){a(d,b)}},c=function(a,b,c){var d=b.nextFilter.get();d(a,b,c)},d=function(b){return function(d,e,f){a(e,b),c(d,e,f)}},e=function(a,b){return a.nextFilter.get()===b};return{next:a,go:c,jump:d,isNext:e,setNext:b}}),g("8t",["g","8u","96","8l","p","2c","j","k"],function(a,b,c,d,e,f,g,h){var i=function(a,b){return g.has(h.fromDom(b.getNode()),"data-list-level")},j=function(a){var b=parseInt(g.get(a,"data-list-level"),10),c=g.get(a,"data-list-emblems"),d=JSON.parse(c);return g.remove(a,"data-list-level"),g.remove(a,"data-list-emblems"),{level:e.constant(b),emblems:e.constant(d)}},k=f.immutable("level","token","type"),l=function(c){return!a.contains(["P"],c.tag())||/^MsoHeading/.test(b.getAttribute(c,"class"))},m=function(a,b,d,e){var f=d.getCurrentListType(),g=d.getCurrentLevel(),h=g==e.level()?f:null;return c.guessFrom(e.emblems(),h).filter(function(a){return!("OL"===a.tag&&l(b))})},n=function(a,b,c){var d=m(c.listType.get(),a,c.emitter,b);return d.each(c.listType.set),k(b.level(),c.originalToken.get(),c.listType.get())},o=function(a){return function(b,c,e){var f=j(h.fromDom(e.getNode()));f.level();c.originalToken.set(e);var g=n(e,f,c);c.emitter.openItem(g.level(),g.token(),g.type()),d.next(c,a.inside())}};return{predicate:i,action:o}}),g("8v",["p"],function(a){return function(b,c,d){return{pred:b,action:c,label:a.constant(d)}}}),g("8w",["g","p","n"],function(a,b,c){var d=function(a,b){return function(a,c,d){return b(a,c,d)}};return function(e,f,g){var h=d(e+" :: FALLBACK --- ",g),i=function(g,i,j){var k=c.from(a.find(f,function(a){return a.pred(i,j)})),l=k.fold(b.constant(h),function(a){var b=a.label();return void 0===b?a.action:d(e+" :: "+b,a.action)});l(g,i,j)};return i.toString=function(){return"Handlers for "+e},i}}),g("8i",["8t","86","8u","8v","8w","8l"],function(a,b,c,d,e,f){var g=function(a){var c=function(b,c,d){f.next(c,a.outside())},g=function(a,c){return c.type()===b.END_ELEMENT_TYPE&&a.originalToken.get()&&c.tag()===a.originalToken.get().tag()};return e("Inside.List.Item",[d(g,c,"Closing open tag")],function(a,b,c){a.emit(c)})},h=function(g){var h=function(a,b,c){b.emitter.closeAllLists(),a.emit(c),f.next(b,g.outside())},i=function(a,d){return d.type()===b.TEXT_TYPE&&c.isWhitespace(d)};return e("Outside.List.Item",[d(a.predicate,a.action(g),"Data List ****"),d(i,function(a,b,c){a.emit(c)},"Whitespace")],h)};return{inside:g,outside:h}}),g("97",["2c"],function(a){var b=a.immutable("state","result"),c=a.immutable("state","value"),d=a.immutable("level","type","types","items");return{state:d,value:c,result:b}}),g("9j",["97","n"],function(a,b){var c=function(c){var d=c.items().slice(0);if(d.length>0&&"P"!==d[d.length-1]){var e=d[d.length-1];d[d.length-1]="P";var f=a.state(c.level(),c.type(),c.types(),d);return a.value(f,b.some(e))}return a.value(c,b.none())},d=function(c,d){var e=c.items().slice(0),f=void 0!==d&&"P"!==d?b.some(d):b.none();f.fold(function(){e.push("P")},function(a){e.push(a)});var g=a.state(c.level(),c.type(),c.types(),e);return a.value(g,f)};return{start:d,finish:c}}),g("9k",["97"],function(a){var b=function(b,c,d){for(var e=[],f=b;c(f);){var g=d(f);f=g.state(),e=e.concat(g.result())}return a.result(f,e)},c=function(a,c,d){var e=function(a){return a.level()<c};return b(a,e,d)},d=function(a,c,d){var e=function(a){return a.level()>c};return b(a,e,d)};return{moveRight:c,moveLeft:d,moveUntil:b}}),g("9v",["8u"],function(a){var b=function(b){var c=a.getStyle(b,"margin-left");return void 0!==c&&"0px"!==c?{"margin-left":c}:{}},c=function(a){var c={"list-style-type":"none"};return a?b(a):c};return{from:c}}),g("9l",["7y","86","96","97","9j","9v","p"],function(a,b,c,d,e,f,g){var h=function(a,c,e){var f=c.start&&c.start>1?{start:c.start}:{},h=a.level()+1,i=c,j=a.types().concat([c]),k=[g.curry(b.createStartElement,c.tag,f,e)],l=d.state(h,i,j,a.items());return d.result(l,k)},i=function(a){var c=a.types().slice(0),e=[g.curry(b.createEndElement,c.pop().tag)],f=a.level()-1,h=c[c.length-1],i=d.state(f,h,c,a.items());return d.result(i,e)},j=function(a,b){var c=i(a),e=h(c.state(),b,b.type?{"list-style-type":b.type}:{});return d.result(e.state(),c.result().concat(e.result()))},k=function(h,i,k){var l={},m=f.from(i),n=h.type()&&!c.eqListType(h.type(),k)?j(h,k):d.result(h,[]),o=[g.curry(b.createStartElement,"LI",l,m)],p=e.start(n.state(),i&&i.tag()),q=p.value().map(function(b){return a.styleDom(i.getNode(),g.constant(!0)),[g.constant(i)]}).getOr([]);return d.result(p.state(),n.result().concat(o).concat(q))},l=function(a){var c=g.curry(b.createEndElement,"LI"),f=e.finish(a),h=f.value().fold(function(){return[c]},function(a){return[g.curry(b.createEndElement,a),c]});return d.result(f.state(),h)};return{open:h,openItem:k,close:i,closeItem:l}}),g("98",["g","86","97","9j","9k","9l","p","n"],function(a,b,c,d,e,f,g,h){var i=function(b){if(0===b.length)throw"Compose must have at least one element in the list";var d=b[b.length-1],e=a.bind(b,function(a){return a.result()});return c.result(d.state(),e)},j=function(a){var b=f.closeItem(a),c=f.close(b.state());return i([b,c])},k=function(a,b,c,d){var e=a.level()===c-1&&b.type?{"list-style-type":b.type}:{},g=f.open(a,b,e),h=f.openItem(g.state(),g.state().level()==c?d:void 0,b);return i([g,h])},l=function(a,b,d){var e=a.level()>0?f.closeItem(a):c.result(a,[]),g=f.openItem(e.state(),d,b);return i([e,g])},m=function(a,b,c,d){return e.moveRight(a,c,function(a){return k(a,b,c,d)})},n=function(a,b){return e.moveLeft(a,b,j)},o=function(a,e,f,i){var j=f>1?d.finish(a):c.value(a,h.none()),k=j.value().map(function(a){return[g.curry(b.createEndElement,a)]}).getOr([]),l=(f-j.state().level(),m(j.state(),e,f,i));return c.result(l.state(),k.concat(l.result()))},p=function(a,b,d,e){var f=a.level()>b?n(a,b):c.result(a,[]),g=f.state().level()===b?l(f.state(),e,d):o(f.state(),e,b,d);return i([f,g])},q=n;return{openItem:p,closeAllLists:q}}),g("8x",["g","97","98"],function(a,b,c){var d=["disc","circle","square"],e=function(a,b){return"UL"===a.tag&&d[b-1]===a.type&&(a={tag:"UL"}),a};return function(d,f){var g=b.state(0,void 0,[],[]),h=function(b){a.each(b.result(),function(a){var b=a(f);d.emit(b)})},i=function(){var a=c.closeAllLists(g,0);g=a.state(),h(a)},j=function(a,b,d){if(d){var f=e(d,a),i=c.openItem(g,a,b,f);g=i.state(),h(i)}},k=function(){return g.level()},l=function(){return g.type()};return{closeAllLists:i,openItem:j,getCurrentListType:l,getCurrentLevel:k}}}),g("z",[],function(){var a=function(b){var c=b,d=function(){return c},e=function(a){c=a},f=function(){return a(d())};return{get:d,set:e,clone:f}};return a}),g("8j",["8x","p","z"],function(a,b,c){var d={getCurrentListType:function(){return e().getCurrentListType()},getCurrentLevel:function(){return e().getCurrentLevel()},closeAllLists:function(){return e().closeAllLists.apply(void 0,arguments)},openItem:function(){return e().openItem.apply(void 0,arguments)}},e=function(){return{getCurrentListType:b.constant({}),getCurrentLevel:b.constant(1),closeAllLists:b.identity,openItem:b.identity}};return function(f){var g=c(f),h=c(null),i=c(null),j=function(c){g.set(f),h.set(null),i.set(null),_emitter=a(c,c.document),e=b.constant(_emitter)};return{reset:j,nextFilter:g,originalToken:h,listType:i,emitter:d}}}),g("8k",["86"],function(a){return function(){var b=!1,c="",d=function(d){return b&&d.type()===a.TEXT_TYPE?(c+=d.text(),!0):d.type()===a.START_ELEMENT_TYPE&&"STYLE"===d.tag()?(b=!0,!0):d.type()===a.END_ELEMENT_TYPE&&"STYLE"===d.tag()&&(b=!1,!0)};return{check:d}}}),g("81",["7l","8i","8j","8k","8l","1g"],function(a,b,c,d,e,f){var g={inside:function(){return i},outside:function(){return j}},h=d(),i=b.inside(g),j=b.outside(g),k=c(j);return a(function(a,b,c){h.check(b)||e.go(a,k,b)},k.reset,"list.filters")}),h("8o",parseInt),g("8y",["g","1l","64","8o"],function(a,b,c,d){var e=[{regex:/^\(?[dc][\.\)]$/,type:{tag:"OL",type:"lower-alpha"}},{regex:/^\(?[DC][\.\)]$/,type:{tag:"OL",type:"upper-alpha"}},{regex:/^\(?M*(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})[\.\)]$/,type:{tag:"OL",type:"upper-roman"}},{regex:/^\(?m*(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})[\.\)]$/,type:{tag:"OL",type:"lower-roman"}},{regex:/^\(?[0-9]+[\.\)]$/,type:{tag:"OL"}},{regex:/^([0-9]+\.)*[0-9]+\.?$/,type:{tag:"OL",variant:"outline"}},{regex:/^\(?[a-z]+[\.\)]$/,type:{tag:"OL",type:"lower-alpha"}},{regex:/^\(?[A-Z]+[\.\)]$/,type:{tag:"OL",type:"upper-alpha"}}],f={"\u2022":{tag:"UL",type:"disc"},"\xb7":{tag:"UL",type:"disc"},"\xa7":{tag:"UL",type:"square"}},g={o:{tag:"UL",type:"circle"},"-":{tag:"UL",type:"disc"},"\u25cf":{tag:"UL",type:"disc"},"\ufffd":{tag:"UL",type:"circle"}},h=function(a,b){return void 0!==a.variant?a.variant:"("===b.charAt(0)?"()":")"===b.charAt(b.length-1)?")":"."},i=function(a){var b=a.split("."),e=function(){if(0===b.length)return a;var c=b[b.length-1];return 0===c.length&&b.length>1?b[b.length-2]:c}(),f=d(e,10);return c(f)?{}:{start:f}},j=function(c,d){var j=g[c]?[g[c]]:[],k=d&&f[c]?[f[c]]:d?[{tag:"UL",variant:c}]:[],l=a.bind(e,function(a){return a.regex.test(c)?[b.merge(a.type,i(c),{variant:h(a.type,c)})]:[]}),m=j.concat(k).concat(l);return a.map(m,function(a){return void 0!==a.variant?a:b.merge(a,{variant:c})})};return{extract:j}}),g("7o",[],function(){var a=function(a){return a.dom().textContent},b=function(a,b){a.dom().textContent=b};return{get:a,set:b}}),g("8m",["g","8y","8h","p","n","5d","6h","1d","6r","7o","3f","62","64","8o"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o=18,p=function(a){var b=c.scan(a,["mso-list"],d.constant(!1));return b["mso-list"]},q=function(a){var b=p(a),c=/ level([0-9]+)/.exec(b);return c&&c[1]?e.some(n(c[1],10)):e.none()},r=function(a,c){var d=j.get(a).trim(),f=b.extract(d,c);return f.length>0?e.some(f):e.none()},s=function(a){return i.child(a,v)},t=function(a){return i.child(a,h.isComment).bind(k.nextSibling).filter(function(a){return"span"===h.name(a)})},u=function(a){return i.descendant(a,function(a){var b=h.isElement(a)?c.scan(a,["mso-list"],d.constant(!1)):[];return!!b["mso-list"]})},v=function(b){return h.isElement(b)&&f.getRaw(b,"font-family").exists(function(b){return a.contains(["wingdings","symbol"],b.toLowerCase())})},w=function(a){return f.getRaw(a,"margin-left").bind(function(a){var b=n(a,10);return m(b)?e.none():e.some(l.max(1,l.ceil(b/o)))})};return{getMsoList:p,extractLevel:q,extractEmblem:r,extractSymSpan:s,extractMsoIgnore:u,extractCommentSpan:t,isSymbol:v,deduceLevel:w}}),h("8n",JSON),g("82",["g","8m","n","j","7r","1d","1y","3f","8n","8o"],function(a,b,c,d,e,f,g,h,i,j){var k=function(a,b,c){d.set(a,"data-list-level",b);var e=i.stringify(c);d.set(a,"data-list-emblems",e)},l=function(b){var d=e.find(b,c.none());a.each(d,g.remove)},m=function(b,c,e,f){k(b,c,e),l(b),a.each(f,g.remove),d.remove(b,"style"),d.remove(b,"class")},n=function(a){return b.extractLevel(a).bind(function(c){return b.extractSymSpan(a).bind(function(d){return b.extractEmblem(d,!0).map(function(b){var e=function(){m(a,c,b,[d])};return{mutate:e}})})})},o=function(a){return b.extractLevel(a).bind(function(c){return b.extractCommentSpan(a).bind(function(d){return b.extractEmblem(d,b.isSymbol(d)).map(function(b){var e=function(){m(a,c,b,[d])};return{mutate:e}})})})},p=function(a){return b.extractLevel(a).bind(function(c){return b.extractCommentSpan(a).bind(function(d){return b.extractEmblem(d,b.isSymbol(d)).map(function(b){var e=function(){m(a,c,b,[d])};return{mutate:e}})})})},q=function(a){return"p"!==f.name(a)?c.none():b.extractLevel(a).bind(function(c){return b.extractMsoIgnore(a).bind(function(d){return b.extractEmblem(d,!1).map(function(b){var e=function(){m(a,c,b,[h.parent(d).getOr(d)])};return{mutate:e}})})})},r=function(a){return"p"!==f.name(a)?c.none():b.extractMsoIgnore(a).bind(function(c){var d=h.parent(c).getOr(c),e=b.isSymbol(d);return b.extractEmblem(c,e).bind(function(c){return b.deduceLevel(a).map(function(b){var e=function(){m(a,b,c,[d])};return{mutate:e}})})})},s=function(a){return n(a).orThunk(function(){return o(a)}).orThunk(function(){return p(a)}).orThunk(function(){return q(a)}).orThunk(function(){return r(a)})};return{find:s}}),g("7k",["6m","81","82","83"],function(a,b,c,d){var e=a.transformer({tags:[{name:d.pattern(/^(p|h\d+)$/),mutate:function(a){c.find(a).each(function(a){a.mutate()})}}]});return{filter:b,preprocess:e}}),g("6n",["6r"],function(a){var b=function(b){return a.first(b).isSome()},c=function(b,c,d){return a.ancestor(b,c,d).isSome()},d=function(b,c,d){return a.closest(b,c,d).isSome()},e=function(b,c){return a.sibling(b,c).isSome()},f=function(b,c){return a.child(b,c).isSome()},g=function(b,c){return a.descendant(b,c).isSome()};return{any:b,ancestor:c,closest:d,sibling:e,child:f,descendant:g}}),g("84",["g","j","6h","1d","6n"],function(a,b,c,d,e){var f=function(a){return"img"!==d.name(a)},g=function(a){var b=a.dom().attributes,c=void 0!==b&&null!==b&&b.length>0;return"span"!==d.name(a)||c},h=function(b){return!k(b)||g(b)&&e.descendant(b,function(b){var c=!k(b),e=!a.contains(["font","em","strong","samp","acronym","cite","code","dfn","kbd","tt","b","i","u","s","sub","sup","ins","del","var","span"],d.name(b));return d.isText(b)||c||e})},i=function(a){return"ol"===d.name(a)||"ul"===d.name(a)},j=function(a){var c=b.get(a,"src");return/^file:/.test(c)},k=function(a){return void 0===a.dom().attributes||null===a.dom().attributes||(0===a.dom().attributes.length||1===a.dom().attributes.length&&"style"===a.dom().attributes[0].name)},l=function(a){return 0===c.get(a).length};return{isNotImage:f,hasContent:h,isList:i,isLocal:j,hasNoAttributes:k,isEmpty:l}}),g("8p",["1d","7s"],function(a,b){var c=b(a.isText,"text"),d=function(a){return c.get(a)},e=function(a){return c.getOption(a)},f=function(a,b){c.set(a,b)};return{get:d,getOption:e,set:f}}),g("85",["g","1c","n","j","5d","k","6h","1x","29","1d","1y","8p","3f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=function(b,c){var d=f.fromTag(b);h.before(c,d);var e=c.dom().attributes;a.each(e,function(a){d.dom().setAttribute(a.name,a.value)});var g=m.children(c); +return i.append(d,g),k.remove(c),d},o=function(a){0===g.get(a).length&&h.append(a,f.fromTag("br"))},p=function(a){return m.prevSibling(a).bind(function(a){return j.isText(a)&&0===l.get(a).trim().length?p(a):"li"===j.name(a)?c.some(a):c.none()})},q=function(b){m.parent(b).each(function(c){var d=j.name(c);a.contains(["ol","ul"],d)&&p(b).fold(function(){var a=f.fromTag("li");e.set(a,"list-style-type","none"),h.wrap(b,a)},function(a){h.append(a,b)})})},r=function(a){var c=n("span",a),f={face:"font-family",size:"font-size",color:"color"},g={"font-size":{1:"8pt",2:"10pt",3:"12pt",4:"14pt",5:"18pt",6:"24pt",7:"36pt"}};b.each(f,function(a,b){if(d.has(c,b)){var f=d.get(c,b),h=void 0!==g[a]&&void 0!==g[a][f]?g[a][f]:f;e.set(c,a,h),d.remove(c,b)}})};return{changeTag:n,addBrTag:o,properlyNest:q,fontToSpan:r}}),g("7h",["7w","6m","7k","84","85","p","27","5d","3f","1d","83"],function(a,b,c,d,e,f,g,h,i,j,k){var l=b.unwrapper({tags:[{name:k.pattern(/^([OVWXP]|U[0-9]+|ST[0-9]+):/i)}]}),m=[b.pipeline([c.filter])],n=b.removal({attributes:[{name:k.pattern(/^v:/)},{name:k.exact("href"),value:k.contains("#_toc")},{name:k.exact("href"),value:k.contains("#_mso")},{name:k.pattern(/^xmlns(:|$)/)},{name:k.exact("type"),condition:d.isList}]}),o=b.removal({attributes:[{name:k.exact("id")},{name:k.exact("name")}]}),p=b.removal({tags:[{name:k.exact("script")},{name:k.exact("meta")},{name:k.exact("link")},{name:k.exact("style"),condition:d.isEmpty}],attributes:[{name:k.starts("on")},{name:k.exact('"')},{name:k.exact("lang")},{name:k.exact("language")}],styles:[{name:k.all(),value:k.pattern(/OLE_LINK/i)}]}),q=function(a){return!g.has(a,"ephox-limbo-transform")},r=function(a){return function(b){return i.parent(b).exists(function(b){return j.name(b)===a&&1===i.children(b).length})}},s=b.removal({styles:[{name:k.not(k.pattern(/width|height|list-style-type/)),condition:q},{name:k.pattern(/width|height/),condition:d.isNotImage}]}),t=b.removal({classes:[{name:k.not(k.exact("rtf-data-image"))}]}),u=b.removal({styles:[{name:k.pattern(a.validStyles())}]}),v=b.removal({classes:[{name:k.pattern(/mso/i)}]}),w=b.unwrapper({tags:[{name:k.exact("img"),condition:d.isLocal},{name:k.exact("a"),condition:d.hasNoAttributes}]}),x=b.unwrapper({tags:[{name:k.exact("a"),condition:d.hasNoAttributes}]}),y=b.removal({attributes:[{name:k.exact("style"),value:k.exact(""),debug:!0}]}),z=b.removal({attributes:[{name:k.exact("class"),value:k.exact(""),debug:!0}]}),A=b.unwrapper({tags:[{name:k.pattern(a.specialInline()),condition:f.not(d.hasContent)}]}),B=b.unwrapper({tags:[{name:k.exact("p"),condition:r("li")}]}),C=b.transformer({tags:[{name:k.exact("p"),mutate:e.addBrTag}]}),D=function(a){var b=e.changeTag("span",a);g.add(b,"ephox-limbo-transform"),h.set(b,"text-decoration","underline")},E=b.transformer({tags:[{name:k.pattern(/ol|ul/),mutate:e.properlyNest}]}),F=b.transformer({tags:[{name:k.exact("b"),mutate:f.curry(e.changeTag,"strong")},{name:k.exact("i"),mutate:f.curry(e.changeTag,"em")},{name:k.exact("u"),mutate:D},{name:k.exact("s"),mutate:f.curry(e.changeTag,"strike")},{name:k.exact("font"),mutate:e.fontToSpan,debug:!0}]}),G=b.removal({classes:[{name:k.exact("ephox-limbo-transform")}]}),H=b.removal({attributes:[{name:k.exact("href"),value:k.starts("file:///"),debug:!0}]});return{unwrapWordTags:l,removeWordAttributes:n,parseLists:m,removeExcess:p,cleanStyles:s,cleanClasses:t,mergeStyles:u,mergeClasses:v,removeLocalImages:w,removeVacantLinks:x,removeEmptyStyle:y,removeEmptyClass:z,pruneInlineTags:A,unwrapSingleParagraphsInlists:B,addPlaceholders:C,nestedListFixes:E,inlineTagFixes:F,cleanupFlags:G,removeLocalLinks:H,removeAnchors:o,none:f.noop}}),g("6k",["g","5a","7h","6m","7k","7l","p","k"],function(a,b,c,d,e,f,g,h){var i=function(a){return a.browser.isIE()&&a.browser.version.major>=11},j=function(a){return f(function(b,c,d){var e=a(h.fromDom(c.getNode())).fold(function(){return c},function(a){return d(c,a.dom())});b.emit(e)},g.noop,"image filters")},k=function(a,e,f){var g=f.browser.isFirefox()||f.browser.isSpartan()?b.local:b.vshape,h=i(f)?c.none:d.pipeline([j(g)]),k=g===b.local?c.none:c.removeLocalImages,l=a?h:c.none;return{annotate:[l],local:[k]}},l=function(a,b){var d=i(b)&&a;return d?[c.unwrapSingleParagraphsInlists]:[]},m=function(a,b,d){var e=[c.mergeStyles,c.mergeClasses],f=[c.cleanStyles,c.cleanClasses];return b?e:f},n=function(a,b,c){return i(c)||!a?[]:[e.preprocess]},o=function(a,b,d){if(!a)return[c.none];var e=[c.unwrapWordTags],f=i(d)?[]:c.parseLists;return e.concat(f).concat([c.removeWordAttributes])},p=function(a,b,d){return a?[c.removeAnchors]:[c.none]},q=function(b,d,e){var f=k(b,d,e);return a.flatten([n(b,d,e),f.annotate,[c.inlineTagFixes],o(b,d,e),[c.nestedListFixes],[c.removeExcess],p(b,d,e),f.local,m(b,d,e),[c.removeLocalLinks,c.removeVacantLinks],[c.removeEmptyStyle],[c.removeEmptyClass],[c.pruneInlineTags],[c.addPlaceholders],l(b,e),[c.cleanupFlags]])};return{derive:q}}),g("8q",[],function(){return["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"]}),g("87",["8q","g","p","j","3n","5d","k","1x","29","1d","3o","6r","1y","2a","20","8p","3f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){return function(){var r=function(a){return g.fromDom(a.dom().cloneNode(!1))},s=function(c){return!!j.isElement(c)&&("body"===j.name(c)||b.contains(a,j.name(c)))},t=function(a){return!!j.isElement(a)&&b.contains(["br","img","hr"],j.name(a))},u=function(a,b){return a.dom().compareDocumentPosition(b.dom())},v=function(a,b){var c=d.clone(a);d.setAll(b,c)};return{up:c.constant({selector:o.ancestor,closest:o.closest,predicate:l.ancestor,all:q.parents}),down:c.constant({selector:n.descendants,predicate:k.descendants}),styles:c.constant({get:f.get,getRaw:f.getRaw,set:f.set,remove:f.remove}),attrs:c.constant({get:d.get,set:d.set,remove:d.remove,copyTo:v}),insert:c.constant({before:h.before,after:h.after,afterAll:i.after,append:h.append,appendAll:i.append,prepend:h.prepend,wrap:h.wrap}),remove:c.constant({unwrap:m.unwrap,remove:m.remove}),create:c.constant({nu:g.fromTag,clone:r,text:g.fromText}),query:c.constant({comparePosition:u,prevSibling:q.prevSibling,nextSibling:q.nextSibling}),property:c.constant({children:q.children,name:j.name,parent:q.parent,isText:j.isText,isElement:j.isElement,getText:p.get,setText:p.set,isBoundary:s,isEmptyTag:t}),eq:e.eq,is:e.is}}}),g("8z",["2c"],function(a){return a.immutable("word","pattern")}),g("90",["2c"],function(a){var b=a.immutable("element","offset"),c=a.immutable("element","deltaOffset"),d=a.immutable("element","start","finish"),e=a.immutable("begin","end"),f=a.immutable("element","text");return{point:b,delta:c,range:d,points:e,text:f}}),g("9n",["p","n"],function(a,b){var c=a.constant(!1),d=a.constant(!0),e=function(a,b){return h(function(c,d,e){return c(a,b)})},f=function(a,b){return h(function(c,d,e){return d(a,b)})},g=function(a,b){return h(function(c,d,e){return e(a,b)})},h=function(e){var f=function(){return e(d,c,c)},g=function(){return e(b.none,b.none,function(a,c){return b.some(a)})},h=function(a){return e(c,c,function(b,c){return c.eq(b,a)})},i=function(){return e(a.constant(0),a.constant(1),function(a,b){return b.property().getText(a).length})};return{isBoundary:f,fold:e,toText:g,is:h,len:i}},i=function(a,b,c,d){return a.fold(b,c,d)};return{text:g,boundary:e,empty:f,cata:i}}),g("9o",["g","p"],function(a,b){var c=function(c,d,e,f){var g=a.findIndex(c,b.curry(f,d)),h=g>-1?g:0,i=a.findIndex(c,b.curry(f,e)),j=i>-1?i+1:c.length;return c.slice(h,j)};return{boundAt:c}}),g("9p",["g"],function(a){var b=function(b,c){var d=a.findIndex(b,c);return b.slice(0,d)};return{sliceby:b}}),g("9r",["1m"],function(a){var b=a.generate([{include:["item"]},{excludeWith:["item"]},{excludeWithout:["item"]}]),c=function(a,b,c,d){return a.fold(b,c,d)};return{include:b.include,excludeWith:b.excludeWith,excludeWithout:b.excludeWithout,cata:c}}),g("9q",["g","9r"],function(a,b){var c=function(a,c){return d(a,function(a){return c(a)?b.excludeWithout(a):b.include(a)})},d=function(c,d){var e=[],f=[];return a.each(c,function(a){var c=d(a);b.cata(c,function(){f.push(a)},function(){f.length>0&&e.push(f),e.push([a]),f=[]},function(){f.length>0&&e.push(f),f=[]})}),f.length>0&&e.push(f),e};return{splitby:c,splitbyAdv:d}}),g("9b",["9o","9p","9q"],function(a,b,c){var d=function(b,c,d,e){return a.boundAt(b,c,d,e)},e=function(a,b){return c.splitby(a,b)},f=function(a,b){return c.splitbyAdv(a,b)},g=function(a,c){return b.sliceby(a,c)};return{splitby:e,splitbyAdv:f,sliceby:g,boundAt:d}}),g("92",["g","p","n","90","9b"],function(a,b,c,d,e){var f=function(b){return a.foldr(b,function(a,b){return b.len()+a},0)},g=function(a,b){return e.sliceby(a,function(a){return a.is(b)})},h=function(a,b){return a.fold(c.none,function(a){return c.some(d.range(a,b,b+1))},function(e){return c.some(d.range(e,b,b+a.len()))})},i=function(c){return a.bind(c,function(a){return a.fold(b.constant([]),b.constant([]),function(a){return[a]})})};return{count:f,dropUntil:g,gen:h,justText:i}}),g("9w",["g","90","9n","92"],function(a,b,c,d){var e=function(b,d,f){if(b.property().isText(d))return[c.text(d,b)];if(b.property().isEmptyTag(d))return[c.empty(d,b)];if(b.property().isElement(d)){var g=b.property().children(d),h=b.property().isBoundary(d)?[c.boundary(d,b)]:[],i=void 0!==f&&f(d)?[]:a.bind(g,function(a){return e(b,a,f)});return h.concat(i).concat(h)}return[]},f=function(b,c,d){var f=e(b,c,d),g=function(a,b){return a};return a.map(f,function(a){return a.fold(g,g,g)})},g=function(a,c,f,g,h){var i=e(a,g,h),j=d.dropUntil(i,c),k=d.count(j);return b.point(g,k+f)},h=function(a,c,d,e){return a.property().parent(c).fold(function(){return b.point(c,d)},function(b){return g(a,c,d,b,e)})},i=function(a,c,d,e,f){return a.up().predicate(c,e).fold(function(){return b.point(c,d)},function(b){return g(a,c,d,b,f)})};return{typed:e,items:f,extractTo:i,extract:h}}),g("9x",["g","p","9w"],function(a,b,c){var d="\n",e=" ",f=function(a,b){return"img"===b.property().name(a)?e:d},g=function(e,g,h){var i=c.typed(e,g,h);return a.map(i,function(a){return a.fold(b.constant(d),f,e.property().getText)}).join("")};return{from:g}}),g("9d",["g","p"],function(a,b){var c=function(c,d,e){var f={len:void 0!==e?e:0,list:[]},g=a.foldl(c,function(a,c){var e=d(c,a.len);return e.fold(b.constant(a),function(b){return{len:b.finish(),list:a.list.concat([b])}})},f);return g.list};return{make:c}}),g("9e",["g","n"],function(a,b){var c=function(a,b){return b>=a.start()&&b<=a.finish()},d=function(d,e){var f=a.find(d,function(a){return c(a,e)});return b.from(f)},e=function(b,c){return a.findIndex(b,function(a){return a.start()===c})},f=function(a,b){var c=a[a.length-1]&&a[a.length-1].finish()===b;return c?a.length+1:-1},g=function(a,b,c){var d=e(a,b),g=e(a,c),h=g>-1?g:f(a,c);return d>-1&&h>-1?a.slice(d,h):[]},h=function(c,d){return b.from(a.find(c,d))};return{get:d,find:h,inUnit:c,sublist:g}}),g("9g",["g","1l","p"],function(a,b,c){var d=function(d,e){return a.map(d,function(a){return b.merge(a,{start:c.constant(a.start()+e),finish:c.constant(a.finish()+e)})})};return{translate:d}}),g("9f",["g","9e","9g"],function(a,b,c){var d=function(a,b,d){var e=d(a,b);return c.translate(e,a.start())},e=function(c,e,f){return 0===e.length?c:a.bind(c,function(c){var g=a.bind(e,function(a){return b.inUnit(c,a)?[a-c.start()]:[]});return g.length>0?d(c,g,f):[c]})};return{splits:e}}),g("94",["9d","9e","9f","9g"],function(a,b,c,d){var e=function(b,c,d){return a.make(b,c,d)},f=function(a,c){return b.get(a,c)},g=function(a,c){return b.find(a,c)},h=function(a,b,d){return c.splits(a,b,d)},i=function(a,b){return d.translate(a,b)},j=function(a,c,d){return b.sublist(a,c,d)};return{generate:e,get:f,find:g,splits:h,translate:i,sublist:j}}),g("9y",["90","9w","92","94"],function(a,b,c,d){var e=function(e,f,g,h){var i=b.typed(e,f,h),j=d.generate(i,c.gen),k=d.get(j,g);return k.map(function(b){return a.point(b.element(),g-b.start())})};return{find:e}}),g("9m",["9w","9x","9y"],function(a,b,c){var d=function(b,c,d){return a.typed(b,c,d)},e=function(b,c,d){return a.items(b,c,d)},f=function(b,c,d,e){return a.extract(b,c,d,e)},g=function(b,c,d,e,f){return a.extractTo(b,c,d,e,f)},h=function(a,b,d,e){return c.find(a,b,d,e)},i=function(a,c,d){return b.from(a,c,d)};return{extract:f,extractTo:g,all:e,from:d,find:h,toText:i}}),g("99",["g","9m","9n","9b","9r"],function(a,b,c,d,e){var f=function(f,g,h){var i=a.bind(g,function(a){return b.from(f,a,h)}),j=d.splitbyAdv(i,function(a){return c.cata(a,function(){return e.excludeWithout(a)},function(){return e.excludeWith(a)},function(){return e.include(a)})});return a.filter(j,function(a){return a.length>0})};return{group:f}}),g("9s",["g","n"],function(a,b){var c=function(c,d,e){var f=[d].concat(c.up().all(d)),g=[e].concat(c.up().all(e)),h=a.find(f,function(b){return a.exists(g,function(a){return c.eq(a,b)})});return b.from(h)};return{common:c}}),g("9t",["g"],function(a){var b=["table","tbody","thead","tfoot","tr","ul","ol"];return function(c){var d=c.property(),e=function(b,c){return d.parent(b).map(d.name).map(function(b){return!a.contains(c,b)}).getOr(!1)},f=function(a){return d.isText(a)&&e(a,b)};return{validateText:f}}}),g("9a",["g","p","9m","9s","9t"],function(a,b,c,d,e){var f=function(c,d,e){return a.findIndex(d,b.curry(c.eq,e))},g=function(a,b,c,d,e){return b<d?a.slice(b+c,d+e):a.slice(d+e,b+c)},h=function(h,i,j,k,l){return h.eq(i,k)?[i]:d.common(h,i,k).fold(function(){return[]},function(d){var m=[d].concat(c.all(h,d,b.constant(!1))),n=f(h,m,i),o=f(h,m,k),p=n>-1&&o>-1?g(m,n,j,o,l):[],q=e(h);return a.filter(p,q.validateText)})};return{range:h}}),g("91",["99","9a"],function(a,b){var c=function(a,c,d,e,f){return b.range(a,c,d,e,f)},d=function(b,c,d){return a.group(b,c,d)};return{range:c,group:d}}),g("9z",[],function(){var a=function(a){var b=/^[a-zA-Z]/.test(a)?"":"e",c=a.replace(/[^\w]/gi,"-");return b+c};return{css:a}}),g("a0",["g"],function(a){var b=function(b,c){if(0===c.length)return[b];var d=a.foldl(c,function(a,c){if(0===c)return a;var d=b.substring(a.prev,c);return{prev:c,values:a.values.concat([d])}},{prev:0,values:[]}),e=c[c.length-1];return e<b.length?d.values.concat(b.substring(e)):d.values};return{splits:b}}),g("9u",["9z","a0"],function(a,b){var c=function(a,c){return b.splits(a,c)},d=function(b){return a.css(b)};return{cssSanitise:d,splits:c}}),g("9c",["g","n","90","94","9u"],function(a,b,c,d,e){var f=function(f,g,h){var i=f.property().getText(g),j=a.filter(e.splits(i,h),function(a){return a.length>0});if(j.length<=1)return[c.range(g,0,i.length)];f.property().setText(g,j[0]);var k=d.generate(j.slice(1),function(a,d){var e=f.create().text(a),g=c.range(e,d,d+a.length);return b.some(g)},j[0].length),l=a.map(k,function(a){return a.element()});return f.insert().afterAll(g,l),[c.range(g,0,j[0].length)].concat(k)};return{subdivide:f}}),g("93",["g","p","9c","94"],function(a,b,c,d){var e=function(e,f,g){var h=a.bind(g,function(a){return[a.start(),a.finish()]}),i=function(a,b){return c.subdivide(e,a.element(),b)},j=d.splits(f,h,i),k=function(c){var f=d.sublist(j,c.start(),c.finish()),g=a.map(f,function(a){return a.element()}),h=a.map(g,e.property().getText).join("");return{elements:b.constant(g),word:c.word,exact:b.constant(h)}};return a.map(g,k)};return{separate:e}}),g("8s",[],function(){var a=function(){return"\ufeff"};return{zeroWidth:a}}),g("89",["8s","p"],function(a,b){var c="\\w'\\-\\u0100-\\u017F\\u00C0-\\u00FF"+a.zeroWidth()+"\\u2018\\u2019",d="[^"+c+"]",e="["+c+"]";return{chars:b.constant(c),wordbreak:b.constant(d),wordchar:b.constant(e)}}),g("8a",["4v"],function(a){return function(b,c,d,e){var f=function(){return new a(b,e.getOr("g"))};return{term:f,prefix:c,suffix:d}}}),g("8c",["p","n","89","8a"],function(a,b,c,d){var e=function(c){return d(c,a.constant(0),a.constant(0),b.none())},f=function(a){var e="((?:^'?)|(?:"+c.wordbreak()+"+'?))"+a+"((?:'?$)|(?:'?"+c.wordbreak()+"+))",f=function(a){return a.length>1?a[1].length:0},g=function(a){return a.length>2?a[2].length:0};return d(e,f,g,b.none())};return{token:e,word:f}}),g("8b",["8c"],function(a){var b=function(a){return a.replace(/[-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},c=function(c){var d=b(c);return a.word(d)},d=function(c){var d=b(c);return a.token(d)};return{sanitise:b,word:c,token:d}}),g("7n",["89","8a","8b","8c"],function(a,b,c,d){var e=function(a){return c.word(a)},f=function(a){return c.token(a)},g=function(a,c,d,e){return b(a,c,d,e)},h=function(a){return d.word(a)},i=function(a){return d.token(a)},j=function(a){return c.sanitise(a)},k=function(){return a.chars()},l=function(){return a.wordbreak()},m=function(){return a.wordchar()};return{safeword:e,safetoken:f,custom:g,unsafeword:h,unsafetoken:i,sanitise:j,chars:k,wordbreak:l,wordchar:m}}),g("9h",["p"],function(a){var b=function(b,c){for(var d=c.term(),e=[],f=d.exec(b);f;){var g=f.index+c.prefix(f),h=f[0].length-c.prefix(f)-c.suffix(f);e.push({start:a.constant(g),finish:a.constant(g+h)}),d.lastIndex=g+h,f=d.exec(b)}return e};return{all:b}}),g("9i",["g","1l","9h","12"],function(a,b,c,d){var e=function(a){var b=d.prototype.slice.call(a,0);return b.sort(function(a,b){return a.start()<b.start()?-1:b.start()<a.start()?1:0}),b},f=function(d,f){var g=a.bind(f,function(e){var f=c.all(d,e.pattern());return a.map(f,function(a){return b.merge(e,{start:a.start,finish:a.finish})})});return e(g)};return{search:f}}),g("95",["9h","9i"],function(a,b){var c=function(b,c){return a.all(b,c)},d=function(a,c){return b.search(a,c)};return{findall:c,findmany:d}}),g("8r",["g","n","8z","90","91","92","93","7n","94","95"],function(a,b,c,d,e,f,g,h,i,j){var k=function(a,c){return i.generate(c,function(c,e){var f=e+a.property().getText(c).length;return b.from(d.range(c,e,f))})},l=function(b,c,d,h){var i=e.group(b,c,h),l=a.bind(i,function(c){var e=f.justText(c),h=a.map(e,b.property().getText).join(""),i=j.findmany(h,d),l=k(b,e);return g.separate(b,l,i)});return l},m=function(b,d,e,f){var g=a.map(e,function(a){var b=h.safeword(a);return c(a,b)});return l(b,d,g,f)},n=function(a,b,d,e){var f=c(d,h.safetoken(d));return l(a,b,[f],e)};return{safeWords:m,safeToken:n,run:l}}),g("88",["8r"],function(a){var b=function(b,c,d,e){return a.run(b,c,d,e)},c=function(b,c,d,e){return a.safeWords(b,c,d,e)},d=function(b,c,d,e){return a.safeToken(b,c,d,e)};return{safeWords:c,safeToken:d,run:b}}),g("7m",["87","88"],function(a,b){var c=a(),d=function(a,d,e){return b.run(c,a,d,e)},e=function(a,d,e){return b.safeWords(c,a,d,e)},f=function(a,d,e){return b.safeToken(c,a,d,e)};return{safeWords:e,safeToken:f,run:d}}),g("1z",["20"],function(a){var b=function(b){return a.first(b).isSome()},c=function(b,c,d){return a.ancestor(b,c,d).isSome()},d=function(b,c){return a.sibling(b,c).isSome()},e=function(b,c){return a.child(b,c).isSome()},f=function(b,c){return a.descendant(b,c).isSome()},g=function(b,c,d){return a.closest(b,c,d).isSome()};return{any:b,ancestor:c,sibling:d,child:e,descendant:f,closest:g}}),g("6l",["g","n","7m","7n","2c","j","5d","k","1x","29","1d","1z","7o","3f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o=/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\.\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w\.]+@)[A-Za-z0-9\.\-]+)(:[0-9]+)?((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-_.~*+=!&;:'%@?^${}()\w,]*)#?(?:[\-_.~*+=!&;:'%@?^${}()\w,\/]*))?)/g,p=o.source,q=3,r=9,s=function(a){var b=e.immutable("word","pattern"),f=d.unsafetoken(p),g=b("__INTERNAL__",f);return c.run(a,[g])},t=function(a){return!l.closest(a,"a")},u=function(a){return b.from(a[0]).filter(t).map(function(b){var c=h.fromTag("a");return i.before(b,c),j.append(c,a),f.set(c,"href",m.get(c)),c})},v=function(b){var c=s(b);a.each(c,function(a){var b=a.exact();(b.indexOf("@")<0||w(b))&&u(a.elements())})},w=function(a){var b=a.indexOf("://");return b>=q&&b<=r},x=function(b){a.each(b,function(a){k.isElement(a)&&g.getRaw(a,"position").isSome()&&g.remove(a,"position")})},y=function(b){var c=a.filter(b,function(a){return"li"===k.name(a)});if(c.length>0){var d=n.prevSiblings(c[0]),e=h.fromTag("ul");if(i.before(b[0],e),d.length>0){var f=h.fromTag("li");i.append(e,f),j.append(f,d)}j.append(e,c)}};return{links:v,position:x,list:y}}),g("55",["g","6k","6l","6m","6h","3f"],function(a,b,c,d,e,f){var g=function(b){var d=f.children(b);a.each([c.links,c.position,c.list],function(a){a(d)})},h=function(a,c,f,h,i){g(f);var j=e.get(f),k=b.derive(i,h,c);return d.go(a,j,k)};return{go:h,preprocess:g}}),g("6i",["4q","4r","4y","2w","2t","55","2f","28","1f"],function(a,b,c,d,e,f,g,h,i){var j=e.detect(),k=function(a,b,c,d){try{var e=f.go(a,j,b,c,d),k=void 0!==e&&null!==e&&e.length>0,l=k?h.fromHtml(e):[];return g.value(l)}catch(m){return i.error(m),g.error("errors.paste.process.failure")}},l=function(e,f,g,h,i){var j=k(e,f,h,g);return j.fold(function(b){return a.error(b)},function(e){return a.sync(function(f){i.get(function(g){var h=c.findImages(e,g);a.call(f,{response:d.paste(e,g,h),bundle:b.nu({})})})})})};return{transfer:l}}),g("53",["6i","g","o","n","1y","3f"],function(a,b,c,d,e,f){var g=function(b,c,d,e,f){return a.transfer(b,c,e,d,f)},h=function(g,h,i){var j=!1,k=!0,l=function(a,b){return void 0===h||b?d.none():h.findClipboardTags(f.children(a))},m=l(i,j).getOr([]);b.each(m,e.remove);var n=c.nu(function(a){a([])});return a.transfer(g,i,j,k,n)};return{internal:h,external:g}}),g("6j",["g","k","6h","7o"],function(a,b,c,d){var e=function(a){var e=b.fromTag("div");return d.set(e,a),c.get(e)},f=function(b){var c=b.trim().split(/\n{2,}|(?:\r\n){2,}/),d=a.map(c,function(a){return a.split(/\n|\r\n/).join("<br />")});return 1===d.length?d[0]:a.map(d,function(a){return"<p>"+a+"</p>"}).join("")};return{encode:e,convert:f}}),g("54",["4q","6j","4r","31","2w","n","23","28","11"],function(a,b,c,d,e,f,g,h,i){var j=function(a){return a.length>0},k=function(a){return d.isValidData(a)?g.findMap(a.types,function(b){return"text/plain"===b?f.some(a.getData(b)):f.none()}):f.none()},l=function(){var a=i.clipboardData;return void 0!==a?f.some(a.getData("text")):f.none()},m=function(a){var c=b.encode(a),d=b.convert(c),f=h.fromHtml(d);return e.paste(f,[],[])},n=function(b){return a.sync(function(f){var g=d.isValidData(b)?k:l,h=g(b).filter(j).fold(e.cancel,m);a.call(f,{response:h,bundle:c.nu({})})})};return{handle:n}}),g("34",["4q","4r","4z","51","52","53","54","2w","2t","55","p","k","29","3f","1f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=i.detect(),q=function(a,b,c){return g.handle(a)},r=function(b,c){var d=function(b,d,e){var f=l.fromTag("div");m.append(f,b),j.preprocess(f);var g=n.children(f);return a.pure({response:h.paste(g,d,e),bundle:c.bundle()})},e=k.curry(a.pass,c);return h.cata(c.response(),e,d,e,d)},s=function(a,b){return function(d,e){var g=e.bundle();return c.proxyBin(g).handle("There was no proxy bin setup. Ensure you have run proxyStep first.",function(c){var d=n.owner(a);return f.internal(d,b,c)})}},t=function(a,b){return function(d,e){var g=e.bundle();return c.proxyBin(g).handle("There was no proxy bin setup. Ensure you have run proxyStep first.",function(d){var e=c.merging(g),h=c.isWord(g),i=c.isInternal(g),j=c.backgroundAssets(g),k=n.owner(a);return i?f.internal(k,b,d):f.external(k,d,e,h,j)})}},u=function(){return function(b,c){return a.error("errors.local.images.disallowed")}},v=function(){return function(b,c){if(p.browser.isSafari()){var d=p.deviceType.isWebView()?"webview.imagepaste":"safari.imagepaste";return a.error(d)}return e.handle(b)}},w=function(a){return function(b,e){var f=c.mergeOffice(e.bundle());return d.handle(b,f,a)}},x=function(b,c){return a.cancel()},y=function(c){return function(d,e){var f=b.merge(e.bundle(),b.nu(c));return a.pure({response:e.response(),bundle:f})}};return{plain:q,autolink:r,noImages:u,images:v,internal:s,external:t,gwt:w,setBundle:y,none:x}}),g("56",["5c","p"],function(a,b){var c=a.resolve("smartpaste-eph-bin");return{binStyle:b.constant(c)}}),g("57",["6m","j","6h","6n"],function(a,b,c,d){var e=function(a,c){return d.descendant(a,function(a){return!!b.has(a,"style")&&b.get(a,"style").indexOf("mso-")>-1})},f=function(b,d){var e=c.get(b);return a.isWordContent(e,d)},g=function(a,b){var c=a.browser,d=c.isIE()&&c.version.major>=11?e:f;return d(b,a)};return{isWord:g}}),g("35",["4q","4r","56","2t","57","27","3f"],function(a,b,c,d,e,f,g){var h=d.detect();return function(d,i,j,k,l){return function(m,n){var o=l(),p=n.response();return a.sync(function(l){var n=d(j);n.events.after.bind(function(d){var j=d.container();i(j),f.add(j,c.binStyle());var m=e.isWord(h,j),n=g.children(j),q=k.findClipboardTags(n,m).isSome();a.call(l,{response:p,bundle:b.nu({isWord:m,isInternal:q,proxyBin:j,backgroundAssets:o})})}),o.convert(m.data()),n.run()})}}}),g("8d",["78","79","12","62","13","8o"],function(a,b,c,d,e,f){var g=function(a){for(var b=new c(a.length/2),e=0;e<a.length;e+=2){var g=a.substr(e,2),h=d.floor(e/2);b[h]=f(g,16)}return b},h=function(c,d){if(0===c.length)throw"Zero length content passed to Hex conversion";var e=g(c),f=b(e);return a([f],{type:d})};return{convert:h}}),g("7q",["1m"],function(a){var b=a.generate([{unsupported:["id","message"]},{supported:["id","contentType","blob"]}]),c=function(a,b,c){return a.fold(b,c)};return{unsupported:b.unsupported,supported:b.supported,cata:c}}),g("8e",["p","n"],function(a,b){var c="{\\pict{",d="i",e="{\\shp{",f="s",g=function(a,b,c){return b.indexOf(a,c)},h=function(c,d,e,f,g){return c===-1||d===-1?b.none():b.some({start:a.constant(c),end:a.constant(d),bower:e,regex:a.constant(f),idRef:a.constant(g)})},i=function(a,b,c){return function(){return a.substring(b,c)}},j=function(a,b){if(b===-1)return b;var c,d,e=0,f=a.length;do if(c=a.indexOf("{",b),d=a.indexOf("}",b),d>c&&c!==-1?(b=c+1,++e):(c>d||c<0)&&d!==-1&&(b=d+1,--e),b>f||d===-1)return-1;while(e>0);return b},k=function(a,b,c,e){var f=i(a,c,e),g=/[^a-fA-F0-9]([a-fA-F0-9]+)\}$/;return h(c,e,f,g,d)},l=function(a,b,c,d){var e=i(a,c,d),g=/([a-fA-F0-9]{64,})(?:\}.*)/;return h(c,d,e,g,f)},m=function(d,f){var h=g(c,d,f),i=j(d,h),m=g(e,d,f),n=j(d,m),o=a.curry(l,d,f,m,n),p=a.curry(k,d,f,h,i);return h===-1&&m===-1?b.none():h===-1?o():m===-1?p():m<h&&n>i?p():h<m&&i>n?o():h<m?p():m<h?o():b.none()};return{identify:m,endBracket:j}}),g("7p",["8d","7q","8e","n","2f"],function(a,b,c,d,e){var f=function(a,b){return c.identify(a,b)},g=function(a){return a.indexOf("\\pngblip")>=0?e.value("image/png"):a.indexOf("\\jpegblip")>=0?e.value("image/jpeg"):e.error("errors.imageimport.unsupported")},h=function(a){return a.replace(/\r/g,"").replace(/\n/g,"")},i=function(a,b){var c=a.match(b);return c&&c[1]&&c[1].length%2===0?e.value(c[1]):e.error("errors.imageimport.invalid")},j=function(a){var b=a.match(/\\shplid(\d+)/);return null!==b?d.some(b[1]):d.none()},k=function(c){var d=c.bower(),e=c.regex();return j(d).map(function(f){var h=c.idRef()+f;return g(d).fold(function(a){return b.unsupported(h,a)},function(c){return i(d,e).fold(function(a){return b.unsupported(h,a)},function(d){return b.supported(h,c,a.convert(d,c))})})})},l=function(a){for(var b=[],c=function(){return a.length},d=function(a){var c=k(a);return b=b.concat(c.toArray()),a.end()},e=0;e<a.length;)e=f(a,e).fold(c,d);return b},m=function(a){var b=h(a);return l(b)};return{nextBower:f,extractId:j,extractContentType:g,extractHex:i,images:m}}),g("6o",["7p","7q","2f"],function(a,b,c){var d=function(b){return a.images(b)},e=function(a){return b.cata(a,function(a,b){return a},function(a,b,c){return a})},f=function(a){return b.cata(a,function(a,b){return c.error(b)},function(a,b,d){return c.value(d)})};return{images:d,toId:e,toBlob:f}}),g("6p",["6o","4y","g","i","n","j","27","1f"],function(a,b,c,d,e,f,g,h){var i=function(b,d,f){var g=c.find(d,function(c){return a.toId(c)===b});return e.from(g)},j=function(a,b,c){return e.from(b[c])},k={local:j,code:i},l=function(b){var d=[],e=function(b){return!c.exists(d,function(c){return a.toId(c)===b})};return c.bind(b,function(b){var c=a.toId(b);return e(c)?(d.push(b),[b]):[]})},m=function(i,j,m,n){var o=l(j),p=[],q=!1,r=c.bind(i,function(b,c){var d=f.get(b,"data-image-type"),i=f.get(b,"data-image-id");g.remove(b,"rtf-data-image"),f.remove(b,"data-image-type"),f.remove(b,"data-image-id");var j=void 0!==k[d]?k[d]:e.none;return j(i,o,c).fold(function(){return h.log("WARNING: unable to find data for image ",b.dom()),[]},function(c){return a.toBlob(c).fold(function(a){return q=!0,f.set(b,"alt",n(a)),[]},function(a){return p.push(b),[a]})})});d.multiple(r).get(function(a){var c=b.updateSources(a,p);m(a,c,q)})};return{convert:m}}),g("59",["6o","6p","5a","21","22","3f"],function(a,b,c,d,e,f){return function(g){var h=g.translations,i=e.create({insert:d(["elements","assets","correlated"]),incomplete:d(["elements","assets","correlated","message"])}),j=function(d,e,g,j,k){var l=a.images(j),m=c.find(d);b.convert(m,l,function(a,b,c){var h=f.children(d),j=a.concat(e),l=b.concat(g);c?i.trigger.incomplete(h,j,l,"errors.imageimport.failed"):i.trigger.insert(h,j,l),k()},h)};return{events:i.registry,processRtf:j}}}),g("58",["59","g","5a","21","22","1y","3f"],function(a,b,c,d,e,f,g){return function(h,i){var j=e.create({error:d(["message"]),insert:d(["elements","assets","correlated"]),incomplete:d(["elements","assets","correlated","message"])}),k=a(i);k.events.incomplete.bind(function(a){j.trigger.incomplete(a.elements(),a.assets(),a.correlated(),a.message())}),k.events.insert.bind(function(a){j.trigger.insert(a.elements(),a.assets(),a.correlated())});var l=function(a,d,e){var l=function(b){k.processRtf(a,d,e,b.rtf(),b.hide())},m=function(h){var i=c.find(a);b.each(i,f.remove),j.trigger.incomplete(g.children(a),d,e,h)},n=function(){var h=c.find(a);b.each(h,f.remove),j.trigger.insert(g.children(a),d,e)},o=function(a){m(a.message())};if(i.allowLocalImages===!0&&i.enableFlashImport===!0){var p=h(i);p.events.response.bind(l),p.events.cancel.bind(n),p.events.failed.bind(o),p.events.error.bind(o),p.open()}else m("errors.local.images.disallowed")};return{events:j.registry,gordon:l}}}),g("36",["4q","4r","58","59","2w","g","5a","p","n","z","k","29","1y","3f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return function(o,p){var q=c(o,p),r=d(p),s=j(i.none()),t=function(c){s.get().each(function(d){a.call(d,{response:c,bundle:b.nu({})})})};return q.events.insert.bind(function(a){t(e.paste(a.elements(),a.assets(),a.correlated()))}),q.events.incomplete.bind(function(a){t(e.incomplete(a.elements(),a.assets(),a.correlated(),a.message()))}),q.events.error.bind(function(a){var b=a.message(),c=e.error(b);t(c)}),r.events.insert.bind(function(a){t(e.paste(a.elements(),a.assets(),a.correlated()))}),r.events.incomplete.bind(function(a){t(e.incomplete(a.elements(),a.assets(),a.correlated(),a.message()))}),function(b,c){return a.sync(function(d){var j=function(){a.call(d,{response:c.response(),bundle:c.bundle()})},o=function(a,c,o){s.set(i.some(d));var u=k.fromTag("div");l.append(u,a),b.rtf().fold(function(){g.exists(u)?q.gordon(u,c,o):j()},function(a){if(p.allowLocalImages===!0)r.processRtf(u,c,o,a,h.noop);else{var b=g.find(u),d=n.children(u);b.length>0?(f.each(b,m.remove),t(e.incomplete(d,c,o,"errors.local.images.disallowed"))):t(e.paste(d,c,o))}})};e.cata(c.response(),j,o,j,o)})}}}),g("1p",["2z","30","31","32","33","34","35","36","2t","p","n","2c","37","11"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o=l.immutable("data","rtf"),p=i.detect(),q="^image/",r="file",s=[q,r],t="html",u="rtf",v=function(a){return m.contains(a,"<html")&&(m.contains(a,'xmlns:o="urn:schemas-microsoft-com:office:office"')||m.contains(a,'xmlns:x="urn:schemas-microsoft-com:office:excel"'))},w=function(a){var b=a.clipboardData;return c.isValidData(b)?c.getFlavor(b.types,t).bind(function(c){var d=b.getData(c.type);return v(d)?k.some(o(d,C(a))):k.none()}):k.none()},x=function(a){return o(a,k.none())},y=function(a){if(p.browser.isIE()||p.browser.isFirefox())return k.none();if(c.isValidData(a.clipboardData)){var b=a.clipboardData;return c.getPreferredFlavor(s,b.types).map(function(a){return b.items; +})}return k.none()},z=function(a,b){var d=c.isValidData(b.clipboardData)?b.clipboardData.types:[];return c.getFlavor(d,a.clipboardType()).map(function(a){return o(b,k.none())})},A=function(a){return p.browser.isIE()?k.some(n.clipboardData):c.isValidData(a.clipboardData)?k.some(a.clipboardData):k.none()},B=function(a){if(p.browser.isSpartan())return k.none();var b=a.clipboardData,d=c.isValidData(b)?b.types:[];return 1===d.length&&"text/plain"===d[0]?k.some(b):k.none()},C=function(a){var b=a.clipboardData;return c.isValidData(b)?c.getFlavor(b.types,u).bind(function(a){var c=b.getData(a.type);return c.length>0?k.some(c):k.none()}):k.none()},D=function(a,b,c,d){return{label:j.constant(a),getAvailable:b,steps:j.constant(c),capture:j.constant(d)}},E=function(c,d,h,i){var k=j.curry(z,i);return D("Within Textbox.io (tables) pasting",k,[a.normal(g(d,c,h,i,b.ignore)),a.normal(e.fixed(!0,!0)),a.normal(f.internal(h,i))],!1)},F=function(c,i,j,k,l,m,n){return D("Outside of Textbox.io pasting (could be internal but another browser)",x,[a.normal(g(k,j,l,n,b.background)),a.normal(e.fromConfigIfExternal(c,i)),a.normal(f.external(l,n)),a.blocking(h(m,i)),a.normal(d(i))],!1)},G=function(b,c,d,g){return D("GWT pasting",w,[a.normal(f.setBundle({isWord:!0})),a.normal(e.fromConfig(c,d)),a.normal(f.gwt(b)),a.blocking(h(g,d))],!0)},H=function(b){return D("Image pasting",y,[a.normal(b.allowLocalImages===!1?f.noImages(j.noop):f.images())],!0)},I=function(){return D("Only plain text is available to paste",B,[a.normal(f.plain),a.normal(f.autolink)],!0)},J=function(){return D("Plain text pasting",A,[a.normal(f.plain),a.normal(f.autolink)],!0)},K=function(){return D("There is no valid way to paste",k.some,[a.normal(f.none)],!1)};return{internal:E,pastiche:F,gwt:G,image:H,text:J,onlyText:I,none:K}}),g("5b",["5c","2t","j","27","k","6h","29"],function(a,b,c,d,e,f,g){var h=function(){var a=b.detect(),c=a.os.isOSX();return c?["\u2318"]:["Ctrl"]},i=function(a){return e.fromHtml("<p>"+a("cement.dialog.flash.press-escape")+"</p>")},j=function(b){var c=e.fromTag("div");d.add(c,a.resolve("flashbin-helpcopy"));var f=h(),j=e.fromHtml("<p>"+b("cement.dialog.flash.trigger-paste")+"</p>"),k=e.fromHtml('<div><span class="ephox-polish-help-kbd">'+f+'</span> + <span class="ephox-polish-help-kbd">V</span></div>');return d.add(k,a.resolve("flashbin-helpcopy-kbd")),g.append(c,[j,k,i(b)]),c},k=function(b){var c=e.fromTag("div");d.add(c,a.resolve("flashbin-helpcopy"));var f=e.fromHtml("<p>"+b("cement.dialog.flash.missing")+"</p>");return g.append(c,[f,i(b)]),c},l=function(b){var h=e.fromTag("div");d.add(h,a.resolve("flashbin-loading"));var i=e.fromTag("div");d.add(i,a.resolve("flashbin-loading-spinner"));var j=e.fromTag("p"),k=b("loading.wait");return f.set(j,k),c.set(j,"aria-label",k),g.append(h,[i,j]),h};return{paste:j,noflash:k,indicator:l}}),h("5e",navigator),g("38",["5b","5c","2t","p","27","5d","k","1x","29","5e"],function(a,b,c,d,e,f,g,h,i,j){var k=c.detect(),l=function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash")},m=function(){try{var a=k.browser.isIE()?l():j.plugins["Shockwave Flash"];return void 0!==a}catch(b){return!1}},n=function(b,c,e,f){var g=a.noflash(f);return h.append(b,g),{reset:d.noop}},o=function(b,c,d,e){var g=a.paste(e),h=a.indicator(e);i.append(b,[h,g,c.element()]);var j=function(){f.setAll(h,{height:"0",padding:"0"})},k=function(){f.set(g,"display","block"),f.set(h,"display","none"),d()},l=function(){f.set(g,"display","none"),f.set(h,"display","block"),f.remove(h,"height"),f.remove(h,"padding"),d()};return c.events.spin.bind(l),c.events.reset.bind(k),c.events.hide.bind(j),{reset:k}};return function(a,c,f){var h=g.fromTag("div"),i="flashbin-wrapper-"+(k.os.isOSX()?"cmd":"ctrl");e.add(h,b.resolve(i));var j=m()?o:n,l=j(h,a,c,f.translations);return{element:d.constant(h),reset:l.reset}}}),h("5k",clearInterval),h("5m",setInterval),g("5f",["n","21","22","z","5k","5m"],function(a,b,c,d,e,f){var g=function(){var g=d(a.none()),h=c.create({crashed:b([]),timeout:b([])}),i=function(b,c,d,i){var j=c,k=f(function(){d()?e(k):j<=0?(h.trigger.timeout(),e(k)):i()&&(e(k),h.trigger.crashed()),j--},b);g.set(a.some(k))},j=function(){g.get().each(function(a){e(a)})};return{start:i,stop:j,events:h.registry}};return{responsive:g}}),g("5g",["1b","g","5k","5m"],function(a,b,c,d){return function(e,f,g){var h=function(c){return b.forall(f,function(b){return a.isFunction(c[b])})},i=function(){var b=e.dom();a.isFunction(b.PercentLoaded)&&100===b.PercentLoaded()&&h(b)&&(l(),g())},j=!0,k=d(i,500),l=function(){j&&(c(k),j=!1)};return{stop:l}}}),g("6t",["72"],function(a){var b=function(a,b){return void 0!==a[b]&&null!==a[b]||(a[b]={}),a[b]},c=function(c,d){for(var e=d||a,f=c.split("."),g=0;g<f.length;++g)e=b(e,f[g]);return e};return{namespace:c}}),g("5h",["6t"],function(a){var b=function(b){var c=a.namespace(b);c.callbacks={};var d=0,e=function(){var a="callback_"+d;return d++,a},f=function(a){return b+".callbacks."+a},g=function(a,b){var d=e();return c.callbacks[d]=function(){b||j(d),a.apply(null,arguments)},f(d)},h=function(a){return g(a,!1)},i=function(a){return g(a,!0)},j=function(a){var b=a.substring(a.lastIndexOf(".")+1);void 0!==c.callbacks[b]&&delete c.callbacks[b]};return c.ephemeral=h,c.permanent=i,c.unregister=j,c};return{install:b}}),g("5j",["p","n","3n","k","6n","3f","1g"],function(a,b,c,d,e,f,g){var h=function(a){a.dom().focus()},i=function(a){a.dom().blur()},j=function(a){var b=f.owner(a).dom();return a.dom()===b.activeElement},k=function(a){var c=void 0!==a?a.dom():g;return b.from(c.activeElement).map(d.fromDom)},l=function(b){var d=f.owner(b),g=k(d).filter(function(d){return e.closest(d,a.curry(c.eq,b))});g.fold(function(){h(b)},a.noop)},m=function(a){return k(f.owner(a)).filter(function(b){return a.dom().contains(b.dom())})};return{hasFocus:j,focus:h,blur:i,active:k,search:m,focusInside:l}}),h("5l",clearTimeout),h("5n",unescape),g("39",["5f","5g","5c","g","1c","1s","2t","5h","p","n","21","22","5i","27","5d","k","5j","1x","5k","5l","1f","5m","x","5n","11"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y){var z=h.install("ephox.flash"),A=g.detect(),B=j.none();return function(g){var h=l.create({response:k(["rtf"]),spin:k([]),cancel:k([]),error:k(["message"]),reset:k([]),hide:k([]),failed:k(["message"])}),j=!1,s=p.fromTag("div");n.add(s,c.resolve("flashbin-target"));var v=a.responsive();v.events.crashed.bind(function(){h.trigger.failed("flash.crashed")}),v.events.timeout.bind(function(){h.trigger.failed("flash.crashed")});var C=function(a){v.stop(),w(function(){""===a?h.trigger.error("flash.crashed"):h.trigger.response(x(a))},0)},D=function(){if(N.stop(),!j){j=!0;try{var a=L.dom();e.each(J,function(b,c){var d=a[c];if(void 0===d)throw'Flash object does not have the method "'+c+'"';d.call(a,b)}),h.trigger.reset(),S(),P()}catch(b){u.log("Flash dialog - Error during load: ",b)}}},E=z.permanent(D),F=function(){return!m.inBody(L)},G=function(){return!L.dom().SetVariable},H=function(){v.start(1e3,10,F,G),h.trigger.spin()},I=function(a){v.stop(),h.trigger.error(a)},J={setSpinCallback:z.permanent(H),setPasteCallback:z.permanent(C),setEscapeCallback:z.permanent(h.trigger.cancel),setErrorCallback:z.permanent(I),setStartPasteCallback:z.permanent(i.noop)},K=function(){var a=g.replace(/^https?:\/\//,"//"),b="onLoad="+E,c=' <param name="allowscriptaccess" value="always"> <param name="wmode" value="opaque"> <param name="FlashVars" value="'+b+'">';if(A.browser.isIE()&&10===A.browser.version.major){var d=f.generate("flash-bin");return p.fromHtml('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="'+d+'"><param name="movie" value="'+a+'">'+c+"</object>")}return p.fromHtml('<object type="application/x-shockwave-flash" data="'+a+'">'+c+"</object>")},L=K(),M=function(){o.setAll(L,{width:"2px",height:"2px"})};M();var N=b(L,e.keys(J),D);r.append(s,L);var O=function(){return s},P=function(){A.browser.isFirefox()&&y.getSelection().removeAllRanges(),q.focus(L)},Q=null,R=function(){n.add(s,c.resolve("flash-activate")),o.remove(L,"height"),o.remove(L,"width"),h.trigger.hide()},S=function(){t(Q),n.remove(s,c.resolve("flash-activate")),M()},T=function(){Q=w(R,3e3),h.trigger.spin(),o.set(s,"display","block"),P()},U=function(){o.set(s,"display","none"),B.each(function(a){d.each(a,function(a){a.unbind()})})},V=function(){U(),d.each(e.values(J),function(a){z.unregister(a)}),z.unregister(E),N.stop()};return{focus:P,element:O,activate:T,deactivate:U,destroy:V,events:h.registry}}}),g("1q",["38","39","21","22","w","k","11"],function(a,b,c,d,e,f,g){return function(h,i){var j=i.translations,k=d.create({response:c(["rtf","hide"]),cancel:c([]),error:c(["message"]),failed:c(["message"])}),l=function(){var c=b(i.swf);c.deactivate();var d=f.fromDom(g),l=e.bind(d,"mouseup",c.focus),m=function(){q()},n=function(){m(),k.trigger.cancel()};c.events.cancel.bind(n),c.events.response.bind(function(a){k.trigger.response(a.rtf(),m)}),c.events.error.bind(function(a){m(),k.trigger.error(a.message())}),c.events.failed.bind(function(a){m(),k.trigger.failed(a.message())});var o=h();o.setTitle(j("cement.dialog.flash.title"));var p=a(c,o.reflow,i);p.reset(),o.setContent(p.element()),o.events.close.bind(n),o.show(),c.activate();var q=function(){l.unbind(),c.destroy(),o.destroy()}};return{open:l,events:k.registry}}}),g("5p",[],function(){var a=function(a,b){return d(function(c,d,e){return d(a,b)})},b=function(a){return d(function(b,c,d){return b(a)})},c=function(a){return d(function(b,c,d){return d(a)})},d=function(a){return{fold:a}};return{on:a,before:b,after:c}}),g("5o",["5p","2c","k"],function(a,b,c){var d=b.immutable("start","soffset","finish","foffset"),e=b.immutable("start","soffset","finish","foffset"),f=b.immutable("start","finish"),g=function(b){var d=c.fromDom(b.startContainer),e=c.fromDom(b.endContainer);return f(a.on(d,b.startOffset),a.on(e,b.endOffset))};return{read:d,general:e,write:f,writeFromNative:g}}),g("5q",[],function(){var a=function(a,b){if(a.getSelection)return b(a,a.getSelection());throw"No selection model supported."};return{run:a}}),g("6v",["3n","3f"],function(a,b){var c=function(c,d,e,f){var g=b.owner(c),h=g.dom().createRange();h.setStart(c.dom(),d),h.setEnd(e.dom(),f);var i=a.eq(c,e)&&d===f;return h.collapsed&&!i};return{after:c}}),g("6u",["5o","6v","k","3f"],function(a,b,c,d){var e=function(a){return b.after(c.fromDom(a.anchorNode),a.anchorOffset,c.fromDom(a.focusNode),a.focusOffset)},f=function(b,d){var f=c.fromDom(d.startContainer),g=c.fromDom(d.endContainer);return e(b)?a.read(g,d.endOffset,f,d.startOffset):a.read(f,d.startOffset,g,d.endOffset)},g=function(a){return e(a)},h=function(a,b,c,e){return function(f){if(f.extend)f.collapse(a.dom(),b),f.extend(c.dom(),e);else{var g=d.owner(a).dom().createRange();g.setStart(c.dom(),e),g.setEnd(a.dom(),b),f.removeAllRanges(),f.addRange(g)}}},i=function(a,c,d,e){return b.after(a,c,d,e)},j=function(){return{flip:f,isRtl:g}},k=function(){return{flip:h,isRtl:i}};return{read:j,write:k}}),g("5s",["5o","6u","n","6v","k"],function(a,b,c,d,e){var f=function(b,d){var f=h(b,d.start(),d.finish());if(f.collapsed===!0){var g=h(b,d.finish(),d.start());return g.collapsed===!0?c.none():c.some(a.general(e.fromDom(g.endContainer),g.endOffset,e.fromDom(g.startContainer),g.startOffset))}return c.none()},g=function(a,b){var c=h(a,b.start(),b.finish());return c.collapsed===!0?h(a,b.finish(),b.start()):c},h=function(a,b,c){var d=m(a);return b.fold(function(a){d.setStartBefore(a.dom())},function(a,b){d.setStart(a.dom(),b)},function(a){d.setStartAfter(a.dom())}),c.fold(function(a){d.setEndBefore(a.dom())},function(a,b){d.setEnd(a.dom(),b)},function(a){d.setEndAfter(a.dom())}),d},i=function(a,b){return h(a,b.start(),b.finish())},j=function(a,b,c,e,f){var g=d.after(b,c,e,f),h=a.document.createRange();return g?(h.setStart(e.dom(),f),h.setEnd(b.dom(),c)):(h.setStart(b.dom(),c),h.setEnd(e.dom(),f)),h},k=function(a,b){var c=i(a,b);return function(a){a.addRange(c)}},l=function(a,c){var d=f(a,c);return d.fold(function(){return k(a,c)},function(a){return b.write().flip(a.start(),a.soffset(),a.finish(),a.foffset())})},m=function(a){return a.document.createRange()};return{create:m,build:l,toNative:i,forceRange:g,toExactNative:j}}),g("5r",["g","5s","k","1d","2a","2h"],function(a,b,c,d,e,f){var g=function(a,b,c){return a.selectNodeContents(c.dom()),a.compareBoundaryPoints(b.END_TO_START,b)<1&&a.compareBoundaryPoints(b.START_TO_END,b)>-1},h=function(b,c,d,h){var i=b.document.createRange(),j=f.is(c,h)?[c]:[],k=j.concat(e.descendants(c,h));return a.filter(k,function(a){return g(i,d,a)})},i=function(a,e,f){var g=b.forceRange(a,e),i=c.fromDom(g.commonAncestorContainer);return d.isElement(i)?h(a,i,g,f):[]};return{find:i}}),g("6w",["g","5o","5p","1d"],function(a,b,c,d){var e=function(b,e){var f=d.name(b);return"input"===f?c.after(b):a.contains(["br","img"],f)?0===e?c.before(b):c.after(b):c.on(b,e)},f=function(a){var d=a.start().fold(c.before,e,c.after),f=a.finish().fold(c.before,e,c.after);return b.write(d,f)};return{beforeSpecial:e,preprocess:f}}),g("6x",["g","k","1g"],function(a,b,c){var d=function(d,e){var f=e||c,g=f.createDocumentFragment();return a.each(d,function(a){g.appendChild(a.dom())}),b.fromDom(g)};return{fromElements:d}}),g("5t",["5o","6u","5s","6w","n","k","6x"],function(a,b,c,d,e,f,g){var h=function(a){return function(b,e){var f=d.preprocess(a),g=c.build(b,f);void 0!==e&&null!==e&&(e.removeAllRanges(),g(e))}},i=function(a){return function(b,d){var e=c.create(b);e.selectNodeContents(a.dom()),d.removeAllRanges(),d.addRange(e)}},j=function(a,b){var c=b.getRangeAt(0),d=b.getRangeAt(b.rangeCount-1),e=a.document.createRange();return e.setStart(c.startContainer,c.startOffset),e.setEnd(d.endContainer,d.endOffset),e},k=function(c,d){var e=f.fromDom(d.startContainer),g=f.fromDom(d.endContainer);return b.read().isRtl(c)?b.read().flip(c,d):a.read(e,d.startOffset,g,d.endOffset)},l=function(a,b){return void 0!==b&&null!==b&&b.rangeCount>0?e.from(j(a,b)):e.none()},m=function(a,b){var c=l(a,b);return c.map(function(a){return k(b,a)})},n=function(a){return function(b,c){var d=l(b,c);d.each(function(c){o(b,c,a)})}},o=function(a,b,c){var d=g.fromElements(c,a.document);b.deleteContents(),b.insertNode(d.dom())},p=function(a,b){return function(e,f){var g=d.preprocess(a),h=c.toNative(e,g);o(e,h,b)}},q=function(a,b,d,e){return function(f,g){var h=c.toExactNative(f,a,b,d,e);h.deleteContents()}},r=function(a,b,d,e){return function(g,h){var i=c.toExactNative(g,a,b,d,e),j=i.cloneContents();return f.fromDom(j)}},s=function(a,b,d,f){return function(g,h){var i=c.toExactNative(g,a,b,d,f),j=i.getClientRects(),k=j.length>0?j[0]:i.getBoundingClientRect();return k.width>0||k.height>0?e.some(k):e.none()}},t=function(a){return function(b,d){var f=c.create(b);f.selectNode(a.dom());var g=f.getBoundingClientRect();return g.width>0||g.height>0?e.some(g):e.none()}},u=function(a,b){a.getSelection().removeAllRanges()},v=function(a,b,d,e){return function(f,g){var h=c.toExactNative(f,a,b,d,e);return h.toString()}};return{get:m,set:h,selectElementContents:i,replace:n,replaceRange:p,deleteRange:q,cloneFragment:r,rectangleAt:s,bounds:t,clearSelection:u,stringAt:v}}),g("3a",["5o","5p","5q","5r","5s","5t","3n","k"],function(a,b,c,d,e,f,g,h){var i=function(a){return c.run(a,f.get)},j=function(a,b){c.run(a,f.set(b))},k=function(c,d,e,f,g){var h=a.write(b.on(d,e),b.on(f,g));j(c,h)},l=function(a,b){c.run(a,f.selectElementContents(b))},m=function(a,b){c.run(a,f.replace(b))},n=function(a,b,d){c.run(a,f.replaceRange(b,d))},o=function(a,b,d,e,g){c.run(a,f.deleteRange(b,d,e,g))},p=function(a,b,d,e,g){return c.run(a,f.cloneFragment(b,d,e,g))},q=function(a,b,c,d){return g.eq(a,c)&&b===d},r=function(a,b,d,e,g){return c.run(a,f.rectangleAt(b,d,e,g))},s=function(a,b){return c.run(a,f.bounds(b))},t=function(a,b,c){return d.find(a,b,c)},u=function(c,d,e,f,g,h){var i=a.write(b.on(d,e),b.on(f,g));return t(c,i,h)},v=function(b,c){var d=e.forceRange(b,c);return a.general(h.fromDom(d.startContainer),d.startOffset,h.fromDom(d.endContainer),d.endOffset)},w=function(a){c.run(a,f.clearSelection)},x=function(a,b,d,e,g){return c.run(a,f.stringAt(b,d,e,g))};return{get:i,set:j,setExact:k,selectElementContents:l,replace:m,replaceRange:n,deleteRange:o,isCollapsed:q,cloneFragment:p,rectangleAt:r,bounds:s,findWithin:t,findWithinExact:u,deriveExact:v,clearAll:w,stringAt:x}}),g("5u",["p","3n"],function(a,b){return function(c,d,e,f){var g=b.eq(c,e)&&d===f;return{startContainer:a.constant(c),startOffset:a.constant(d),endContainer:a.constant(e),endOffset:a.constant(f),collapsed:a.constant(g)}}}),g("3b",["5u","k","1x","1y","3f"],function(a,b,c,d,e){return function(f){var g=b.fromTag("br"),h=function(a,b){a.dom().focus()},i=function(a){var b=e.owner(a);return b.dom().defaultView},j=function(b,d){var e=i(d);e.focus(),c.append(d,g),f.set(e,a(g,0,g,0))},k=function(){d.remove(g)};return{cleanup:k,toOn:h,toOff:j}}}),g("3c",["p"],function(a){return function(){var b=function(a,b){a.dom().focus()},c=function(a,b){b.dom().focus()},d=a.identity;return{toOn:b,toOff:c,cleanup:d}}}),g("6y",["g","k","1x","29","1y","3f"],function(a,b,c,d,e,f){var g=function(a,b){f.nextSibling(a).filter(b).each(function(b){var c=f.children(b);d.append(a,c),e.remove(b)}),i(a,b)},h=function(a,g){var h=f.children(a),i=b.fromTag("div",f.owner(a).dom());d.append(i,h),c.before(a,i),e.remove(a)},i=function(b,c){var d=f.children(b);a.each(d,function(a){c(a)&&h(a,b)})};return{consolidate:g}}),g("6z",["3g"],function(a){var b=a.create("ephox-sloth");return{resolve:b.resolve}}),g("70",["5d"],function(a){var b=function(a,b){return function(d){return"rtl"===c(d)?b:a}},c=function(b){return"rtl"===a.get(b,"direction")?"rtl":"ltr"};return{onDirection:b,getDirection:c}}),g("5v",["1s","2c","6y","6z","j","27","3q","5d","70","k","6h","1x","1y","20","3f"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var p=d.resolve("bin"),q=p+a.generate(""),r=i.onDirection("-100000px","100000px");return function(a){var d=j.fromTag("div");e.setAll(d,{contenteditable:"true","aria-hidden":"true"}),h.setAll(d,{position:"fixed",top:"0px",width:"100px",height:"100px",overflow:"hidden",opacity:"0"}),g.add(d,[p,q]);var i=function(a){m.empty(d),h.set(d,"left",r(a)),l.append(a,d)},s=function(){var b=n.ancestor(d,"body");b.each(function(b){a.toOff(b,d)})},t=function(a){return f.has(a,q)},u=function(){c.consolidate(d,t);var a=b.immutable("elements","html","container"),e=o.children(d),f=k.get(d);return a(e,f,d)},v=function(){m.remove(d)},w=function(){return d};return{attach:i,focus:s,contents:u,container:w,detach:v}}}),g("3d",["p","2x","21","22","2y","5v","3f"],function(a,b,c,d,e,f,g){return function(h,i){var j=f(h),k=function(){h.cleanup();var a=j.contents();j.detach(),n.trigger.after(a.elements(),a.html(),j.container())},l=b.tap(function(){n.trigger.before(),j.attach(i),j.focus(),e.run(g.owner(i),l,k)}),m=function(){l.instance()},n=d.create({before:c([]),after:c(["elements","html","container"])}),o=a.noop;return{instance:a.constant(m),destroy:o,events:n.registry}}}),g("1r",["2t","3a","21","22","3b","3c","3d","1d"],function(a,b,c,d,e,f,g,h){var i=a.detect(),j={set:function(a,c){b.setExact(a,c.startContainer(),c.startOffset(),c.endContainer(),c.endOffset())}},k=function(a){var b=i.browser.isIE()&&"body"!==h.name(a)?f:e;return b(j)};return function(a){var b=d.create({after:c(["container"])}),e=k(a),f=g(e,a);f.events.after.bind(function(c){e.toOn(a,c.container()),b.trigger.after(c.container())});var h=function(){f.instance()()};return{run:h,events:b.registry}}}),g("5y",["w","k","1g"],function(a,b,c){var d=function(d){if("complete"===c.readyState||"interactive"===c.readyState)d();else var e=a.bind(b.fromDom(c),"DOMContentLoaded",function(){d(),e.unbind()})};return{execute:d}}),g("3e",["2t","5h","p","5w","n","5x","5i","5d","w","k","1x","5y","1y"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=b.install("ephox.keurig.init"),o=e.none(),p=a.detect(),q=p.browser,r=q.isIE()||q.isSpartan()||p.deviceType.isiOS()||p.deviceType.isAndroid(),s=r?c.noop:d.cached(function(a){var b=j.fromTag("div");if(void 0===a)throw"baseUrl was undefined";var c=j.fromTag("iframe");h.setAll(b,{display:"none"});var d=i.bind(c,"load",function(){var g=function(a){o=e.some(a),q.isSafari()||m.remove(b)},h=n.ephemeral(g),i=a+"/wordimport.js";f.write(c,'<script type="text/javascript" src="'+i+'"></script><script type="text/javascript">function gwtInited () {parent.window.'+h+"(com.ephox.keurig.WordCleaner.cleanDocument);};</script>"),d.unbind()});l.execute(function(){k.append(g.body(),b),k.append(b,c)})}),t=function(a,b){return o.map(function(c){return c(a,b)})},u=function(){return o.isSome()};return{load:s,cleanDocument:t,ready:u}}),g("1t",["3e"],function(a){return function(b){return a.ready()||a.load(b),{cleanDocument:a.cleanDocument}}}),g("l",["1o","1p","1q","1r","g","1s","1t","p","n"],function(a,b,c,d,e,f,g,h,i){return function(j,k,l,m){var n=g(m.baseUrl),o=h.curry(c,k),p=d,q=function(){return{clipboardType:f.generate("clipboard-type"),findClipboardTags:i.none}},r=void 0!==m.intraFlag?m.intraFlag:q(),s=e.flatten([void 0!==m.intraFlag?[b.internal(l,p,j,r)]:[],[b.onlyText()],[b.gwt(n,k,m,o)],[b.image(m)]]),t=b.pastiche(k,m,l,p,j,o,r);return a(s,t)}}),g("m",["1o","1p"],function(a,b){return function(){return a([b.text()],b.none())}}),g("q",[],function(){return{officeStyles:"prompt",htmlStyles:"clean"}}),g("r",["j","k","1x","1y","1z","20","1g"],function(a,b,c,d,e,f,g){var h="powerpaste-styles",i="#"+h,j=function(d){if(!e.any(i)){var g="<style>.ephox-cement-flashbin-helpcopy-kbd {font-size: 3em !important; text-align: center !important; vertical-align: middle !important; margin: .5em 0} .ephox-cement-flashbin-helpcopy-kbd .ephox-polish-help-kbd {font-size: 3em !important; vertical-align: middle !important;} .ephox-cement-flashbin-helpcopy a {text-decoration: underline} .ephox-cement-flashbin-loading-spinner {background-image: url("+d+") !important; width: 96px !important; height:96px !important; display: block; margin-left: auto !important; margin-right: auto !important; margin-top: 2em !important; margin-bottom: 2em !important;} .ephox-cement-flashbin-loading p {text-align: center !important; margin: 2em 0 !important} .ephox-cement-flashbin-target {height: 1px !important;} .ephox-cement-flashbin-target.ephox-cement-flash-activate {height: 150px !important; width: 100% !important;} .ephox-cement-flashbin-target object {height: 1px !important;} .ephox-cement-flashbin-target.ephox-cement-flash-activate object {height: 150px !important; width: 100% !important;} .ephox-cement-flashbin-helpcopy p {white-space: normal;}</style>",j=b.fromHtml(g);a.set(j,"type","text/css"),a.set(j,"id",h);var k=f.first("head").getOrDie("Head element could not be found.");c.append(k,j)}},k=function(){if(e.any(i)){var a=f.first("head").getOrDie("Head element could not be found."),b=f.descendant(a,i).getOrDie("The style element could not be removed");d.remove(b)}};return{injectStyles:j,removeStyles:k}}),g("v",["g","k","j","1g"],function(a,b,c,d){var e=function(a){var b=d.createElement("div");b.appendChild(a.cloneNode(!0));var c=b.innerHTML;return b=a=null,c},f=function(d){a.each(a.map(d.getElementsByTagName("*"),b.fromDom),function(a){c.has(a,"data-mce-style")&&!c.has(a,"style")&&c.set(a,"style",c.get(a,"data-mce-style"))})};return{nodeToString:e,restoreStyleAttrs:f}}),g("t",["21","22","v","j","k","1x","1y","20"],function(a,b,c,d,e,f,g,h){return function(i){var j=function(){var j,k="",l="",m=[],n=null,o=b.create({close:a([])}),p=function(a){k=a},q=function(a){var b=c.nodeToString(a.dom());l=[{type:"container",html:b}],n=a},r=function(a){var b=[];a.forEach(function(a,c,d){b.push({text:a.text,onclick:a.click})}),m=b},s=function(a){o.trigger.close()},t=function(){j.off("close",s),j.close("close")},u=function(){0===m.length&&(m=[{text:"Close",onclick:function(){j.close()}}]);var a={title:k,spacing:10,padding:10,minWidth:300,minHeight:100,layout:"flex",items:l,buttons:m};j=i.windowManager.open(a);var b=e.fromDom(j.getEl()),c=h.descendant(b,"."+d.get(n,"class")).getOrDie("We must find this element or we cannot continue");f.before(c,n),g.remove(c),j.on("close",s)},v=function(){t()},w=function(){t()},x=function(){};return{events:o.registry,setTitle:p,setContent:q,setButtons:r,show:u,hide:v,destroy:w,reflow:x}};return{createDialog:j}}}),g("24",["2c","n"],function(a,b){var c=a.immutable("url","html"),d=function(a){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(a)},e=function(a){return d(a)&&/.(gif|jpe?g|png)$/.test(a)},f=function(a){var d=/^<a href="([^"]+)">([^<]+)<\/a>$/.exec(a);return b.from(d).bind(function(d){var e=c(d[1],a);return d[1]===d[2]?b.some(e):b.none()})};return{isAbsoluteUrl:d,isImageUrl:e,parseUrlFromLinkHtml:f}}),g("u",["g","n","23","24"],function(a,b,c,d){var e=function(a){return"extra"in a.undoManager},f=function(a,c,d){return e(a)?(a.undoManager.extra(function(){k(a,c)},d),b.some(!0)):b.none()},g=function(a,b){return f(a,b.html(),function(){a.insertContent('<img src="'+b.url()+'">')})},h=function(a,b){return f(a,b.html(),function(){a.execCommand("mceInsertLink",!1,b.url())})},i=function(a,c){return d.parseUrlFromLinkHtml(c).bind(function(c){var e=a.selection.isCollapsed()===!1&&d.isAbsoluteUrl(c.url());return e?h(a,c):b.none()})},j=function(a,c){return d.parseUrlFromLinkHtml(c).bind(function(c){return d.isImageUrl(c.url())?g(a,c):b.none()})},k=function(a,c){return a.insertContent(c,{merge:a.settings.paste_merge_formats!==!1,paste:!0}),b.some(!0)},l=function(a,b,d){var e=function(c){return c(a,b)};return c.findMap(d,e)};return{until:l,linkSelection:i,insertImage:j,insertContent:k}}),g("8",[],function(){var a=function(a,b){return a.hasEventListeners(b)},b=function(a,b){return a.fire("PastePreProcess",{content:b}).content},c=function(a,b){var c=a.dom.add(a.getBody(),"div",{style:"display:none"},b),d=a.fire("PastePostProcess",{node:c}).node.innerHTML;return a.dom.remove(c),d},d=function(c,d){return a(c,"PastePreProcess")?b(c,d):d},e=function(b,d){return a(b,"PastePostProcess")?c(b,d):d},f=function(a,b){return e(a,d(a,b))},g=function(a){var b=a.settings,c=a.plugins.powerpaste;b.paste_preprocess&&a.on("PastePreProcess",function(d){b.paste_preprocess.call(a,c,d)}),b.paste_postprocess&&a.on("PastePostProcess",function(d){b.paste_postprocess.call(a,c,d)})};return{process:f,registerEvents:g}}),g("6",["l","m","g","n","o","p","d","q","r","s","t","u","8","v","w","k","x","2"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){return function(s,t,u,v,w){var x,y,z,A,B;B=(v?v.jsUrl:u)+"/js",y=(v?v.swfUrl:u)+"/flash/textboxpaste.swf",z=(v?v.imgUrl:u)+"/img/spinner_96.gif",A=(v?v.cssUrl:u)+"/css/editorcss.css";var C=function(a){return a.settings.smart_paste!==!1},D=function(a){return function(b,c){return b.undoManager.transact(function(){l.insertContent(b,c),n.restoreStyleAttrs(b.getBody()),w.prepareImages(a)}),d.some(!0)}},E=function(a,b,c){var d=C(a)?[l.linkSelection,l.insertImage]:[];l.until(a,b,d.concat([D(c)]))},F=function(){x&&s.selection.moveToBookmark(x),x=null};s.on("init",function(d){i.injectStyles(z),s.dom.loadCSS(A);var l={baseUrl:B,swf:y,officeStyles:s.settings.powerpaste_word_import||h.officeStyles,htmlStyles:s.settings.powerpaste_html_import||h.htmlStyles,translations:g.translate,allowLocalImages:s.settings.powerpaste_allow_local_images!==!1,enableFlashImport:s.settings.powerpaste_enable_flash_import!==!1,preprocessor:function(a){return e.pure(a)}},r=k(s),u=p.fromDom(s.getBody()),v=function(a){a.events.cancel.bind(function(){F()}),a.events.error.bind(function(a){F(),s.notificationManager?s.notificationManager.open({text:g.translate(a.message()),type:"error"}):j.showDialog(s,g.translate(a.message()))}),a.events.insert.bind(function(a){var b=c.map(a.elements(),function(a){return n.nodeToString(a.dom())}).join("");s.focus(),q(function(){F(),E(s,m.process(s,b),a.assets()),w.uploadImages(a.assets())},1)})},C=a(u,r.createDialog,f.noop,l),D=b();c.each([C,D],v),o.bind(u,"paste",function(a){x||(x=s.selection.getBookmark());var b=t.isText()?D:C;b.paste(a.raw()),t.reset(),q(function(){s.windowManager.windows[0]&&s.windowManager.windows[0].getEl()&&s.windowManager.windows[0].getEl().focus()},1)})}),s.on("remove",function(a){1===r.editors.length&&i.removeStyles()})}}),g("7",["y","z"],function(a,b){var c=function(a){return tinymce.util.VK.metaKeyPressed(a)&&86==a.keyCode&&a.shiftKey};return function(d){var e=b(d.settings.paste_as_text),f=b(!1);d.on("keydown",function(a){c(a)&&(f.set(!0),tinymce.Env.ie&&tinymce.Env.ie<10&&(a.preventDefault(),d.fire("paste",{})))});var g=a(function(){var a=d.translate("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.");d.notificationManager.open({text:a,type:"info"})}),h=function(){var a=this,b=!e.get();a.active(b),e.set(b),d.fire("PastePlainTextToggle",{state:b}),b===!0&&0!=d.settings.paste_plaintext_inform&&g(),d.focus()},i=function(){f.set(!1)},j=function(){return f.get()||e.get()};return{toggle:h,reset:i,isText:j}}}),g("10",[],function(){var a=0,b=1,c=-1,d=function(a){return parseInt(a,10)},e=function(a){return function(){return a}},f=function(a,b,c){return{major:e(a),minor:e(b),patch:e(c)}},g=function(a){var b=/([0-9]+)\.([0-9]+)\.([0-9]+)(?:(\-.+)?)/.exec(a);return b?f(d(b[1]),d(b[2]),d(b[3])):f(0,0,0)},h=function(d,e){var f=d-e;return 0===f?a:f>0?b:c},i=function(b,c){var d=h(b.major(),c.major());if(d!==a)return d;var e=h(b.minor(),c.minor());if(e!==a)return e;var f=h(b.patch(),c.patch());return f!==a?f:a};return{nu:f,parse:g,compare:i}}),g("9",["10"],function(a){var b=function(a){var b=[a.majorVersion,a.minorVersion].join(".");return b.split(".").slice(0,3).join(".")},c=function(c){return c?a.parse(b(c)):null},d=function(b,d){return a.compare(c(b),a.parse(d))<0};return{getVersion:c,isLessThan:d}}),g("a",["11"],function(a){var b=function(a,b){return function(){var c=a.console;c&&b in c&&c[b].apply(c,arguments)}};return{log:b(a,"log"),error:b(a,"error"),warn:b(a,"warm")}}),g("1",["3","4","5","6","7","8","9","a","2"],function(a,b,c,d,e,f,g,h,i){return function(j){return g.isLessThan(i,"4.0.0")?(h.error('The "powerpaste" plugin requires at least 4.0.0 version of TinyMCE.'),function(){}):function(g,h){var k=e(g),l=function(){var b=a(g);d(g,k,h,j,b),g.settings.powerpaste_block_drop||c(g,h,j,b)},m=function(){b(g,k,j)},n=function(){var a=this;a.active(k.isText()),g.on("PastePlainTextToggle",function(b){a.active(b.state)})};i.Env.ie&&i.Env.ie<10?m():l();var o=function(a){g.dom.bind(a,"drop dragstart dragend dragover dragenter dragleave dragdrop draggesture",function(a){return i.dom.Event.cancel(a)})};g.settings.powerpaste_block_drop&&g.on("init",function(a){o(g.getBody()),o(g.getDoc())}),f.registerEvents(g),g.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:k.toggle,onPostRender:n}),g.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,onclick:k.toggle,onPostRender:n})}}}),g("0",["1","2"],function(a,b){return function(c){b.PluginManager.requireLangPack("powerpaste","ar,ca,cs,da,de,el,es,fa,fi,fr_FR,he_IL,hr,hu_HU,it,ja,kk,ko_KR,nb_NO,nl,pl,pt_BR,pt_PT,ro,ru,sk,sl_SI,sv_SE,th_TH,tr,uk,zh_CN,zh_TW"),b.PluginManager.add("powerpaste",a(c))}}),d("0")()}(); diff --git a/static/tinymce1.3/plugins/watermark/plugin.min.js b/static/tinymce1.3/plugins/watermark/plugin.min.js new file mode 100644 index 0000000000000000000000000000000000000000..83fa3a3eba65e393fbee01f213b0ca6433953554 --- /dev/null +++ b/static/tinymce1.3/plugins/watermark/plugin.min.js @@ -0,0 +1,72 @@ +(function() { + const qiniuOption = { + watermark: 'aHR0cHM6Ly93ZGwud2FsbHN0cmVldGNuLmNvbS8yM2Y0ZWE2Ny1hZjI1LTQ3ZTItYTFlYy1iNzJjNzkzYWNlOGE=', + weexWatermark: 'aHR0cHM6Ly93cGltZy53YWxsc3Rjbi5jb20vMGQxMmMwN2ItNjViMS00NjA4LTllMTctODUyMDRhOTc3YzY5', + dissolve: 30, + dx: 20, + dy: 20, + watermarkScale: 0 + }; + tinymce.create('tinymce.plugins.WaterMarkPlugin', { + init(ed) { + ed.addCommand('mceWaterMark', () => { + const target = ed.selection.getNode(); + + const src = $(target).attr('src') + '?watermark/1/image/' + qiniuOption.watermark + '/dissolve/' + qiniuOption.dissolve + '/gravity/Center/dx/' + qiniuOption.dx + '/dy/' + qiniuOption.dy + '/ws/' + qiniuOption.watermarkScale + ed.windowManager.open({ + title: '七牛水å°', + width: 600, + height: 500, + body: [{ + type: 'container', + html: `<div class="mce-container" hidefocus="1" tabindex="-1" > + <div class="mce-container-body mce-container-watermark-body"> + <div style="margin-bottom:10px;"> + <label><input checked='true' style="margin-left: 20px;margin-right: 5px;" name="image-watermarkType" data-type="watermark" class="note-image-watermarkType" type="radio" />è§é—»</label> + <label><input style="margin-left: 20px;margin-right: 5px;" name="image-watermarkType" data-type="weexWatermark" class="note-image-watermarkType" type="radio" />WEEX</label> + </div> + <div style='min-height:600px;'> + <label><input style="margin-left: 20px;margin-right: 5px;" name="image-watermark" data-position="NorthWest" class="note-image-watermark" type="radio" />左上</label> + <label><input style="margin-left: 20px;margin-right: 5px;" name="image-watermark" data-position="SouthWest" class="note-image-watermark" type="radio" />左下</label> + <label><input style="margin-left: 20px;margin-right: 5px;" name="image-watermark" data-position="NorthEast" class="note-image-watermark" type="radio" /><span>å³ä¸Š</span></label> + <label><input style="margin-left: 20px;margin-right: 5px;" name="image-watermark" data-position="SouthEast" class="note-image-watermark" type="radio" /><span>å³ä¸‹</span></label> + <label><input checked='true' style="margin-left: 20px;margin-right: 5px;" name="image-watermark" data-position="Center" class="note-image-watermark" type="radio" /><span>æ£ä¸å¤®</span></label> + <img src=${src} style="display: block;margin: 20px auto;max-height: 420px;max-width: 100%;" class="watermark-preview"> + </div> + </div> + </div>` + }], + onSubmit() { + const src = $('.mce-container-watermark-body .watermark-preview').attr('src'); + $(target).attr('src', src); + ed.undoManager.add() + // setTimeout(() => { + // ed.insertContent('a') + // }, 100); + } + }); + $('.mce-container-watermark-body input[type="radio"]').on('click', () => { + const $watermarkImg = $('.mce-container-watermark-body .watermark-preview') + const baseSrc = $watermarkImg.attr('src').split('?')[0]; + const position = $('.mce-container-watermark-body input[name="image-watermark"]:checked').attr('data-position'); + const type = $('.mce-container-watermark-body input[name="image-watermarkType"]:checked').attr('data-type'); + const query = setQuery(position, type); + $watermarkImg.attr('src', baseSrc + query); + }) + }); + + + function setQuery(postion, type) { + return '?watermark/1/image/' + qiniuOption[type] + '/dissolve/' + qiniuOption.dissolve + '/gravity/' + postion + '/dx/' + qiniuOption.dx + '/dy/' + qiniuOption.dy + '/ws/' + qiniuOption.watermarkScale + } + + // Register buttons + ed.addButton('watermark', { + title: 'watermark', + text: 'æ°´å°', + cmd: 'mceWaterMark' + }); + } + }); + tinymce.PluginManager.add('watermark', tinymce.plugins.WaterMarkPlugin); +}()); diff --git a/static/tinymce1.3/skins/lightgray/content.inline.min.css b/static/tinymce1.3/skins/lightgray/content.inline.min.css new file mode 100755 index 0000000000000000000000000000000000000000..4030546c68d1e66d3565a578bb7b6a8ac6c3643d --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/content.inline.min.css @@ -0,0 +1 @@ +.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1} \ No newline at end of file diff --git a/static/tinymce1.3/skins/lightgray/content.min.css b/static/tinymce1.3/skins/lightgray/content.min.css new file mode 100755 index 0000000000000000000000000000000000000000..9e6e983dfb68780a91b3f416a530eda332705a97 --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/content.min.css @@ -0,0 +1,601 @@ +body { + background-color: #FFFFFF; + color: #000000; + font-family: Helvetica,Microsoft YaHei,Hiragino Sans GB,WenQuanYi Micro Hei,sans-serif; + font-size: 14px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5 +} + +td, +th { + font-family: Helvetica,Microsoft YaHei,Hiragino Sans GB,WenQuanYi Micro Hei,sans-serif; + font-size: 14px +} + +.mce-content-body .mce-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + vertical-align: top; + background: transparent; + text-decoration: none; + color: black; + font-family: Arial; + font-size: 11px; + text-shadow: none; + float: none; + position: static; + width: auto; + height: auto; + white-space: nowrap; + cursor: inherit; + line-height: normal; + font-weight: normal; + text-align: left; + -webkit-tap-highlight-color: transparent; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; + direction: ltr; + max-width: none +} + +.mce-object { + border: 1px dotted #3A3A3A; + background: #D5D5D5 url(img/object.gif) no-repeat center +} + +.mce-preview-object { + display: inline-block; + position: relative; + margin: 0 2px 0 2px; + line-height: 0; + border: 1px solid gray +} + +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none +} + +.mce-preview-object .mce-shim { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) +} + +figure.align-left { + float: left +} + +figure.align-right { + float: right +} + +figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto +} + +figure.image { + display: inline-block; + border: 1px solid gray; + margin: 0 2px 0 1px; + background: #f5f2f0 +} + +figure.image img { + margin: 8px 8px 0 8px +} + +figure.image figcaption { + margin: 6px 8px 6px 8px; + text-align: center +} + +.mce-toc { + border: 1px solid gray +} + +.mce-toc h2 { + margin: 4px +} + +.mce-toc li { + list-style-type: none +} + +.mce-pagebreak { + cursor: default; + display: block; + border: 0; + width: 100%; + height: 5px; + border: 1px dashed #666; + margin-top: 15px; + page-break-before: always +} + +@media print { + .mce-pagebreak { + border: 0 + } +} + +.mce-item-anchor { + cursor: default; + display: inline-block; + -webkit-user-select: all; + -webkit-user-modify: read-only; + -moz-user-select: all; + -moz-user-modify: read-only; + user-select: all; + user-modify: read-only; + width: 9px !important; + height: 9px !important; + border: 1px dotted #3A3A3A; + background: #D5D5D5 url(img/anchor.gif) no-repeat center +} + +.mce-nbsp, +.mce-shy { + background: #AAA +} + +.mce-shy::after { + content: '-' +} + +hr { + cursor: default +} + +.mce-match-marker { + background: #AAA; + color: #fff +} + +.mce-match-marker-selected { + background: #3399ff; + color: #fff +} + +.mce-spellchecker-word { + border-bottom: 2px solid #F00; + cursor: default +} + +.mce-spellchecker-grammar { + border-bottom: 2px solid #008000; + cursor: default +} + +.mce-item-table, +.mce-item-table td, +.mce-item-table th, +.mce-item-table caption { + border: 1px dashed #BBB +} + +td[data-mce-selected], +th[data-mce-selected] { + background-color: #3399ff !important +} + +.mce-edit-focus { + outline: 1px dotted #333 +} + +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 2px solid #2d8ac7 +} + +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 2px solid #7ACAFF +} + +.mce-content-body *[contentEditable=false][data-mce-selected] { + outline: 2px solid #2d8ac7 +} + +.mce-resize-bar-dragging { + background-color: blue; + opacity: .25; + filter: alpha(opacity=25); + zoom: 1 +} + + + + +/*自定义*/ +.mce-resizehandle{ + display: none; +} +b, strong { + font-weight: inherit; + font-weight: bolder; +} +/*img { + max-height: 300px; +}*/ + +.note-color .dropdown-menu li .btn-group:first-child { + display: none; +} + +.note-control-sizing { + display: none; +} + +.panel-body { + font-size: 16px; + color: #333; + letter-spacing: 0.5px; + line-height: 28px; + margin-bottom: 30px; + padding: 0 15px 0 10px; +} + +.panel-body > :last-child { + margin-bottom: 0; +} + +.panel-body img { + max-width: 100%; + display: block; + margin: 0 auto; +} + +.panel-body table { + width: 100% !important; +} + +.panel-body embed { + max-width: 100%; + margin-bottom: 30px; +} + +.panel-body p { + font-size: 16px; + line-height: 28px; + letter-spacing: 0.5px; + margin-bottom: 30px; + text-align: justify; + word-break: break-all; +} + +.panel-body ul { + margin-bottom: 30px; +} + +.panel-body li { + margin-left: 20px; + margin-bottom: 30px; +} + +.panel-body a { + color: #1478F0; +} + +.panel-body hr { + margin: 1em auto; + border: none; + padding: 0; + width: 100%; + height: 1px; + background: #DCDCDC; +} + +.panel-body blockquote p { + font-size: 16px; + letter-spacing: 1px; + line-height: 28px; + color: #333; +} + +.panel-body blockquote p:last-of-type { + margin-bottom: 0; +} + +.panel-body audio, +.panel-body canvas, +.panel-body video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +.panel-body button, +.panel-body input, +.panel-body select, +.panel-body textarea { + font: 500 14px/1.8 'Hiragino Sans GB', Microsoft YaHei, sans-serif; +} + +.panel-body table { + border-collapse: collapse; + border-spacing: 0; +} + +.panel-body th { + text-align: inherit; +} + +.panel-body fieldset, +.panel-body img { + border: 0; +} + +.panel-body img { + -ms-interpolation-mode: bicubic; +} + +.panel-body iframe { + display: block; +} + +.panel-body blockquote { + position: relative; + font-size: 16px; + letter-spacing: 1px; + line-height: 28px; + margin-bottom: 40px; + padding: 20px; + background: #f0f2f5; +} + +.panel-body blockquote:before { + position: absolute; + content: " \300D"; + top: 10px; + left: 2px; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + color: #333; +} + +.panel-body blockquote:after { + position: absolute; + content: " \300D"; + right: 6px; + bottom: 12px; + color: #333; +} + +.panel-body blockquote blockquote { + padding: 0 0 0 1em; + margin-left: 2em; + border-left: 3px solid #1478F0; +} + +.panel-body acronym, +.panel-body abbr { + border-bottom: 1px dotted; + font-variant: normal; +} + +.panel-body abbr { + cursor: help; +} + +.panel-body del { + text-decoration: line-through; +} + +.panel-body address, +.panel-body caption, +.panel-body cite, +.panel-body code, +.panel-body del, +.panel-body th, +.panel-body var { + font-style: normal; + font-weight: 500; +} + +.panel-body caption, +.panel-body th { + text-align: left; +} + +.panel-body q:before, +.panel-body q:after { + content: ''; +} + +.panel-body sub, +.panel-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: text-top; +} + +.panel-body :root sub, +.panel-body :root sup { + vertical-align: baseline; + /* for ie9 and other mordern browsers */ +} + +.panel-body sup { + top: -0.5em; +} + +.panel-body sub { + bottom: -0.25em; +} + +.panel-body a:hover { + text-decoration: underline; +} + +.panel-body ins, +.panel-body a { + text-decoration: none; +} + +.panel-body u, +.panel-body .typo-u { + text-decoration: underline; +} + +.panel-body mark { + background: #fffdd1; +} + +.panel-body pre, +.panel-body code { + font-family: "Courier New", Courier, monospace; +} + +.panel-body pre { + border: 1px solid #ddd; + border-left-width: 0.4em; + background: #fbfbfb; + padding: 10px; +} + +.panel-body small { + font-size: 12px; + color: #888; +} + +.panel-body h1, +.panel-body h2, +.panel-body h3, +.panel-body h4, +.panel-body h5, +.panel-body h6 { + font-size: 18px; + font-weight: 700; + color: #1478f0; + border-left: 5px solid #1478f0; + padding-left: 10px; + margin: 30px 0; +} + +.panel-body h2 { + font-size: 1.2em; +} + +.panel-body .typo p, +.panel-body .typo pre, +.panel-body .typo ul, +.panel-body .typo ol, +.panel-body .typo dl, +.panel-body .typo form, +.panel-body .typo hr, +.panel-body .typo table, +.panel-body .typo-p, +.panel-body .typo-pre, +.panel-body .typo-ul, +.panel-body .typo-ol, +.panel-body .typo-dl, +.panel-body .typo-form, +.panel-body .typo-hr, +.panel-body .typo-table { + margin-bottom: 15px; + line-height: 25px; +} + +.panel-body .typo h1, +.panel-body .typo h2, +.panel-body .typo h3, +.panel-body .typo h4, +.panel-body .typo h5, +.panel-body .typo h6, +.panel-body .typo-h1, +.panel-body .typo-h2, +.panel-body .typo-h3, +.panel-body .typo-h4, +.panel-body .typo-h5, +.panel-body .typo-h6 { + margin-bottom: 0.4em; + line-height: 1.5; +} + +.panel-body .typo h1, +.panel-body .typo-h1 { + font-size: 1.8em; +} + +.panel-body .typo h2, +.panel-body .typo-h2 { + font-size: 1.6em; +} + +.panel-body .typo h3, +.panel-body .typo-h3 { + font-size: 1.4em; +} + +.panel-body .typo h4, +.panel-body .typo-h0 { + font-size: 1.2em; +} + +.panel-body .typo h5, +.panel-body .typo h6, +.panel-body .typo-h5, +.panel-body .typo-h6 { + font-size: 1em; +} + +.panel-body .typo ul, +.panel-body .typo-ul { + margin-left: 1.3em; + list-style: disc; +} + +.panel-body .typo ol, +.panel-body .typo-ol { + list-style: decimal; + margin-left: 1.9em; +} + +.panel-body .typo li ul, +.panel-body .typo li ol, +.panel-body .typo-ul ul, +.panel-body .typo-ul ol, +.panel-body .typo-ol ul, +.panel-body .typo-ol ol { + margin-top: 0; + margin-bottom: 0; + margin-left: 2em; +} + +.panel-body .typo li ul, +.panel-body .typo-ul ul, +.panel-body .typo-ol ul { + list-style: circle; +} + +.panel-body .typo table th, +.panel-body .typo table td, +.panel-body .typo-table th, +.panel-body .typo-table td { + border: 1px solid #ddd; + padding: 5px 10px; +} + +.panel-body .typo table th, +.panel-body .typo-table th { + background: #fbfbfb; +} + +.panel-body .typo table thead th, +.panel-body .typo-table thead th { + background: #f1f1f1; +} diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.eot b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.eot new file mode 100755 index 0000000000000000000000000000000000000000..b144ba0bd949de3c0f87abdd78b517067169884f Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.eot differ diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.json b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.json new file mode 100755 index 0000000000000000000000000000000000000000..0808be0572527dc1fb69ac971235d12069adec7e --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.json @@ -0,0 +1,1277 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M704 832v-37.004c151.348-61.628 256-193.82 256-346.996 0-212.078-200.576-384-448-384s-448 171.922-448 384c0 153.176 104.654 285.368 256 346.996v37.004h-192l-64-96v224h320v-222.812c-100.9-51.362-170.666-161.54-170.666-289.188 0-176.732 133.718-320 298.666-320 164.948 0 298.666 143.268 298.666 320 0 127.648-69.766 237.826-170.666 289.188v222.812h320v-224l-64 96h-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57376, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 0, + "order": 1, + "prevSize": 32, + "code": 57376, + "name": "charmap", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M256 64v896l256-256 256 256v-896h-512zM704 789.49l-192-192-192 192v-661.49h384v661.49z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57363, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 1, + "order": 2, + "prevSize": 32, + "code": 57363, + "name": "bookmark", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM800 838c-9.724 0-19.45-3.708-26.87-11.13l-128-127.998c-14.844-14.84-14.844-38.898 0-53.738 14.84-14.844 38.896-14.844 53.736 0l128 128c14.844 14.84 14.844 38.896 0 53.736-7.416 7.422-17.142 11.13-26.866 11.13zM608 960c-17.674 0-32-14.326-32-32v-128c0-17.674 14.326-32 32-32s32 14.326 32 32v128c0 17.674-14.326 32-32 32zM928 640h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32h128c17.674 0 32 14.326 32 32s-14.326 32-32 32zM224 186c9.724 0 19.45 3.708 26.87 11.13l128 128c14.842 14.84 14.842 38.898 0 53.738-14.84 14.844-38.898 14.844-53.738 0l-128-128c-14.842-14.84-14.842-38.898 0-53.738 7.418-7.422 17.144-11.13 26.868-11.13zM416 64c17.674 0 32 14.326 32 32v128c0 17.674-14.326 32-32 32s-32-14.326-32-32v-128c0-17.674 14.326-32 32-32zM96 384h128c17.674 0 32 14.326 32 32s-14.326 32-32 32h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57362, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 2, + "order": 3, + "prevSize": 32, + "code": 57362, + "name": "link", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM352 710c-9.724 0-19.45-3.71-26.87-11.128-14.84-14.84-14.84-38.898 0-53.738l320-320c14.84-14.84 38.896-14.84 53.736 0 14.844 14.84 14.844 38.9 0 53.74l-320 320c-7.416 7.416-17.142 11.126-26.866 11.126z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57361, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 3, + "order": 4, + "prevSize": 32, + "code": 57361, + "name": "unlink", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M576 281.326v-217.326l336.002 336-336.002 336v-222.096c-390.906-9.17-315 247.096-256 446.096-288-320-212.092-690.874 256-678.674z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57360, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 4, + "order": 5, + "prevSize": 32, + "code": 57360, + "name": "redo", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M704 960c59-199 134.906-455.266-256-446.096v222.096l-336.002-336 336.002-336v217.326c468.092-12.2 544 358.674 256 678.674z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57359, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 5, + "order": 6, + "prevSize": 32, + "code": 57359, + "name": "undo", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M256.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.954 10.578-19.034 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498zM768.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.956 10.578-19.036 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57358, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 6, + "order": 7, + "prevSize": 32, + "code": 57358, + "name": "blockquote", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM384 576h576v128h-576zM384 384h576v128h-576zM64 768h896v128h-896zM64 384l224 160-224 160z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57356, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 7, + "order": 8, + "prevSize": 32, + "code": 57356, + "name": "indent", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h576v128h-576zM64 384h576v128h-576zM64 768h896v128h-896zM960 384l-224 160 224 160z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57357, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 8, + "order": 9, + "prevSize": 32, + "code": 57357, + "name": "outdent", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM320 530v-146h-64v-320h-128v64h64v256h-64v64h128v50l-128 60v146h128v64h-128v64h128v64h-128v64h192v-320h-128v-50z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57355, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 9, + "order": 10, + "prevSize": 32, + "code": 57355, + "name": "numlist", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM128 192c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 512c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 832c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57354, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 10, + "order": 11, + "prevSize": 32, + "code": 57354, + "name": "bullist", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M888 384h-56v-256h64v-64h-320v64h64v256h-256v-256h64v-64h-320v64h64v256h-56c-39.6 0-72 32.4-72 72v432c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-312h128v312c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-432c0-39.6-32.4-72-72-72zM348 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM860 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57353, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 11, + "order": 12, + "prevSize": 32, + "code": 57353, + "name": "searchreplace", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h384l192-192v-384h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM704 869.49v-101.49h101.49l-101.49 101.49zM832 704h-192v192h-256v-448h448v256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57352, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 12, + "order": 13, + "prevSize": 32, + "code": 57352, + "name": "paste", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M832 320h-192v-64l-192-192h-384v704h384v192h576v-448l-192-192zM832 410.51l101.49 101.49h-101.49v-101.49zM448 154.51l101.49 101.49h-101.49v-101.49zM128 128h256v192h192v384h-448v-576zM960 896h-448v-128h128v-384h128v192h192v320z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57393, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 13, + "order": 14, + "prevSize": 32, + "code": 57393, + "name": "copy", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M960 512h-265.876c-50.078-35.42-114.43-54.86-182.124-54.86-89.206 0-164.572-50.242-164.572-109.712 0-59.47 75.366-109.714 164.572-109.714 75.058 0 140.308 35.576 159.12 82.286h113.016c-7.93-50.644-37.58-97.968-84.058-132.826-50.88-38.16-117.676-59.174-188.078-59.174-70.404 0-137.196 21.014-188.074 59.174-54.788 41.090-86.212 99.502-86.212 160.254s31.424 119.164 86.212 160.254c1.956 1.466 3.942 2.898 5.946 4.316h-265.872v64h512.532c58.208 17.106 100.042 56.27 100.042 100.572 0 59.468-75.368 109.71-164.572 109.71-75.060 0-140.308-35.574-159.118-82.286h-113.016c7.93 50.64 37.582 97.968 84.060 132.826 50.876 38.164 117.668 59.18 188.072 59.18 70.402 0 137.198-21.016 188.074-59.174 54.79-41.090 86.208-99.502 86.208-160.254 0-35.298-10.654-69.792-30.294-100.572h204.012v-64z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57389, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 19, + "order": 15, + "prevSize": 32, + "code": 57389, + "name": "strikethrough", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M192 832h576v64h-576v-64zM640 128v384c0 31.312-14.7 61.624-41.39 85.352-30.942 27.502-73.068 42.648-118.61 42.648-45.544 0-87.668-15.146-118.608-42.648-26.692-23.728-41.392-54.040-41.392-85.352v-384h-128v384c0 141.382 128.942 256 288 256s288-114.618 288-256v-384h-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57388, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 20, + "order": 16, + "prevSize": 32, + "code": 57388, + "name": "underline", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M832 128v64h-144l-256 640h144v64h-448v-64h144l256-640h-144v-64h448z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57387, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 21, + "order": 17, + "prevSize": 32, + "code": 57387, + "name": "italic", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M625.442 494.182c48.074-38.15 78.558-94.856 78.558-158.182 0-114.876-100.29-208-224-208h-224v768h288c123.712 0 224-93.124 224-208 0-88.196-59.118-163.562-142.558-193.818zM384 304c0-26.51 21.49-48 48-48h67.204c42.414 0 76.796 42.98 76.796 96s-34.382 96-76.796 96h-115.204v-144zM547.2 768h-115.2c-26.51 0-48-21.49-48-48v-144h163.2c42.418 0 76.8 42.98 76.8 96s-34.382 96-76.8 96z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57386, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 22, + "order": 18, + "prevSize": 32, + "code": 57386, + "name": "bold", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M850.746 242.746l-133.492-133.49c-24.888-24.892-74.054-45.256-109.254-45.256h-416c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-544c0-35.2-20.366-84.364-45.254-109.254zM805.49 287.998c6.792 6.796 13.792 19.162 18.894 32.002h-184.384v-184.386c12.84 5.1 25.204 12.1 32 18.896l133.49 133.488zM831.884 896h-639.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h383.886v256h256v511.884c-0.034 0.040-0.076 0.082-0.116 0.116z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57345, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 23, + "order": 19, + "prevSize": 32, + "code": 57345, + "name": "newdocument", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M960 880v-591.938l-223.938-224.062h-592.062c-44.182 0-80 35.816-80 80v736c0 44.184 35.818 80 80 80h736c44.184 0 80-35.816 80-80zM576 192h64v192h-64v-192zM704 832h-384v-255.882c0.034-0.042 0.076-0.082 0.116-0.118h383.77c0.040 0.036 0.082 0.076 0.116 0.118l-0.002 255.882zM832 832h-64v-256c0-35.2-28.8-64-64-64h-384c-35.2 0-64 28.8-64 64v256h-64v-640h64v192c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-171.010l128 128.072v490.938z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57344, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 24, + "order": 20, + "prevSize": 32, + "code": 57344, + "name": "save", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M64 192v704h896v-704h-896zM384 640v-128h256v128h-256zM640 704v128h-256v-128h256zM640 320v128h-256v-128h256zM320 320v128h-192v-128h192zM128 512h192v128h-192v-128zM704 512h192v128h-192v-128zM704 448v-128h192v128h-192zM128 704h192v128h-192v-128zM704 832v-128h192v128h-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57371, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 25, + "order": 21, + "prevSize": 32, + "code": 57371, + "name": "table", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M512 140c99.366 0 192.782 38.694 263.042 108.956s108.958 163.678 108.958 263.044-38.696 192.782-108.958 263.042-163.676 108.958-263.042 108.958-192.782-38.696-263.044-108.958-108.956-163.676-108.956-263.042 38.694-192.782 108.956-263.044 163.678-108.956 263.044-108.956zM512 64c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448v0zM320 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM576 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM512 656c-101.84 0-192.56-36.874-251.166-94.328 23.126 117.608 126.778 206.328 251.166 206.328 124.388 0 228.040-88.72 251.168-206.328-58.608 57.454-149.328 94.328-251.168 94.328z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57377, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 26, + "order": 22, + "prevSize": 32, + "code": 57377, + "name": "emoticons", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M480 384l-192-192 128-128h-352v352l128-128 192 192zM640 480l192-192 128 128v-352h-352l128 128-192 192zM544 640l192 192-128 128h352v-352l-128 128-192-192zM384 544l-192 192-128-128v352h352l-128-128 192-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57379, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 27, + "order": 23, + "prevSize": 32, + "code": 57379, + "name": "fullscreen", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M64 448h896v128h-896z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57372, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 28, + "order": 24, + "prevSize": 32, + "code": 57372, + "name": "hr", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M64 768h512v128h-512v-128zM768 192h-220.558l-183.766 512h-132.288l183.762-512h-223.15v-128h576v128zM929.774 896l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774-62.226 62.226z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57373, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 29, + "order": 25, + "prevSize": 32, + "code": 57373, + "name": "removeformat", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M256 128h512v128h-512v-128zM896 320h-768c-35.2 0-64 28.8-64 64v256c0 35.2 28.796 64 64 64h128v192h512v-192h128c35.2 0 64-28.8 64-64v-256c0-35.2-28.8-64-64-64zM704 832h-384v-256h384v256zM910.4 416c0 25.626-20.774 46.4-46.398 46.4s-46.402-20.774-46.402-46.4 20.778-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57378, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 30, + "order": 26, + "prevSize": 32, + "code": 57378, + "name": "print", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M384 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57390, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 31, + "order": 27, + "prevSize": 32, + "code": 57390, + "name": "visualchars", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M448 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM64 896l224-192-224-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57391, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 32, + "order": 28, + "prevSize": 32, + "code": 57391, + "name": "ltr", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M416 704l-192-192 192-192-64-64-256 256 256 256zM672 256l-64 64 192 192-192 192 64 64 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57367, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 38, + "order": 29, + "prevSize": 32, + "code": 57367, + "name": "code", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M448 704h128v128h-128v-128zM704 256c35.346 0 64 28.654 64 64v166l-228 154h-92v-64l192-128v-64h-320v-128h384zM512 64c-119.666 0-232.166 46.6-316.784 131.216-84.614 84.618-131.216 197.118-131.216 316.784 0 119.664 46.602 232.168 131.216 316.784 84.618 84.616 197.118 131.216 316.784 131.216 119.664 0 232.168-46.6 316.784-131.216 84.616-84.616 131.216-197.12 131.216-316.784 0-119.666-46.6-232.166-131.216-316.784-84.616-84.616-197.12-131.216-316.784-131.216z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57366, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 39, + "order": 30, + "prevSize": 32, + "code": 57366, + "name": "help", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM896 831.884c-0.012 0.014-0.030 0.028-0.042 0.042l-191.958-319.926-160 128-224-288-191.968 479.916c-0.010-0.010-0.022-0.022-0.032-0.032v-639.77c0.034-0.040 0.076-0.082 0.114-0.114h767.77c0.040 0.034 0.082 0.076 0.116 0.116v639.768zM640 352c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96-53.019 0-96 42.981-96 96z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57364, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 40, + "order": 31, + "prevSize": 32, + "code": 57364, + "name": "image", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM256 832h-128v-128h128v128zM256 576h-128v-128h128v128zM256 320h-128v-128h128v128zM704 832h-384v-640h384v640zM896 832h-128v-128h128v128zM896 576h-128v-128h128v128zM896 320h-128v-128h128v128zM384 320v384l288-192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57365, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 41, + "order": 32, + "prevSize": 32, + "code": 57365, + "name": "media", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M77.798 304.624l81.414 50.882c50.802-81.114 128.788-143.454 221.208-174.246l-30.366-91.094c-113.748 37.898-209.728 114.626-272.256 214.458zM673.946 90.166l-30.366 91.094c92.422 30.792 170.404 93.132 221.208 174.248l81.412-50.882c-62.526-99.834-158.506-176.562-272.254-214.46zM607.974 704.008c-4.808 0-9.692-1.090-14.286-3.386l-145.688-72.844v-211.778c0-17.672 14.328-32 32-32s32 14.328 32 32v172.222l110.31 55.156c15.806 7.902 22.214 27.124 14.31 42.932-5.604 11.214-16.908 17.696-28.646 17.698zM512 192c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384 0-212.078-171.922-384-384-384zM512 864c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.058 0 288 128.942 288 288 0 159.058-128.942 288-288 288z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57368, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 42, + "order": 33, + "prevSize": 32, + "code": 57368, + "name": "insertdatetime", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M64 455.746c45.318-49.92 97.162-92.36 153.272-125.124 90.332-52.744 192.246-80.622 294.728-80.622 102.48 0 204.396 27.878 294.726 80.624 56.112 32.764 107.956 75.204 153.274 125.124v-117.432c-33.010-28.118-68.124-53.14-104.868-74.594-105.006-61.314-223.658-93.722-343.132-93.722s-238.128 32.408-343.134 93.72c-36.742 21.454-71.856 46.478-104.866 74.596v117.43zM512 320c-183.196 0-345.838 100.556-448 256 102.162 155.448 264.804 256 448 256 183.196 0 345.838-100.552 448-256-102.162-155.444-264.804-256-448-256zM512 512c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.348 28.654-64 64-64s64 28.652 64 64zM728.066 696.662c-67.434 39.374-140.128 59.338-216.066 59.338s-148.632-19.964-216.066-59.338c-51.554-30.104-98.616-71.31-138.114-120.662 39.498-49.35 86.56-90.558 138.116-120.66 13.276-7.752 26.758-14.74 40.426-20.982-10.512 23.742-16.362 50.008-16.362 77.642 0 106.040 85.962 192 192 192 106.040 0 192-85.96 192-192 0-27.634-5.85-53.9-16.36-77.642 13.668 6.244 27.15 13.23 40.426 20.982 51.554 30.102 98.616 71.31 138.116 120.66-39.498 49.352-86.56 90.558-138.116 120.662z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57369, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 43, + "order": 34, + "prevSize": 32, + "code": 57369, + "name": "preview", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M651.168 283.834c-24.612-81.962-28.876-91.834-107.168-91.834h-64c-79.618 0-82.664 10.152-108.418 96 0 0.002 0 0.002-0.002 0.004l-143.998 479.996h113.636l57.6-192h226.366l57.6 192h113.63l-145.246-484.166zM437.218 448l38.4-136c10.086-33.618 36.38-30 36.38-30s26.294-3.618 36.38 30h0.004l38.4 136h-149.564z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57370, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 44, + "order": 35, + "prevSize": 32, + "code": 57370, + "name": "forecolor", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57384, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 45, + "order": 36, + "prevSize": 32, + "code": 57384, + "name": "restoredraft", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57346, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 46, + "order": 37, + "prevSize": 32, + "code": 57346, + "name": "fullpage", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57375, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 47, + "order": 38, + "prevSize": 32, + "code": 57375, + "name": "superscript", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57374, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 48, + "order": 39, + "prevSize": 32, + "code": 57374, + "name": "subscript", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h576v-576h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM832 896h-448v-448h448v448zM448 512v128h32l32-64h64v192h-48v64h160v-64h-48v-192h64l32 64h32v-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pastetext" + ], + "defaultCode": 57397, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 49, + "order": 40, + "prevSize": 32, + "code": 57397, + "name": "pastetext", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 39 + }, + { + "icon": { + "paths": [ + "M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "resize", + "dots" + ], + "defaultCode": 57394, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 50, + "order": 41, + "prevSize": 32, + "code": 57394, + "name": "resize", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 40 + }, + { + "icon": { + "paths": [ + "M928 128h-416l-32-64h-352l-64 128h896zM840.34 704h87.66l32-448h-896l64 640h356.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM874.996 849.75l-134.496-110.692c17.454-28.922 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l110.692 134.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM576 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "browse" + ], + "defaultCode": 57396, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 51, + "order": 42, + "prevSize": 32, + "code": 57396, + "name": "browse", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 41 + }, + { + "icon": { + "paths": [ + "M864.408 670.132c-46.47-46.47-106.938-68.004-161.082-62.806l-63.326-63.326 192-192c0 0 128-128 0-256l-320 320-320-320c-128 128 0 256 0 256l192 192-63.326 63.326c-54.144-5.198-114.61 16.338-161.080 62.806-74.98 74.98-85.112 186.418-22.626 248.9 62.482 62.482 173.92 52.354 248.9-22.626 46.47-46.468 68.002-106.938 62.806-161.080l63.326-63.326 63.328 63.328c-5.196 54.144 16.336 114.61 62.806 161.078 74.978 74.98 186.418 85.112 248.898 22.626 62.488-62.482 52.356-173.918-22.624-248.9zM353.124 758.578c-2.212 24.332-15.020 49.826-35.14 69.946-22.212 22.214-51.080 35.476-77.218 35.476-10.524 0-25.298-2.228-35.916-12.848-21.406-21.404-17.376-73.132 22.626-113.136 22.212-22.214 51.080-35.476 77.218-35.476 10.524 0 25.298 2.228 35.916 12.848 13.112 13.11 13.47 32.688 12.514 43.19zM512 608c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64zM819.152 851.152c-10.62 10.62-25.392 12.848-35.916 12.848-26.138 0-55.006-13.262-77.218-35.476-20.122-20.12-32.928-45.614-35.138-69.946-0.958-10.502-0.6-30.080 12.514-43.192 10.618-10.622 25.39-12.848 35.916-12.848 26.136 0 55.006 13.262 77.216 35.474 40.004 40.008 44.032 91.736 22.626 113.14z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57351, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 14, + "order": 43, + "prevSize": 32, + "code": 57351, + "name": "cut", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 42 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM64 384h896v128h-896zM64 768h896v128h-896z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57350, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 15, + "order": 44, + "prevSize": 32, + "code": 57350, + "name": "alignjustify", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 43 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM256 384h512v128h-512zM256 768h512v128h-512z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57348, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 16, + "order": 45, + "prevSize": 32, + "code": 57348, + "name": "aligncenter", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 44 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM384 384h576v128h-576zM384 768h576v128h-576z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57349, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 17, + "order": 46, + "prevSize": 32, + "code": 57349, + "name": "alignright", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 45 + }, + { + "icon": { + "paths": [ + "M64 192h896v128h-896zM64 576h896v128h-896zM64 384h576v128h-576zM64 768h576v128h-576z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57347, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 18, + "order": 47, + "prevSize": 32, + "code": 57347, + "name": "alignleft", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 46 + }, + { + "icon": { + "paths": [ + "M320 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM960 512l-224 192 224 192z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57392, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 33, + "order": 48, + "prevSize": 32, + "code": 57392, + "name": "rtl", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 47 + }, + { + "icon": { + "paths": [ + "M512 384h128v64h-128zM512 768h128v64h-128zM576 576h128v64h-128zM768 576v192h-64v64h128v-256zM384 576h128v64h-128zM320 768h128v64h-128zM320 384h128v64h-128zM192 192v256h64v-192h64v-64zM704 448h128v-256h-64v192h-64zM64 64v896h896v-896h-896zM896 896h-768v-768h768v768zM192 576v256h64v-192h64v-64zM576 192h128v64h-128zM384 192h128v64h-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57382, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 34, + "order": 49, + "prevSize": 32, + "code": 57382, + "name": "template", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 48 + }, + { + "icon": { + "paths": [ + "M816 64l16 384h-640l16-384h32l16 320h512l16-320h32zM208 960l-16-320h640l-16 320h-32l-16-256h-512l-16 256h-32zM64 512h128v64h-128zM256 512h128v64h-128zM448 512h128v64h-128zM640 512h128v64h-128zM832 512h128v64h-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57383, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 35, + "order": 50, + "prevSize": 32, + "code": 57383, + "name": "pagebreak", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 49 + }, + { + "icon": { + "paths": [ + "M960 128v-64h-192c-35.202 0-64 28.8-64 64v320c0 15.856 5.858 30.402 15.496 41.614l-303.496 260.386-142-148-82 70 224 288 416-448h128v-64h-192v-320h192zM256 512h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192h128v192zM128 256v-128h128v128h-128zM640 448v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64zM448 128h128v128h-128v-128zM448 320h128v128h-128v-128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57380, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 36, + "order": 51, + "prevSize": 32, + "code": 57380, + "name": "spellcheck", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 50 + }, + { + "icon": { + "paths": [ + "M448 512h-128v-128h128v-128h128v128h128v128h-128v128h-128v-128zM960 576v320h-896v-320h128v192h640v-192h128z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57381, + "grid": 0 + }, + "attrs": [], + "properties": { + "id": 37, + "order": 52, + "prevSize": 32, + "code": 57381, + "name": "nonbreaking", + "ligatures": "" + }, + "setIdx": 0, + "setId": 2, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M256 352v-128c0-53.020 42.98-96 96-96h32v-128h-32c-123.712 0-224 100.288-224 224v128c0 53.020-42.98 96-96 96h-32v128h32c53.020 0 96 42.98 96 96v128c0 123.71 100.288 224 224 224h32v-128h-32c-53.020 0-96-42.98-96-96v-128c0-62.684-25.758-119.342-67.254-160 41.496-40.658 67.254-97.316 67.254-160z", + "M1024 352v-128c0-53.020-42.98-96-96-96h-32v-128h32c123.71 0 224 100.288 224 224v128c0 53.020 42.98 96 96 96h32v128h-32c-53.020 0-96 42.98-96 96v128c0 123.71-100.29 224-224 224h-32v-128h32c53.020 0 96-42.98 96-96v-128c0-62.684 25.758-119.342 67.254-160-41.496-40.658-67.254-97.316-67.254-160z", + "M768 320.882c0 70.692-57.308 128-128 128s-128-57.308-128-128c0-70.692 57.308-128 128-128s128 57.308 128 128z", + "M640 511.118c-70.692 0-128 57.308-128 128 0 68.732 32 123.216 130.156 127.852-29.19 41.126-73.156 57.366-130.156 62.7v76c0 0 256 22.332 256-266.55-0.25-70.694-57.306-128.002-128-128.002z" + ], + "width": 1280, + "attrs": [], + "isMulticolor": false, + "tags": [ + "code", + "semicolon", + "curly-braces" + ], + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 1, + "id": 0, + "prevSize": 16, + "code": 58883, + "name": "codesample" + }, + "setIdx": 1, + "setId": 1, + "iconIdx": 0 + } + ], + "height": 1024, + "metadata": { + "name": "tinymce-small" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "icon-", + "metadata": { + "fontFamily": "tinymce-small", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "showMetrics": false, + "showMetadata": false, + "showVersion": false, + "embed": false + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 4473924, + "bgColor": 16777215 + }, + "historySize": 100, + "showCodes": true + } +} \ No newline at end of file diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.svg b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.svg new file mode 100755 index 0000000000000000000000000000000000000000..b4ee6f4088b2a4de25918f2df2a72f16d805eeaa --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.svg @@ -0,0 +1,63 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="tinymce-small" horiz-adv-x="1024"> +<font-face units-per-em="1024" ascent="960" descent="-64" /> +<missing-glyph horiz-adv-x="1024" /> +<glyph unicode=" " horiz-adv-x="512" d="" /> +<glyph unicode="" glyph-name="save" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" /> +<glyph unicode="" glyph-name="newdocument" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" /> +<glyph unicode="" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" /> +<glyph unicode="" glyph-name="alignleft" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" /> +<glyph unicode="" glyph-name="aligncenter" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" /> +<glyph unicode="" glyph-name="alignright" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" /> +<glyph unicode="" glyph-name="alignjustify" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" /> +<glyph unicode="" glyph-name="cut" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" /> +<glyph unicode="" glyph-name="paste" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" /> +<glyph unicode="" glyph-name="searchreplace" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" /> +<glyph unicode="" glyph-name="bullist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" /> +<glyph unicode="" glyph-name="numlist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" /> +<glyph unicode="" glyph-name="indent" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" /> +<glyph unicode="" glyph-name="outdent" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" /> +<glyph unicode="" glyph-name="blockquote" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" /> +<glyph unicode="" glyph-name="undo" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" /> +<glyph unicode="" glyph-name="redo" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" /> +<glyph unicode="" glyph-name="unlink" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" /> +<glyph unicode="" glyph-name="link" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" /> +<glyph unicode="" glyph-name="bookmark" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" /> +<glyph unicode="" glyph-name="image" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" /> +<glyph unicode="" glyph-name="media" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" /> +<glyph unicode="" glyph-name="help" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" /> +<glyph unicode="" glyph-name="code" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" /> +<glyph unicode="" glyph-name="insertdatetime" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" /> +<glyph unicode="" glyph-name="preview" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" /> +<glyph unicode="" glyph-name="forecolor" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" /> +<glyph unicode="" glyph-name="table" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" /> +<glyph unicode="" glyph-name="hr" d="M64 512h896v-128h-896z" /> +<glyph unicode="" glyph-name="removeformat" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" /> +<glyph unicode="" glyph-name="subscript" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="" glyph-name="superscript" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="" glyph-name="charmap" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" /> +<glyph unicode="" glyph-name="emoticons" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" /> +<glyph unicode="" glyph-name="print" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" /> +<glyph unicode="" glyph-name="fullscreen" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" /> +<glyph unicode="" glyph-name="spellcheck" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" /> +<glyph unicode="" glyph-name="nonbreaking" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" /> +<glyph unicode="" glyph-name="template" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" /> +<glyph unicode="" glyph-name="pagebreak" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" /> +<glyph unicode="" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" /> +<glyph unicode="" glyph-name="bold" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" /> +<glyph unicode="" glyph-name="italic" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" /> +<glyph unicode="" glyph-name="underline" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" /> +<glyph unicode="" glyph-name="strikethrough" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" /> +<glyph unicode="" glyph-name="visualchars" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" /> +<glyph unicode="" glyph-name="ltr" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" /> +<glyph unicode="" glyph-name="rtl" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" /> +<glyph unicode="" glyph-name="copy" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" /> +<glyph unicode="" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" /> +<glyph unicode="" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" /> +<glyph unicode="" glyph-name="pastetext" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" /> +<glyph unicode="" glyph-name="codesample" d="M200.015 577.994v103.994c0 43.077 34.919 77.997 77.997 77.997h26v103.994h-26c-100.51 0-181.991-81.481-181.991-181.991v-103.994c0-43.077-34.919-77.997-77.997-77.997h-26v-103.994h26c43.077 0 77.997-34.919 77.997-77.997v-103.994c0-100.509 81.481-181.991 181.991-181.991h26v103.994h-26c-43.077 0-77.997 34.919-77.997 77.997v103.994c0 50.927-20.928 96.961-54.642 129.994 33.714 33.032 54.642 79.065 54.642 129.994zM823.985 577.994v103.994c0 43.077-34.919 77.997-77.997 77.997h-26v103.994h26c100.509 0 181.991-81.481 181.991-181.991v-103.994c0-43.077 34.919-77.997 77.997-77.997h26v-103.994h-26c-43.077 0-77.997-34.919-77.997-77.997v-103.994c0-100.509-81.482-181.991-181.991-181.991h-26v103.994h26c43.077 0 77.997 34.919 77.997 77.997v103.994c0 50.927 20.928 96.961 54.642 129.994-33.714 33.032-54.642 79.065-54.642 129.994zM615.997 603.277c0-57.435-46.56-103.994-103.994-103.994s-103.994 46.56-103.994 103.994c0 57.435 46.56 103.994 103.994 103.994s103.994-46.56 103.994-103.994zM512 448.717c-57.435 0-103.994-46.56-103.994-103.994 0-55.841 26-100.107 105.747-103.875-23.715-33.413-59.437-46.608-105.747-50.94v-61.747c0 0 207.991-18.144 207.991 216.561-0.202 57.437-46.56 103.996-103.994 103.996z" /> +</font></defs></svg> \ No newline at end of file diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.ttf b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a983e2dc4cb30880fffe00e1f0879be4d95eb4cc Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.ttf differ diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.woff b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.woff new file mode 100755 index 0000000000000000000000000000000000000000..d8962df76e50488c6520c0dadf3220080aaae9fb Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/fonts/tinymce-small.woff differ diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce.eot b/static/tinymce1.3/skins/lightgray/fonts/tinymce.eot new file mode 100755 index 0000000000000000000000000000000000000000..f99c13f32f5c968849f08a3d8a399157bfb0cccb Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/fonts/tinymce.eot differ diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce.json b/static/tinymce1.3/skins/lightgray/fonts/tinymce.json new file mode 100755 index 0000000000000000000000000000000000000000..a05fc1d237d2f6d5d9c915de7756cd5ab8c2eb15 --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/fonts/tinymce.json @@ -0,0 +1,3469 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M889.68 166.32c-93.608-102.216-228.154-166.32-377.68-166.32-282.77 0-512 229.23-512 512h96c0-229.75 186.25-416 416-416 123.020 0 233.542 53.418 309.696 138.306l-149.696 149.694h352v-352l-134.32 134.32z", + "M928 512c0 229.75-186.25 416-416 416-123.020 0-233.542-53.418-309.694-138.306l149.694-149.694h-352v352l134.32-134.32c93.608 102.216 228.154 166.32 377.68 166.32 282.77 0 512-229.23 512-512h-96z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "grid": 16, + "tags": [ + "reload" + ] + }, + "attrs": [ + {}, + {} + ], + "properties": { + "order": 647, + "id": 120, + "name": "reload", + "prevSize": 32, + "code": 59654 + }, + "setIdx": 0, + "setId": 5, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M0 64h128v128h-128v-128z", + "M192 64h832v128h-832v-128z", + "M0 448h128v128h-128v-128z", + "M192 448h832v128h-832v-128z", + "M0 832h128v128h-128v-128z", + "M192 832h832v128h-832v-128z", + "M192 256h128v128h-128v-128z", + "M384 256h640v128h-640v-128z", + "M192 640h128v128h-128v-128z", + "M384 640h640v128h-640v-128z" + ], + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "toc" + ], + "grid": 16 + }, + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "properties": { + "order": 646, + "id": 1, + "name": "toc", + "prevSize": 32, + "code": 59649 + }, + "setIdx": 0, + "setId": 6, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M576.234 289.27l242.712-81.432 203.584 606.784-242.712 81.432zM0 896h256v-704h-256v704zM64 320h128v64h-128v-64zM320 896h256v-704h-256v704zM384 320h128v64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "books", + "library", + "archive" + ], + "defaultCode": 57458, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 523, + "id": 1722, + "prevSize": 32, + "code": 59665, + "name": "books", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "minus", + "minimize", + "subtract" + ], + "defaultCode": 58229, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 597, + "id": 1723, + "prevSize": 32, + "code": 59705, + "name": "minus", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M992 384h-352v-352c0-17.672-14.328-32-32-32h-192c-17.672 0-32 14.328-32 32v352h-352c-17.672 0-32 14.328-32 32v192c0 17.672 14.328 32 32 32h352v352c0 17.672 14.328 32 32 32h192c17.672 0 32-14.328 32-32v-352h352c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "plus", + "add", + "sum" + ], + "defaultCode": 58230, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 598, + "id": 1724, + "prevSize": 32, + "code": 59706, + "name": "plus", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M521.6 44.8l-67.2 67.2-86.4-86.4-86.4 86.4 86.4 86.4-368 368 432 432 518.4-518.4-428.8-435.2zM435.2 825.6l-262.4-262.4 35.2-35.2 576-51.2-348.8 348.8zM953.6 550.4c-6.4 6.4-16 16-28.8 32-28.8 32-41.6 64-41.6 89.6v0 0 0 0 0 0 0c0 16 6.4 35.2 22.4 48 12.8 12.8 32 22.4 48 22.4s35.2-6.4 48-22.4 22.4-32 22.4-48v0 0 0 0 0 0 0c0-25.6-12.8-54.4-41.6-89.6-9.6-16-22.4-25.6-28.8-32v0z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "fill" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 599, + "id": 1695, + "prevSize": 32, + "code": 59650, + "name": "fill" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M0 694.4h1024v128h-1024v-128z", + "M0 928h1024v64h-1024v-64z", + "M0 393.6h1024v192h-1024v-192z", + "M0 32h1024v256h-1024v-256z" + ], + "attrs": [ + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "borderwidth" + ], + "grid": 16 + }, + "attrs": [ + {}, + {}, + {}, + {} + ], + "properties": { + "order": 524, + "id": 1696, + "prevSize": 32, + "code": 59651, + "name": "borderwidth" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M739.2 332.8l-502.4 502.4h-185.6v-185.6l502.4-502.4 185.6 185.6zM803.2 272l-185.6-185.6 67.2-67.2c22.4-22.4 54.4-22.4 76.8 0l108.8 108.8c22.4 22.4 22.4 54.4 0 76.8l-67.2 67.2zM41.6 912h940.8v112h-940.8v-112z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "line" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 525, + "id": 1697, + "prevSize": 32, + "code": 59652, + "name": "line" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M0 480h1024v64h-1024v-64z", + "M304 48v339.2h-67.2v-272h-67.2v-67.2z", + "M444.8 265.6v54.4h134.4v67.2h-201.6v-153.6l134.4-64v-54.4h-134.4v-67.2h201.6v153.6z", + "M854.4 48v339.2h-204.8v-67.2h137.6v-67.2h-137.6v-70.4h137.6v-67.2h-137.6v-67.2z", + "M115.2 793.6c3.2-57.6 38.4-83.2 108.8-83.2 38.4 0 67.2 9.6 86.4 25.6s25.6 35.2 25.6 70.4v112c0 25.6 0 28.8 9.6 41.6h-73.6c-3.2-9.6-3.2-9.6-6.4-19.2-22.4 19.2-41.6 25.6-70.4 25.6-54.4 0-89.6-32-89.6-76.8s28.8-70.4 99.2-80l38.4-6.4c16-3.2 22.4-6.4 22.4-16 0-12.8-12.8-22.4-38.4-22.4s-41.6 9.6-44.8 28.8h-67.2zM262.4 844.8c-6.4 3.2-12.8 6.4-25.6 6.4l-25.6 6.4c-25.6 6.4-38.4 16-38.4 28.8 0 16 12.8 25.6 35.2 25.6s41.6-9.6 54.4-32v-35.2z", + "M390.4 624h73.6v112c22.4-16 41.6-22.4 67.2-22.4 64 0 105.6 51.2 105.6 124.8 0 76.8-44.8 134.4-108.8 134.4-32 0-48-9.6-67.2-35.2v28.8h-70.4v-342.4zM460.8 838.4c0 41.6 22.4 70.4 51.2 70.4s51.2-28.8 51.2-70.4c0-44.8-19.2-70.4-51.2-70.4-28.8 0-51.2 28.8-51.2 70.4z", + "M851.2 806.4c-3.2-22.4-19.2-35.2-44.8-35.2-32 0-51.2 25.6-51.2 70.4 0 48 19.2 73.6 51.2 73.6 25.6 0 41.6-12.8 44.8-41.6l70.4 3.2c-9.6 60.8-54.4 96-118.4 96-73.6 0-121.6-51.2-121.6-128 0-80 48-131.2 124.8-131.2 64 0 108.8 35.2 112 96h-67.2z" + ], + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "count" + ], + "grid": 16 + }, + "attrs": [ + {}, + {}, + {}, + {}, + {}, + {}, + {} + ], + "properties": { + "order": 526, + "id": 1698, + "prevSize": 32, + "code": 59653, + "name": "count" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M553.6 656l-118.4-118.4c80-89.6 137.6-195.2 172.8-304h137.6v-92.8h-326.4v-92.8h-92.8v92.8h-326.4v92.8h518.4c-32 89.6-80 176-147.2 249.6-44.8-48-80-99.2-108.8-156.8h-92.8c35.2 76.8 80 147.2 137.6 211.2l-236.8 233.6 67.2 67.2 233.6-233.6 144 144c3.2 0 38.4-92.8 38.4-92.8zM816 419.2h-92.8l-208 560h92.8l51.2-140.8h220.8l51.2 140.8h92.8l-208-560zM691.2 745.6l76.8-201.6 76.8 201.6h-153.6z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "translate" + ], + "grid": 16 + }, + "attrs": [ + {} + ], + "properties": { + "order": 527, + "id": 1699, + "prevSize": 32, + "code": 59655, + "name": "translate" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 7 + }, + { + "icon": { + "paths": [ + "M576 64h128v128h-128v-128z", + "M576 320h128v128h-128v-128z", + "M320 320h128v128h-128v-128z", + "M576 576h128v128h-128v-128z", + "M320 576h128v128h-128v-128z", + "M320 832h128v128h-128v-128z", + "M576 832h128v128h-128v-128z", + "M320 64h128v128h-128v-128z" + ], + "attrs": [ + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + } + ], + "isMulticolor": false, + "tags": [ + "drag" + ], + "grid": 16 + }, + "attrs": [ + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + }, + { + "opacity": 1, + "visibility": false + } + ], + "properties": { + "order": 528, + "id": 1700, + "prevSize": 32, + "code": 59656, + "name": "drag", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 8 + }, + { + "icon": { + "paths": [ + "M1024 590.444l-512-397.426-512 397.428v-162.038l512-397.426 512 397.428zM896 576v384h-256v-256h-256v256h-256v-384l384-288z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "home" + ], + "defaultCode": 57345, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 529, + "id": 1701, + "prevSize": 32, + "code": 59659, + "name": "home", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 9 + }, + { + "icon": { + "paths": [ + "M839.432 199.43c27.492 27.492 50.554 78.672 55.552 120.57h-318.984v-318.984c41.898 4.998 93.076 28.060 120.568 55.552l142.864 142.862zM512 384v-384h-368c-44 0-80 36-80 80v864c0 44 36 80 80 80h672c44 0 80-36 80-80v-560h-384zM576 768v192h-192v-192h-160l256-256 256 256h-160z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "upload" + ], + "defaultCode": 57474, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 530, + "id": 1702, + "prevSize": 32, + "code": 59668, + "name": "upload", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 10 + }, + { + "icon": { + "paths": [ + "M928 64h-832c-52.8 0-96 43.2-96 96v512c0 52.8 43.2 96 96 96h160v256l307.2-256h364.8c52.8 0 96-43.2 96-96v-512c0-52.8-43.2-96-96-96zM896 640h-379.142l-196.858 174.714v-174.714h-192v-448h768v448z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "bubble" + ], + "defaultCode": 57703, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 600, + "id": 1703, + "prevSize": 32, + "code": 59676, + "name": "bubble", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 11 + }, + { + "icon": { + "paths": [ + "M622.826 702.736c-22.11-3.518-22.614-64.314-22.614-64.314s64.968-64.316 79.128-150.802c38.090 0 61.618-91.946 23.522-124.296 1.59-34.054 48.96-267.324-190.862-267.324-239.822 0-192.45 233.27-190.864 267.324-38.094 32.35-14.57 124.296 23.522 124.296 14.158 86.486 79.128 150.802 79.128 150.802s-0.504 60.796-22.614 64.314c-71.22 11.332-337.172 128.634-337.172 257.264h896c0-128.63-265.952-245.932-337.174-257.264z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "user" + ], + "defaultCode": 57733, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 601, + "id": 1704, + "prevSize": 32, + "code": 59677, + "name": "user", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 12 + }, + { + "icon": { + "paths": [ + "M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "lock" + ], + "defaultCode": 57811, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 602, + "id": 1705, + "prevSize": 32, + "code": 59686, + "name": "lock" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 13 + }, + { + "icon": { + "paths": [ + "M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "unlock" + ], + "defaultCode": 57812, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 603, + "id": 1706, + "prevSize": 32, + "code": 59687, + "name": "unlock" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 14 + }, + { + "icon": { + "paths": [ + "M448 128v-16c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576zM256 256v-128h128v128h-128zM832 432c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-576v128h576v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h192v-128h-192v-16zM640 576v-128h128v128h-128zM448 752c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576v-16zM256 896v-128h128v128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "settings" + ], + "defaultCode": 57819, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 604, + "id": 1707, + "prevSize": 32, + "code": 59688, + "name": "settings", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 15 + }, + { + "icon": { + "paths": [ + "M192 1024h640l64-704h-768zM640 128v-128h-256v128h-320v192l64-64h768l64 64v-192h-320zM576 128h-128v-64h128v64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "remove2" + ], + "defaultCode": 57935, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 605, + "id": 1708, + "prevSize": 32, + "code": 59690, + "name": "remove2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 16 + }, + { + "icon": { + "paths": [ + "M384 64h256v256h-256zM384 384h256v256h-256zM384 704h256v256h-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "menu" + ], + "defaultCode": 58025, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 606, + "id": 1709, + "prevSize": 32, + "code": 59693, + "name": "menu", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 17 + }, + { + "icon": { + "paths": [ + "M1009.956 915.76l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648s-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.302 0 96.792-48.708 63.302-108.24zM512 896c-35.346 0-64-28.654-64-64 0-35.348 28.654-64 64-64 35.348 0 64 28.652 64 64 0 35.346-28.652 64-64 64zM556 704h-88l-20-256c0-35.346 28.654-64 64-64s64 28.654 64 64l-20 256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "warning" + ], + "defaultCode": 58198, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 531, + "id": 1710, + "prevSize": 32, + "code": 59696, + "name": "warning" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 18 + }, + { + "icon": { + "paths": [ + "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156 78.572 78.572 183.038 121.844 294.156 121.844 111.118 0 215.584-43.272 294.156-121.844 78.572-78.572 121.844-183.038 121.844-294.156 0-111.118-43.272-215.584-121.844-294.156-78.572-78.572-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "question" + ], + "defaultCode": 58201, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 532, + "id": 1711, + "prevSize": 32, + "code": 59697, + "name": "question", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 19 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384 0 212.078-171.922 384-384 384zM768 576h-192v192h-128v-192h-192v-128h192v-192h128v192h192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pluscircle" + ], + "defaultCode": 58206, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 533, + "id": 1712, + "prevSize": 32, + "code": 59698, + "name": "pluscircle", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 20 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM448 192h128v128h-128v-128zM640 832h-256v-64h64v-256h-64v-64h192v320h64v64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "info" + ], + "defaultCode": 58211, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 534, + "id": 1713, + "prevSize": 32, + "code": 59699, + "name": "info" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 21 + }, + { + "icon": { + "paths": [ + "M1024 736 736 0h-448l-288 288v448l288 288h448l288-288v-448l-288-288zM576 832h-128v-128h128v128zM576 576h-128v-384h128v384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "notice" + ], + "defaultCode": 58218, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 535, + "id": 1714, + "prevSize": 32, + "code": 59700, + "name": "notice" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 22 + }, + { + "icon": { + "paths": [ + "M0 640l192 192 320-320 320 320 192-192-511.998-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowup" + ], + "defaultCode": 58288, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 536, + "id": 1715, + "prevSize": 32, + "code": 59707, + "name": "arrowup", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 23 + }, + { + "icon": { + "paths": [ + "M384 0l-192 192 320 320-320 320 192 192 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowright" + ], + "defaultCode": 58289, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 537, + "id": 1716, + "prevSize": 32, + "code": 59708, + "name": "arrowright", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 24 + }, + { + "icon": { + "paths": [ + "M1024 384l-192-192-320 320-320-320-192 192 512 511.998z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowdown" + ], + "defaultCode": 58290, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 538, + "id": 1717, + "prevSize": 32, + "code": 59709, + "name": "arrowdown", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 25 + }, + { + "icon": { + "paths": [ + "M768 640l-256-256-256 256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowup2" + ], + "defaultCode": 58292, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 539, + "id": 1718, + "prevSize": 32, + "code": 59711, + "name": "arrowup2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 26 + }, + { + "icon": { + "paths": [ + "M256 384l256 256 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrowdown2" + ], + "defaultCode": 58294, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 540, + "id": 1719, + "prevSize": 32, + "code": 59712, + "name": "arrowdown2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 27 + }, + { + "icon": { + "paths": [ + "M256 256l256 256 256-256zM255.996 575.996l256 256 256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "menu2" + ], + "defaultCode": 58393, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 541, + "id": 1720, + "prevSize": 32, + "code": 59713, + "name": "menu2", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 28 + }, + { + "icon": { + "paths": [ + "M704 576l128-128v512h-768v-768h512l-128 128h-256v512h512zM960 64v352l-130.744-130.744-354.746 354.744h-90.51v-90.512l354.744-354.744-130.744-130.744z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "newtab" + ], + "defaultCode": 58492, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 607, + "id": 1721, + "prevSize": 32, + "code": 59745, + "name": "newtab", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 29 + }, + { + "icon": { + "paths": [ + "M960 256v-64l-448 128-448-128v64l320 128v256l-128 448h64l192-448 192 448h64l-128-448v-256zM416 160q0-40 28-68t68-28 68 28 28 68-28 68-68 28-68-28-28-68z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 16, + "tags": [ + "a11y" + ] + }, + "attrs": [], + "properties": { + "order": 608, + "id": 1694, + "prevSize": 32, + "code": 59648, + "name": "a11y" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 30 + }, + { + "icon": { + "paths": [ + "M892.8 982.4l-89.6-89.6c-70.4 80-172.8 131.2-288 131.2-208 0-380.8-166.4-384-377.6 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4s0-3.2 0-6.4v0c0 0 0 0 0-3.2 0 0 0-3.2 0-3.2 3.2-105.6 48-211.2 105.6-304l-192-192 44.8-44.8 182.4 182.4c0 0 0 0 0 0l569.6 569.6c0 0 0 0 0 0l99.2 99.2-48 44.8zM896 633.6c0 0 0 0 0 0 0-3.2 0-6.4 0-6.4-9.6-316.8-384-627.2-384-627.2s-108.8 89.6-208 220.8l70.4 70.4c6.4-9.6 16-22.4 22.4-32 41.6-51.2 83.2-96 115.2-128v0c32 32 73.6 76.8 115.2 128 108.8 137.6 169.6 265.6 172.8 371.2 0 0 0 3.2 0 3.2v0 0c0 3.2 0 3.2 0 6.4s0 3.2 0 3.2v0 0c0 22.4-3.2 41.6-9.6 64l76.8 76.8c16-41.6 28.8-89.6 28.8-137.6 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4s-0-3.2-0-6.4z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "tags": [ + "invert" + ], + "grid": 16, + "defaultCode": 58882 + }, + "attrs": [ + {} + ], + "properties": { + "order": 609, + "id": 0, + "prevSize": 32, + "code": 58882, + "name": "invert" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 31 + }, + { + "icon": { + "paths": [ + "M928 128h-416l-32-64h-352l-64 128h896zM904.34 704h74.86l44.8-448h-1024l64 640h484.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM1002.996 913.75l-198.496-174.692c17.454-28.92 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l174.692 198.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM640 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57396, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 0, + "order": 610, + "prevSize": 32, + "code": 57396, + "name": "browse", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 32 + }, + { + "icon": { + "paths": [ + "M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "resize", + "dots" + ], + "defaultCode": 57394, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1, + "order": 611, + "prevSize": 32, + "code": 57394, + "name": "resize", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 33 + }, + { + "icon": { + "paths": [ + "M832 256h-192v-64l-192-192h-448v768h384v256h640v-576l-192-192zM832 346.51l101.49 101.49h-101.49v-101.49zM448 90.51l101.49 101.49h-101.49v-101.49zM64 64h320v192h192v448h-512v-640zM960 960h-512v-192h192v-448h128v192h192v448z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "copy" + ], + "defaultCode": 57393, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 2, + "order": 612, + "prevSize": 32, + "code": 57393, + "name": "copy", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 34 + }, + { + "icon": { + "paths": [ + "M256 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224zM960 896l-256-224 256-224z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "rtl" + ], + "defaultCode": 57392, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 3, + "order": 613, + "prevSize": 32, + "code": 57392, + "name": "rtl", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 35 + }, + { + "icon": { + "paths": [ + "M448 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224zM64 448l256 224-256 224z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "ltr" + ], + "defaultCode": 57391, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 4, + "order": 542, + "prevSize": 32, + "code": 57391, + "name": "ltr", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M384 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "visualchars" + ], + "defaultCode": 57390, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 5, + "order": 543, + "prevSize": 32, + "code": 57390, + "name": "visualchars", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 37 + }, + { + "icon": { + "paths": [ + "M731.42 517.036c63.92 47.938 100.58 116.086 100.58 186.964s-36.66 139.026-100.58 186.964c-59.358 44.518-137.284 69.036-219.42 69.036-82.138 0-160.062-24.518-219.42-69.036-63.92-47.938-100.58-116.086-100.58-186.964h128c0 69.382 87.926 128 192 128 104.074 0 192-58.618 192-128 0-69.382-87.926-128-192-128-82.138 0-160.062-24.518-219.42-69.036-63.92-47.94-100.58-116.086-100.58-186.964 0-70.878 36.66-139.024 100.58-186.964 59.358-44.518 137.282-69.036 219.42-69.036 82.136 0 160.062 24.518 219.42 69.036 63.92 47.94 100.58 116.086 100.58 186.964h-128c0-69.382-87.926-128-192-128-104.074 0-192 58.618-192 128 0 69.382 87.926 128 192 128 82.136 0 160.062 24.518 219.42 69.036zM0 512h1024v64h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "strikethrough" + ], + "defaultCode": 57389, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 6, + "order": 544, + "prevSize": 32, + "code": 57389, + "name": "strikethrough", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M704 64h128v416c0 159.058-143.268 288-320 288-176.73 0-320-128.942-320-288v-416h128v416c0 40.166 18.238 78.704 51.354 108.506 36.896 33.204 86.846 51.494 140.646 51.494 53.8 0 103.75-18.29 140.646-51.494 33.116-29.802 51.354-68.34 51.354-108.506v-416zM192 832h640v128h-640z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "underline" + ], + "defaultCode": 57388, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 7, + "order": 545, + "prevSize": 32, + "code": 57388, + "name": "underline", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 39 + }, + { + "icon": { + "paths": [ + "M896 64v64h-128l-320 768h128v64h-448v-64h128l320-768h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "italic" + ], + "defaultCode": 57387, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 8, + "order": 546, + "prevSize": 32, + "code": 57387, + "name": "italic", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 40 + }, + { + "icon": { + "paths": [ + "M707.88 484.652c37.498-44.542 60.12-102.008 60.12-164.652 0-141.16-114.842-256-256-256h-320v896h384c141.158 0 256-114.842 256-256 0-92.956-49.798-174.496-124.12-219.348zM384 192h101.5c55.968 0 101.5 57.42 101.5 128s-45.532 128-101.5 128h-101.5v-256zM543 832h-159v-256h159c58.45 0 106 57.42 106 128s-47.55 128-106 128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "bold0" + ], + "defaultCode": 57386, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 9, + "order": 547, + "prevSize": 32, + "code": 57386, + "name": "bold", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 41 + }, + { + "icon": { + "paths": [ + "M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "restoredraft" + ], + "defaultCode": 57384, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 11, + "order": 548, + "prevSize": 32, + "code": 57384, + "name": "restoredraft", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 42 + }, + { + "icon": { + "paths": [ + "M0 512h128v64h-128zM192 512h192v64h-192zM448 512h128v64h-128zM640 512h192v64h-192zM896 512h128v64h-128zM880 0l16 448h-768l16-448h32l16 384h640l16-384zM144 1024l-16-384h768l-16 384h-32l-16-320h-640l-16 320z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pagebreak" + ], + "defaultCode": 57383, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 12, + "order": 549, + "prevSize": 32, + "code": 57383, + "name": "pagebreak", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 43 + }, + { + "icon": { + "paths": [ + "M384 192h128v64h-128zM576 192h128v64h-128zM896 192v256h-192v-64h128v-128h-64v-64zM320 384h128v64h-128zM512 384h128v64h-128zM192 256v128h64v64h-128v-256h192v64zM384 576h128v64h-128zM576 576h128v64h-128zM896 576v256h-192v-64h128v-128h-64v-64zM320 768h128v64h-128zM512 768h128v64h-128zM192 640v128h64v64h-128v-256h192v64zM960 64h-896v896h896v-896zM1024 0v0 1024h-1024v-1024h1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "template" + ], + "defaultCode": 57382, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 13, + "order": 550, + "prevSize": 32, + "code": 57382, + "name": "template", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 44 + }, + { + "icon": { + "paths": [ + "M448 576h-192v-128h192v-192h128v192h192v128h-192v192h-128zM1024 640v384h-1024v-384h128v256h768v-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "nonbreaking" + ], + "defaultCode": 57381, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 14, + "order": 551, + "prevSize": 32, + "code": 57381, + "name": "nonbreaking", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 45 + }, + { + "icon": { + "paths": [ + "M128 256h128v192h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192zM128 64h128v128h-128v-128zM960 64v-64h-192c-35.202 0-64 28.8-64 64v320c0 35.2 28.798 64 64 64h192v-64h-192v-320h192zM640 160v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64zM576 384h-128v-128h128v128zM576 192h-128v-128h128v128zM832 576l-416 448-224-288 82-70 142 148 352-302z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "spellchecker" + ], + "defaultCode": 57380, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 15, + "order": 552, + "prevSize": 32, + "code": 57380, + "name": "spellchecker", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 46 + }, + { + "icon": { + "paths": [ + "M704 896h256l64-128v256h-384v-214.214c131.112-56.484 224-197.162 224-361.786 0-214.432-157.598-382.266-352-382.266-194.406 0-352 167.832-352 382.266 0 164.624 92.886 305.302 224 361.786v214.214h-384v-256l64 128h256v-32.59c-187.63-66.46-320-227.402-320-415.41 0-247.424 229.23-448 512-448 282.77 0 512 200.576 512 448 0 188.008-132.37 348.95-320 415.41v32.59z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "charmap" + ], + "defaultCode": 57376, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 19, + "order": 614, + "prevSize": 32, + "code": 57376, + "name": "charmap", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 47 + }, + { + "icon": { + "paths": [ + "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "sup" + ], + "defaultCode": 57375, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 20, + "order": 615, + "prevSize": 32, + "code": 57375, + "name": "sup", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 48 + }, + { + "icon": { + "paths": [ + "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "sub" + ], + "defaultCode": 57374, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 21, + "order": 616, + "prevSize": 32, + "code": 57374, + "name": "sub", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 49 + }, + { + "icon": { + "paths": [ + "M0 896h576v128h-576zM192 0h704v128h-704zM277.388 832l204.688-784.164 123.85 32.328-196.25 751.836zM929.774 1024l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "removeformat" + ], + "defaultCode": 57373, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 22, + "order": 617, + "prevSize": 32, + "code": 57373, + "name": "removeformat", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 50 + }, + { + "icon": { + "paths": [ + "M0 448h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "hr" + ], + "defaultCode": 57372, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 23, + "order": 618, + "prevSize": 32, + "code": 57372, + "name": "hr", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM384 640v-192h256v192h-256zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "table" + ], + "defaultCode": 57371, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 24, + "order": 619, + "prevSize": 32, + "code": 57371, + "name": "table", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 52 + }, + { + "icon": { + "paths": [ + "M322.018 832l57.6-192h264.764l57.6 192h113.632l-191.996-640h-223.236l-192 640h113.636zM475.618 320h72.764l57.6 192h-187.964l57.6-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "forecolor" + ], + "defaultCode": 57370, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 25, + "order": 620, + "prevSize": 32, + "code": 57370, + "name": "forecolor", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 53 + }, + { + "icon": { + "paths": [ + "M512 320c-209.368 0-395.244 100.556-512 256 116.756 155.446 302.632 256 512 256 209.368 0 395.244-100.554 512-256-116.756-155.444-302.632-256-512-256zM448 448c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM773.616 705.296c-39.648 20.258-81.652 35.862-124.846 46.376-44.488 10.836-90.502 16.328-136.77 16.328-46.266 0-92.282-5.492-136.768-16.324-43.194-10.518-85.198-26.122-124.846-46.376-63.020-32.202-120.222-76.41-167.64-129.298 47.418-52.888 104.62-97.1 167.64-129.298 32.336-16.522 66.242-29.946 101.082-40.040-19.888 30.242-31.468 66.434-31.468 105.336 0 106.040 85.962 192 192 192 106.038 0 192-85.96 192-192 0-38.902-11.582-75.094-31.466-105.34 34.838 10.096 68.744 23.52 101.082 40.042 63.022 32.198 120.218 76.408 167.638 129.298-47.42 52.886-104.618 97.1-167.638 129.296zM860.918 243.722c-108.72-55.554-226.112-83.722-348.918-83.722-122.806 0-240.198 28.168-348.918 83.722-58.772 30.032-113.732 67.904-163.082 112.076v109.206c55.338-58.566 120.694-107.754 192.194-144.29 99.62-50.904 207.218-76.714 319.806-76.714s220.186 25.81 319.804 76.716c71.502 36.536 136.858 85.724 192.196 144.29v-109.206c-49.35-44.174-104.308-82.046-163.082-112.078z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "preview" + ], + "defaultCode": 57369, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 26, + "order": 553, + "prevSize": 32, + "code": 57369, + "name": "preview", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 54 + }, + { + "icon": { + "paths": [ + "M512 192c-212.076 0-384 171.922-384 384s171.922 384 384 384c212.074 0 384-171.922 384-384s-171.926-384-384-384zM715.644 779.646c-54.392 54.396-126.716 84.354-203.644 84.354s-149.25-29.958-203.646-84.354c-54.396-54.394-84.354-126.718-84.354-203.646s29.958-149.25 84.354-203.646c54.396-54.396 126.718-84.354 203.646-84.354s149.252 29.958 203.642 84.354c54.402 54.396 84.358 126.718 84.358 203.646s-29.958 149.252-84.356 203.646zM325.93 203.862l-42.94-85.878c-98.874 49.536-179.47 130.132-229.006 229.008l85.876 42.94c40.248-80.336 105.732-145.822 186.070-186.070zM884.134 389.93l85.878-42.938c-49.532-98.876-130.126-179.472-229.004-229.008l-42.944 85.878c80.338 40.248 145.824 105.732 186.070 186.068zM512 384h-64v192c0 10.11 4.7 19.11 12.022 24.972l-0.012 0.016 160 128 39.976-49.976-147.986-118.39v-176.622z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "inserttime" + ], + "defaultCode": 57368, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 27, + "order": 554, + "prevSize": 32, + "code": 57368, + "name": "inserttime", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 55 + }, + { + "icon": { + "paths": [ + "M320 256l-256 256 256 256h128l-256-256 256-256zM704 256h-128l256 256-256 256h128l256-256z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "code" + ], + "defaultCode": 57367, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 28, + "order": 555, + "prevSize": 32, + "code": 57367, + "name": "code", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 56 + }, + { + "icon": { + "paths": [ + "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156 78.572 78.572 183.038 121.844 294.156 121.844 111.118 0 215.584-43.272 294.156-121.844 78.572-78.572 121.844-183.038 121.844-294.156 0-111.118-43.272-215.584-121.844-294.156-78.572-78.572-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "help" + ], + "defaultCode": 57366, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 29, + "order": 556, + "prevSize": 32, + "code": 57366, + "name": "help", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 57 + }, + { + "icon": { + "paths": [ + "M0 128v768h1024v-768h-1024zM192 832h-128v-128h128v128zM192 576h-128v-128h128v128zM192 320h-128v-128h128v128zM768 832h-512v-640h512v640zM960 832h-128v-128h128v128zM960 576h-128v-128h128v128zM960 320h-128v-128h128v128zM384 320v384l256-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "media" + ], + "defaultCode": 57365, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 30, + "order": 557, + "prevSize": 32, + "code": 57365, + "name": "media", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 58 + }, + { + "icon": { + "paths": [ + "M0 128v832h1024v-832h-1024zM960 896h-896v-704h896v704zM704 352c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96-53.019 0-96-42.981-96-96zM896 832h-768l192-512 256 320 128-96z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "image" + ], + "defaultCode": 57364, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 31, + "order": 558, + "prevSize": 32, + "code": 57364, + "name": "image", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 59 + }, + { + "icon": { + "paths": [ + "M192 0v1024l320-320 320 320v-1024h-640zM768 869.49l-256-256-256 256v-805.49h512v805.49z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "anchor" + ], + "defaultCode": 57363, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 32, + "order": 559, + "prevSize": 32, + "code": 57363, + "name": "anchor", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 60 + }, + { + "icon": { + "paths": [ + "M476.888 675.114c4.56 9.048 6.99 19.158 6.99 29.696 0 17.616-6.744 34.058-18.992 46.308l-163.38 163.38c-12.248 12.248-28.696 18.992-46.308 18.992s-34.060-6.744-46.308-18.992l-99.38-99.38c-12.248-12.25-18.992-28.696-18.992-46.308s6.744-34.060 18.992-46.308l163.38-163.382c12.248-12.246 28.696-18.992 46.308-18.992 10.538 0 20.644 2.43 29.696 6.988l65.338-65.336c-27.87-21.41-61.44-32.16-95.034-32.16-39.986 0-79.972 15.166-110.308 45.502l-163.38 163.382c-60.67 60.67-60.67 159.95 0 220.618l99.38 99.382c30.334 30.332 70.32 45.5 110.306 45.5 39.988 0 79.974-15.168 110.308-45.502l163.38-163.38c55.82-55.82 60.238-144.298 13.344-205.346l-65.34 65.338zM978.496 144.884l-99.38-99.382c-30.334-30.336-70.32-45.502-110.308-45.502-39.986 0-79.97 15.166-110.306 45.502l-163.382 163.382c-55.82 55.82-60.238 144.298-13.342 205.342l65.338-65.34c-4.558-9.050-6.988-19.16-6.988-29.694 0-17.616 6.744-34.060 18.992-46.308l163.382-163.382c12.246-12.248 28.694-18.994 46.306-18.994 17.616 0 34.060 6.746 46.308 18.994l99.38 99.382c12.248 12.248 18.992 28.694 18.992 46.308s-6.744 34.060-18.992 46.308l-163.38 163.382c-12.248 12.248-28.694 18.992-46.308 18.992-10.536 0-20.644-2.43-29.696-6.99l-65.338 65.338c27.872 21.41 61.44 32.16 95.034 32.16 39.988 0 79.974-15.168 110.308-45.504l163.38-163.38c60.672-60.666 60.672-159.944 0-220.614zM233.368 278.624l-191.994-191.994 45.256-45.256 191.994 191.994zM384 0h64v192h-64zM0 384h192v64h-192zM790.632 745.376l191.996 191.996-45.256 45.256-191.996-191.996zM576 832h64v192h-64zM832 576h192v64h-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "unlink" + ], + "defaultCode": 57362, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 33, + "order": 560, + "prevSize": 32, + "code": 57362, + "name": "unlink", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 61 + }, + { + "icon": { + "paths": [ + "M320 704c17.6 17.6 47.274 16.726 65.942-1.942l316.118-316.116c18.668-18.668 19.54-48.342 1.94-65.942s-47.274-16.726-65.942 1.942l-316.116 316.116c-18.668 18.668-19.542 48.342-1.942 65.942zM476.888 675.112c4.56 9.050 6.99 19.16 6.99 29.696 0 17.616-6.744 34.060-18.992 46.308l-163.382 163.382c-12.248 12.248-28.694 18.992-46.308 18.992s-34.060-6.744-46.308-18.992l-99.382-99.382c-12.248-12.248-18.992-28.694-18.992-46.308s6.744-34.060 18.992-46.308l163.382-163.382c12.248-12.248 28.694-18.994 46.308-18.994 10.536 0 20.644 2.43 29.696 6.99l65.338-65.338c-27.87-21.41-61.44-32.16-95.034-32.16-39.986 0-79.972 15.166-110.308 45.502l-163.382 163.382c-60.67 60.67-60.67 159.948 0 220.618l99.382 99.382c30.334 30.332 70.32 45.5 110.306 45.5 39.988 0 79.974-15.168 110.308-45.502l163.382-163.382c55.82-55.82 60.238-144.298 13.344-205.344l-65.34 65.34zM978.498 144.884l-99.382-99.382c-30.334-30.336-70.32-45.502-110.308-45.502-39.986 0-79.972 15.166-110.308 45.502l-163.382 163.382c-55.82 55.82-60.238 144.298-13.342 205.342l65.338-65.34c-4.558-9.050-6.988-19.16-6.988-29.694 0-17.616 6.744-34.060 18.992-46.308l163.382-163.382c12.248-12.248 28.694-18.994 46.308-18.994s34.060 6.746 46.308 18.994l99.382 99.382c12.248 12.248 18.992 28.694 18.992 46.308s-6.744 34.060-18.992 46.308l-163.382 163.382c-12.248 12.248-28.694 18.992-46.308 18.992-10.536 0-20.644-2.43-29.696-6.99l-65.338 65.338c27.872 21.41 61.44 32.16 95.034 32.16 39.988 0 79.974-15.168 110.308-45.502l163.382-163.382c60.67-60.666 60.67-159.944 0-220.614z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "link" + ], + "defaultCode": 57361, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 34, + "order": 561, + "prevSize": 32, + "code": 57361, + "name": "link", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 62 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM256 320v384l-256-192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "outdent" + ], + "defaultCode": 57357, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 38, + "order": 562, + "prevSize": 32, + "code": 57357, + "name": "outdent", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 63 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM0 704v-384l256 192z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "indent" + ], + "defaultCode": 57356, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 39, + "order": 563, + "prevSize": 32, + "code": 57356, + "name": "indent", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 64 + }, + { + "icon": { + "paths": [ + "M384 832h640v128h-640zM384 448h640v128h-640zM384 64h640v128h-640zM192 0v256h-64v-192h-64v-64zM128 526v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM256 704v320h-192v-64h128v-64h-128v-64h128v-64h-128v-64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "numlist" + ], + "defaultCode": 57355, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 40, + "order": 621, + "prevSize": 32, + "code": 57355, + "name": "numlist", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 65 + }, + { + "icon": { + "paths": [ + "M384 64h640v128h-640v-128zM384 448h640v128h-640v-128zM384 832h640v128h-640v-128zM0 128c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 512c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 896c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "bullist" + ], + "defaultCode": 57354, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 41, + "order": 622, + "prevSize": 32, + "code": 57354, + "name": "bullist", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 66 + }, + { + "icon": { + "paths": [ + "M64 0h384v64h-384zM576 0h384v64h-384zM952 320h-56v-256h-256v256h-256v-256h-256v256h-56c-39.6 0-72 32.4-72 72v560c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-376h128v376c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-560c0-39.6-32.4-72-72-72zM348 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM924 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "searchreplace" + ], + "defaultCode": 57353, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 42, + "order": 623, + "prevSize": 32, + "code": 57353, + "name": "searchreplace", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 67 + }, + { + "icon": { + "paths": [ + "M832 320v-160c0-17.6-14.4-32-32-32h-224v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-224c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h448l192-192v-512h-192zM384 64.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 256v-64h512v64h-512zM832 933.49v-101.49h101.49l-101.49 101.49zM960 768h-192v192h-320v-576h512v384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "paste" + ], + "defaultCode": 57352, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 43, + "order": 624, + "prevSize": 32, + "code": 57352, + "name": "paste", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 68 + }, + { + "icon": { + "paths": [ + "M890.774 709.154c-45.654-45.556-103.728-69.072-157.946-69.072h-29.112l-63.904-64.008 255.62-256.038c63.904-64.010 63.904-192.028 0-256.038l-383.43 384.056-383.432-384.054c-63.904 64.008-63.904 192.028 0 256.038l255.622 256.034-63.906 64.008h-29.114c-54.22 0-112.292 23.518-157.948 69.076-81.622 81.442-92.65 202.484-24.63 270.35 29.97 29.902 70.288 44.494 112.996 44.494 54.216 0 112.29-23.514 157.946-69.072 53.584-53.464 76.742-124 67.084-185.348l65.384-65.488 65.376 65.488c-9.656 61.348 13.506 131.882 67.084 185.348 45.662 45.558 103.732 69.072 157.948 69.072 42.708 0 83.024-14.592 112.994-44.496 68.020-67.866 56.988-188.908-24.632-270.35zM353.024 845.538c-7.698 17.882-19.010 34.346-33.626 48.926-14.636 14.604-31.172 25.918-49.148 33.624-16.132 6.916-32.96 10.568-48.662 10.568-15.146 0-36.612-3.402-52.862-19.612-16.136-16.104-19.52-37.318-19.52-52.288 0-15.542 3.642-32.21 10.526-48.212 7.7-17.884 19.014-34.346 33.626-48.926 14.634-14.606 31.172-25.914 49.15-33.624 16.134-6.914 32.96-10.568 48.664-10.568 15.146 0 36.612 3.4 52.858 19.614 16.134 16.098 19.522 37.316 19.522 52.284 0.002 15.542-3.638 32.216-10.528 48.214zM512.004 666.596c-49.914 0-90.376-40.532-90.376-90.526 0-49.992 40.462-90.52 90.376-90.52s90.372 40.528 90.372 90.52c0 49.998-40.46 90.526-90.372 90.526zM855.272 919.042c-16.248 16.208-37.712 19.612-52.86 19.612-15.704 0-32.53-3.652-48.666-10.568-17.972-7.706-34.508-19.020-49.142-33.624-14.614-14.58-25.926-31.042-33.626-48.926-6.886-15.998-10.526-32.672-10.526-48.212 0-14.966 3.384-36.188 19.52-52.286 16.246-16.208 37.712-19.614 52.86-19.614 15.7 0 32.53 3.654 48.66 10.568 17.978 7.708 34.516 19.018 49.15 33.624 14.61 14.58 25.924 31.042 33.626 48.926 6.884 15.998 10.526 32.67 10.526 48.212-0.002 14.97-3.39 36.186-19.522 52.288z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "cut" + ], + "defaultCode": 57351, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 44, + "order": 625, + "prevSize": 32, + "code": 57351, + "name": "cut", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 69 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM0 256h1024v128h-1024zM0 448h1024v128h-1024zM0 640h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "alignjustify" + ], + "defaultCode": 57350, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 45, + "order": 626, + "prevSize": 32, + "code": 57350, + "name": "alignjustify", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 70 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "alignright" + ], + "defaultCode": 57349, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 46, + "order": 627, + "prevSize": 32, + "code": 57349, + "name": "alignright", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 71 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM192 256h640v128h-640zM192 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "aligncenter" + ], + "defaultCode": 57348, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 47, + "order": 564, + "prevSize": 32, + "code": 57348, + "name": "aligncenter", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 72 + }, + { + "icon": { + "paths": [ + "M0 64h1024v128h-1024zM0 256h640v128h-640zM0 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "alignleft" + ], + "defaultCode": 57347, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 48, + "order": 565, + "prevSize": 32, + "code": 57347, + "name": "alignleft", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 73 + }, + { + "icon": { + "paths": [ + "M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "fullpage" + ], + "defaultCode": 57346, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 49, + "order": 566, + "prevSize": 32, + "code": 57346, + "name": "fullpage", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 74 + }, + { + "icon": { + "paths": [ + "M903.432 199.43l-142.864-142.862c-31.112-31.112-92.568-56.568-136.568-56.568h-480c-44 0-80 36-80 80v864c0 44 36 80 80 80h736c44 0 80-36 80-80v-608c0-44-25.456-105.458-56.568-136.57zM858.178 244.686c3.13 3.13 6.25 6.974 9.28 11.314h-163.458v-163.456c4.34 3.030 8.184 6.15 11.314 9.28l142.864 142.862zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16h480c4.832 0 10.254 0.61 16 1.704v254.296h254.296c1.094 5.746 1.704 11.166 1.704 16v608z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "newdocument" + ], + "defaultCode": 57345, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 50, + "order": 567, + "prevSize": 32, + "code": 57345, + "name": "newdocument", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 75 + }, + { + "icon": { + "paths": [ + "M896 0h-896v1024h1024v-896l-128-128zM512 128h128v256h-128v-256zM896 896h-768v-768h64v320h576v-320h74.978l53.022 53.018v714.982z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "save" + ], + "defaultCode": 57344, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 51, + "order": 568, + "prevSize": 32, + "code": 57344, + "name": "save", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 76 + }, + { + "icon": { + "paths": [ + "M128 544l288 288 480-480-128-128-352 352-160-160z" + ], + "attrs": [], + "isMulticolor": false, + "defaultCode": 57395, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 52, + "order": 569, + "prevSize": 32, + "code": 57395, + "name": "checkbox", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 77 + }, + { + "icon": { + "paths": [ + "M512 512v128h32l32-64h64v256h-48v64h224v-64h-48v-256h64l32 64h32v-128zM832 320v-160c0-17.6-14.4-32-32-32h-224v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-224c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h640v-704h-192zM384 64.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 256v-64h512v64h-512zM960 960h-512v-576h512v576z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pastetext" + ], + "defaultCode": 57397, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 53, + "order": 570, + "prevSize": 32, + "code": 57397, + "name": "pastetext", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 78 + }, + { + "icon": { + "paths": [ + "M1024 0v384l-138.26-138.26-212 212-107.48-107.48 212-212-138.26-138.26zM245.74 138.26l212 212-107.48 107.48-212-212-138.26 138.26v-384h384zM885.74 778.26l138.26-138.26v384h-384l138.26-138.26-212-212 107.48-107.48zM457.74 673.74l-212 212 138.26 138.26h-384v-384l138.26 138.26 212-212z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "fullscreen" + ], + "defaultCode": 57379, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 16, + "order": 571, + "prevSize": 32, + "code": 57379, + "name": "fullscreen", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 79 + }, + { + "icon": { + "paths": [ + "M256 64h512v128h-512zM960 256h-896c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h192v256h512v-256h192c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM704 896h-384v-320h384v320zM974.4 352c0 25.626-20.774 46.4-46.398 46.4-25.626 0-46.402-20.774-46.402-46.4s20.776-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "print" + ], + "defaultCode": 57378, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 17, + "order": 572, + "prevSize": 32, + "code": 57378, + "name": "print", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 80 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.228-512 512 0 282.77 229.228 512 512 512 282.77 0 512-229.23 512-512 0-282.772-229.23-512-512-512zM512 944c-238.586 0-432-193.412-432-432 0-238.586 193.414-432 432-432 238.59 0 432 193.414 432 432 0 238.588-193.41 432-432 432zM384 320c0 35.346-28.654 64-64 64s-64-28.654-64-64 28.654-64 64-64 64 28.654 64 64zM768 320c0 35.346-28.652 64-64 64s-64-28.654-64-64 28.652-64 64-64 64 28.654 64 64zM512 652c141.074 0 262.688-57.532 318.462-123.192-20.872 171.22-156.288 303.192-318.462 303.192-162.118 0-297.498-132.026-318.444-303.168 55.786 65.646 177.386 123.168 318.444 123.168z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "emoticons" + ], + "defaultCode": 57377, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 18, + "order": 573, + "prevSize": 32, + "code": 57377, + "name": "emoticons", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 81 + }, + { + "icon": { + "paths": [ + "M225 448c123.712 0 224 100.29 224 224 0 123.712-100.288 224-224 224-123.712 0-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.634 11.636-22.252 24.016-31.83 37.020 11.438-1.8 23.16-2.746 35.104-2.746zM801 448c123.71 0 224 100.29 224 224 0 123.712-100.29 224-224 224-123.71 0-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.636 11.636-22.254 24.016-31.832 37.020 11.44-1.8 23.16-2.746 35.106-2.746z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "blockquote" + ], + "defaultCode": 57358, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 37, + "order": 574, + "prevSize": 32, + "code": 57358, + "name": "blockquote", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 82 + }, + { + "icon": { + "paths": [ + "M761.862 1024c113.726-206.032 132.888-520.306-313.862-509.824v253.824l-384-384 384-384v248.372c534.962-13.942 594.57 472.214 313.862 775.628z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "undo" + ], + "defaultCode": 57359, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 36, + "order": 628, + "prevSize": 32, + "code": 57359, + "name": "undo", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 83 + }, + { + "icon": { + "paths": [ + "M576 248.372v-248.372l384 384-384 384v-253.824c-446.75-10.482-427.588 303.792-313.86 509.824-280.712-303.414-221.1-789.57 313.86-775.628z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "redo" + ], + "defaultCode": 57360, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 35, + "order": 629, + "prevSize": 32, + "code": 57360, + "name": "redo", + "ligatures": "" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 84 + }, + { + "icon": { + "paths": [ + "M199.995 381.998v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-100.518 0-182.003 81.485-182.003 182.003v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 100.515 81.485 182.003 182.003 182.003h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-50.931-20.928-96.966-54.646-130.002 33.716-33.036 54.646-79.072 54.646-130.002z", + "M824.005 381.998v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c100.515 0 182.003 81.485 182.003 182.003v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 100.515-81.488 182.003-182.003 182.003h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-50.931 20.928-96.966 54.646-130.002-33.716-33.036-54.646-79.072-54.646-130.002z", + "M616.002 356.715c0 57.439-46.562 104.002-104.002 104.002s-104.002-46.562-104.002-104.002c0-57.439 46.562-104.002 104.002-104.002s104.002 46.562 104.002 104.002z", + "M512 511.283c-57.439 0-104.002 46.562-104.002 104.002 0 55.845 26 100.115 105.752 103.88-23.719 33.417-59.441 46.612-105.752 50.944v61.751c0 0 208.003 18.144 208.003-216.577-0.202-57.441-46.56-104.004-104.002-104.004z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "tags": [ + "code", + "semicolon", + "curly-braces" + ], + "grid": 16, + "defaultCode": 58883 + }, + "attrs": [], + "properties": { + "order": 630, + "id": 1, + "prevSize": 32, + "code": 58883, + "name": "codesample" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 85 + }, + { + "icon": { + "paths": [ + "M864.626 473.162c-65.754-183.44-205.11-348.15-352.626-473.162-147.516 125.012-286.87 289.722-352.626 473.162-40.664 113.436-44.682 236.562 12.584 345.4 65.846 125.14 198.632 205.438 340.042 205.438s274.196-80.298 340.040-205.44c57.27-108.838 53.25-231.962 12.586-345.398zM738.764 758.956c-43.802 83.252-132.812 137.044-226.764 137.044-55.12 0-108.524-18.536-152.112-50.652 13.242 1.724 26.632 2.652 40.112 2.652 117.426 0 228.668-67.214 283.402-171.242 44.878-85.292 40.978-173.848 23.882-244.338 14.558 28.15 26.906 56.198 36.848 83.932 22.606 63.062 40.024 156.34-5.368 242.604z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "drop" + ], + "defaultCode": 57381, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 87, + "order": 631, + "prevSize": 32, + "code": 59701, + "ligatures": "droplet, color9", + "name": "drop" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 86 + }, + { + "icon": { + "paths": [ + "M768 128h-512l-256 256 512 576 512-576-256-256zM512 778.666v-2.666h-2.37l-14.222-16h16.592v-16h-30.814l-14.222-16h45.036v-16h-59.258l-14.222-16h73.48v-16h-87.704l-14.222-16h101.926v-16h-116.148l-14.222-16h130.37v-16h-144.592l-14.222-16h158.814v-16h-173.038l-14.222-16h187.26v-16h-201.482l-14.222-16h215.704v-16h-229.926l-14.222-16h244.148v-16h-258.372l-14.222-16h272.594v-16h-286.816l-14.222-16h301.038v-16h-315.26l-14.222-16h329.482v-16h-343.706l-7.344-8.262 139.072-139.072h211.978v3.334h215.314l16 16h-231.314v16h247.314l16 16h-263.314v16h279.314l16 16h-295.314v16h311.314l16 16h-327.314v16h343.312l7.738 7.738-351.050 394.928z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "diamond", + "gem", + "jewelry", + "dualtone" + ], + "defaultCode": 57889, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 635, + "order": 632, + "prevSize": 32, + "code": 60327, + "ligatures": "diamond2, gem2", + "name": "sharpen" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 87 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM128 512c0-212.078 171.922-384 384-384v768c-212.078 0-384-171.922-384-384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "contrast" + ], + "defaultCode": 58104, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 854, + "order": 633, + "prevSize": 32, + "code": 60628, + "ligatures": "contrast", + "name": "contrast" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 88 + }, + { + "icon": { + "paths": [ + "M893.254 221.254l-90.508-90.508-290.746 290.744-290.746-290.744-90.508 90.506 290.746 290.748-290.746 290.746 90.508 90.508 290.746-290.746 290.746 290.746 90.508-90.51-290.744-290.744z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "remove" + ], + "defaultCode": 60778, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 24, + "order": 634, + "prevSize": 32, + "code": 60778, + "ligatures": "cross2, cancel3", + "name": "remove22" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 89 + }, + { + "icon": { + "paths": [ + "M0 64v384c0 35.346 28.654 64 64 64s64-28.654 64-64v-229.488l677.488 677.488h-229.488c-35.346 0-64 28.652-64 64 0 35.346 28.654 64 64 64h384c35.346 0 64-28.654 64-64v-384c0-35.348-28.654-64-64-64s-64 28.652-64 64v229.488l-677.488-677.488h229.488c35.346 0 64-28.654 64-64s-28.652-64-64-64h-384c-35.346 0-64 28.654-64 64z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "resize2" + ], + "defaultCode": 58329, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1097, + "order": 575, + "prevSize": 32, + "code": 60921, + "ligatures": "arrow-resize2, diagonal2", + "name": "resize2" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 90 + }, + { + "icon": { + "paths": [ + "M483.2 640l-147.2-336c-9.6-25.6-19.2-44.8-25.6-54.4s-16-12.8-25.6-12.8c-16 0-25.6 3.2-28.8 3.2v-70.4c9.6-6.4 25.6-6.4 38.4-9.6 32 0 57.6 6.4 73.6 22.4 6.4 6.4 12.8 16 19.2 25.6 6.4 12.8 12.8 25.6 16 41.6l121.6 291.2 150.4-371.2h92.8l-198.4 470.4v224h-86.4v-224z", + "M0 0v1024h1024v-1024h-1024zM960 960h-896v-896h896v896z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "gamma2" + ], + "grid": 16, + "defaultCode": 58880 + }, + "attrs": [ + {}, + {} + ], + "properties": { + "order": 576, + "id": 1, + "prevSize": 32, + "code": 58880, + "name": "gamma" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 91 + }, + { + "icon": { + "paths": [ + "M627.2 880h-579.2v-396.8h579.2v396.8zM553.6 553.6h-435.2v256h435.2v-256z", + "M259.2 227.2c176-176 457.6-176 633.6 0s176 457.6 0 633.6c-121.6 121.6-297.6 160-454.4 108.8 121.6 28.8 262.4-9.6 361.6-108.8 150.4-150.4 160-384 22.4-521.6-121.6-121.6-320-128-470.4-19.2l86.4 86.4-294.4 22.4 22.4-294.4 92.8 92.8z" + ], + "attrs": [ + {}, + {} + ], + "isMulticolor": false, + "tags": [ + "orientation" + ], + "grid": 16, + "defaultCode": 58881 + }, + "attrs": [ + {}, + {} + ], + "properties": { + "order": 577, + "id": 0, + "prevSize": 32, + "code": 58881, + "name": "orientation" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 92 + }, + { + "icon": { + "paths": [ + "M768 544v352h-640v-640h352l128-128h-512c-52.8 0-96 43.2-96 96v704c0 52.8 43.2 96 96 96h704c52.798 0 96-43.2 96-96v-512l-128 128z", + "M864 0l-608 608v160h160l608-608c0-96-64-160-160-160zM416 640l-48-48 480-480 48 48-480 480z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 57361, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 68, + "order": 578, + "prevSize": 32, + "code": 59669, + "ligatures": "pencil7, write7", + "name": "editimage" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 93 + }, + { + "icon": { + "paths": [ + "M607.998 128.014c-212.070 0-383.986 171.916-383.986 383.986h-191.994l246.848 246.848 246.848-246.848h-191.994c0-151.478 122.798-274.276 274.276-274.276 151.48 0 274.276 122.798 274.276 274.276 0 151.48-122.796 274.276-274.276 274.276v109.71c212.070 0 383.986-171.916 383.986-383.986s-171.916-383.986-383.986-383.986z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "tags": [ + "rotate-ccw", + "ccw", + "arrow" + ], + "defaultCode": 60072, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 22, + "order": 579, + "prevSize": 32, + "code": 60072, + "ligatures": "rotate-ccw3, ccw4", + "name": "rotateleft" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 94 + }, + { + "icon": { + "paths": [ + "M416.002 128.014c212.070 0 383.986 171.916 383.986 383.986h191.994l-246.848 246.848-246.848-246.848h191.994c0-151.478-122.798-274.276-274.276-274.276-151.48 0-274.276 122.798-274.276 274.276 0 151.48 122.796 274.276 274.276 274.276v109.71c-212.070 0-383.986-171.916-383.986-383.986s171.916-383.986 383.986-383.986z" + ], + "width": 1024, + "attrs": [], + "isMulticolor": false, + "tags": [ + "rotate-cw", + "cw", + "arrow" + ], + "defaultCode": 60073, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 580, + "id": 1679, + "prevSize": 32, + "code": 60073, + "ligatures": "rotate-cw3, cw4", + "name": "rotateright" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 95 + }, + { + "icon": { + "paths": [ + "M0 384h1024v-384zM1024 960v-384h-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "flip-vertical", + "mirror" + ], + "defaultCode": 57663, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 403, + "order": 581, + "prevSize": 32, + "code": 60074, + "ligatures": "flip-vertical, mirror", + "name": "flipv" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 96 + }, + { + "icon": { + "paths": [ + "M576 0v1024h384zM0 1024h384v-1024z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "flip-horizontal", + "mirror" + ], + "defaultCode": 57664, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 405, + "order": 582, + "prevSize": 32, + "code": 60076, + "ligatures": "flip-horizontal, mirror3", + "name": "fliph" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 97 + }, + { + "icon": { + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384 0 212.078 171.922 384 384 384 95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM448 192h-128v128h-128v128h128v128h128v-128h128v-128h-128z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "zoom-in", + "magnifier", + "magnifier-plus", + "enlarge" + ], + "defaultCode": 57788, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 534, + "order": 583, + "prevSize": 32, + "code": 60213, + "ligatures": "zoom-in3, magnifier9", + "name": "zoomin" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 98 + }, + { + "icon": { + "paths": [ + "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384 0 212.078 171.922 384 384 384 95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM192 320h384v128h-384z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "zoom-out", + "magnifier", + "magnifier-minus", + "reduce" + ], + "defaultCode": 57789, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 535, + "order": 584, + "prevSize": 32, + "code": 60214, + "ligatures": "zoom-out3, magnifier10", + "name": "zoomout" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 99 + }, + { + "icon": { + "paths": [ + "M64 192h896v192h-896zM64 448h896v192h-896zM64 704h896v192h-896z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "menu", + "list", + "options", + "lines", + "hamburger" + ], + "defaultCode": 58031, + "grid": 16 + }, + "attrs": [], + "properties": { + "order": 585, + "id": 1448, + "prevSize": 32, + "code": 60522, + "ligatures": "menu3, list4", + "name": "options" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 100 + }, + { + "icon": { + "paths": [ + "M512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.348 0-64-28.654-64-64s28.652-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.258c24.992 24.99 24.992 65.516 0 90.508-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.99-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51-0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.518-24.992 90.508 0 24.994 24.994 24.994 65.52 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0s-24.994-65.518 0-90.508l45.256-45.258z", + "M512 256c-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-141.384-114.616-256-256-256zM512 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "sun", + "weather" + ], + "defaultCode": 58094, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 844, + "order": 635, + "prevSize": 32, + "code": 60620, + "ligatures": "sun2, weather21", + "name": "sun" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 101 + }, + { + "icon": { + "paths": [ + "M715.812 64.48c-60.25-34.784-124.618-55.904-189.572-64.48 122.936 160.082 144.768 384.762 37.574 570.42-107.2 185.67-312.688 279.112-512.788 252.68 39.898 51.958 90.376 97.146 150.628 131.934 245.908 141.974 560.37 57.72 702.344-188.198 141.988-245.924 57.732-560.372-188.186-702.356z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "moon", + "night", + "sleep" + ], + "defaultCode": 58105, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 855, + "order": 636, + "prevSize": 32, + "code": 60621, + "ligatures": "moon, night", + "name": "moon" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 102 + }, + { + "icon": { + "paths": [ + "M672 1024l192-192-320-320 320-320-192-192-512 512z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "arrow-left", + "left", + "previous" + ], + "defaultCode": 58291, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1056, + "order": 637, + "prevSize": 32, + "code": 60864, + "ligatures": "arrow-left, left4", + "name": "arrowleft" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 103 + }, + { + "icon": { + "paths": [ + "M832 256l192-192-64-64-192 192h-448v-192h-128v192h-192v128h192v512h512v192h128v-192h192v-128h-192v-448zM320 320h320l-320 320v-320zM384 704l320-320v320h-320z" + ], + "attrs": [], + "isMulticolor": false, + "tags": [ + "crop", + "resize", + "cut" + ], + "defaultCode": 58428, + "grid": 16 + }, + "attrs": [], + "properties": { + "id": 1201, + "order": 638, + "prevSize": 32, + "code": 61048, + "ligatures": "crop, resize", + "name": "crop" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 104 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablerowprops" + ], + "defaultCode": 58880, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1680, + "order": 639, + "prevSize": 32, + "code": 58884, + "name": "tablerowprops" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 105 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablecellprops" + ], + "defaultCode": 58881, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1681, + "order": 640, + "prevSize": 32, + "code": 58885, + "name": "tablecellprops" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 106 + }, + { + "icon": { + "paths": [ + "M0 64v832h1024v-832h-1024zM320 832h-256v-192h256v192zM320 576h-256v-192h256v192zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192zM960 320h-896v-192h896v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "table2" + ], + "defaultCode": 58882, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1682, + "order": 641, + "prevSize": 32, + "code": 58886, + "name": "table2" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 107 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM384 896v-448h576v448h-576zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablemergecells" + ], + "defaultCode": 58884, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1683, + "order": 586, + "prevSize": 32, + "code": 58887, + "name": "tablemergecells" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 108 + }, + { + "icon": { + "paths": [ + "M320 771.2v-182.4h-182.4v-89.6h182.4v-182.4h86.4v182.4h185.6v89.6h-185.6v182.4zM0 64v896h1024v-896h-1024zM640 896h-576v-704h576v704zM960 896h-256v-192h256v192zM960 640h-256v-192h256v192zM960 384h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertcolbefore" + ], + "defaultCode": 58885, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1684, + "order": 587, + "prevSize": 32, + "code": 58888, + "name": "tableinsertcolbefore" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 109 + }, + { + "icon": { + "paths": [ + "M704 316.8v182.4h182.4v89.6h-182.4v182.4h-86.4v-182.4h-185.6v-89.6h185.6v-182.4zM0 64v896h1024v-896h-1024zM320 896h-256v-192h256v192zM320 640h-256v-192h256v192zM320 384h-256v-192h256v192zM960 896h-576v-704h576v704z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertcolafter" + ], + "defaultCode": 58886, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1685, + "order": 588, + "prevSize": 32, + "code": 58889, + "name": "tableinsertcolafter" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 110 + }, + { + "icon": { + "paths": [ + "M691.2 451.2h-144v144h-70.4v-144h-144v-67.2h144v-144h70.4v144h144zM0 64v896h1024v-896h-1024zM320 896h-256v-192h256v192zM640 896h-256v-192h256v192zM960 896h-256v-192h256v192zM960 643.2h-896v-451.2h896v451.2z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertrowbefore" + ], + "defaultCode": 58887, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1686, + "order": 589, + "prevSize": 32, + "code": 58890, + "name": "tableinsertrowbefore" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 111 + }, + { + "icon": { + "paths": [ + "M332.8 636.8h144v-144h70.4v144h144v67.2h-144v144h-70.4v-144h-144zM0 64v896h1024v-896h-1024zM384 192h256v192h-256v-192zM64 192h256v192h-256v-192zM960 896h-896v-451.2h896v451.2zM960 384h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableinsertrowafter" + ], + "defaultCode": 58888, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1687, + "order": 590, + "prevSize": 32, + "code": 58891, + "name": "tableinsertrowafter" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 112 + }, + { + "icon": { + "paths": [ + "M0 64v896h1024v-896h-1024zM384 192h256v192h-256v-192zM320 896h-256v-192h256v192zM320 640h-256v-192h256v192zM320 384h-256v-192h256v192zM960 896h-576v-448h576v448zM960 384h-256v-192h256v192zM864 803.2l-60.8 60.8-131.2-131.2-131.2 131.2-60.8-60.8 131.2-131.2-131.2-131.2 60.8-60.8 131.2 131.2 131.2-131.2 60.8 60.8-131.2 131.2z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tablesplitcells" + ], + "defaultCode": 58890, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1688, + "order": 591, + "prevSize": 32, + "code": 58893, + "name": "tablesplitcells" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 113 + }, + { + "icon": { + "paths": [ + "M0 64h1024v896h-1024v-896zM60.8 192v704h899.2v-704h-899.2zM809.6 748.8l-96 96-204.8-204.8-204.8 204.8-96-96 204.8-204.8-204.8-204.8 96-96 204.8 204.8 204.8-204.8 96 96-204.8 204.8z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tabledelete" + ], + "defaultCode": 58891, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1689, + "order": 592, + "prevSize": 32, + "code": 58894, + "name": "tabledelete" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 114 + }, + { + "icon": { + "paths": [ + "M0 64v832h1024v-832h-1024zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM640 320h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192zM960 320h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tableleftheader" + ], + "defaultCode": 58922, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1690, + "order": 593, + "prevSize": 32, + "code": 58922, + "name": "tableleftheader" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 115 + }, + { + "icon": { + "paths": [ + "M0 64v832h1024v-832h-1024zM320 832h-256v-192h256v192zM320 576h-256v-192h256v192zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192z" + ], + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "isMulticolor": false, + "tags": [ + "tabletopheader" + ], + "defaultCode": 58923, + "grid": 16 + }, + "attrs": [ + { + "fill": "rgb(0, 0, 0)" + } + ], + "properties": { + "id": 1691, + "order": 594, + "prevSize": 32, + "code": 58923, + "name": "tabletopheader" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 116 + }, + { + "icon": { + "paths": [ + "M886.4 387.2l-156.8 156.8 160 160-76.8 76.8-160-160-156.8 156.8-76.8-73.6 160-160-163.2-163.2 76.8-76.8 163.2 163.2 156.8-156.8 73.6 76.8zM0 64v896h1024v-896h-1024zM960 384h-22.4l-64 64h86.4v192h-89.6l64 64h25.6v192h-896v-192h310.4l64-64h-374.4v-192h371.2l-64-64h-307.2v-192h896v192z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 16, + "tags": [ + "tabledeleterow" + ], + "defaultCode": 59392 + }, + "attrs": [], + "properties": { + "order": 595, + "id": 1693, + "prevSize": 32, + "code": 59392, + "name": "tabledeleterow" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 117 + }, + { + "icon": { + "paths": [ + "M320 460.8l64 64v12.8l-64 64v-140.8zM640 537.6l64 64v-137.6l-64 64v9.6zM1024 64v896h-1024v-896h1024zM960 192h-256v51.2l-12.8-12.8-51.2 51.2v-89.6h-256v89.6l-51.2-51.2-12.8 12.8v-51.2h-256v704h256v-118.4l35.2 35.2 28.8-28.8v115.2h256v-115.2l48 48 16-16v83.2h256v-707.2zM672 297.6l-156.8 156.8-163.2-163.2-76.8 76.8 163.2 163.2-156.8 156.8 76.8 76.8 156.8-156.8 160 160 76.8-76.8-160-160 156.8-156.8-76.8-76.8z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 16, + "tags": [ + "tabledeletecol" + ], + "defaultCode": 59393 + }, + "attrs": [], + "properties": { + "order": 596, + "id": 1692, + "prevSize": 32, + "code": 59393, + "name": "tabledeletecol" + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 118 + } + ], + "height": 1024, + "metadata": { + "name": "tinymce" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "icon-", + "metadata": { + "fontFamily": "tinymce", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "resetPoint": 59649, + "embed": false + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 4473924, + "bgColor": 16777215 + }, + "historySize": 100, + "gridSize": 16, + "showGrid": true, + "showCodes": true, + "showLiga": false + } +} \ No newline at end of file diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce.svg b/static/tinymce1.3/skins/lightgray/fonts/tinymce.svg new file mode 100755 index 0000000000000000000000000000000000000000..5727cea4250dcf2923af7fefb59b18884cac2135 --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/fonts/tinymce.svg @@ -0,0 +1,131 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="tinymce" horiz-adv-x="1024"> +<font-face units-per-em="1024" ascent="960" descent="-64" /> +<missing-glyph horiz-adv-x="1024" /> +<glyph unicode=" " horiz-adv-x="512" d="" /> +<glyph unicode="" glyph-name="save" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" /> +<glyph unicode="" glyph-name="newdocument" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" /> +<glyph unicode="" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" /> +<glyph unicode="" glyph-name="alignleft" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="aligncenter" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="alignright" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="alignjustify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="cut" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" /> +<glyph unicode="" glyph-name="paste" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" /> +<glyph unicode="" glyph-name="searchreplace" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" /> +<glyph unicode="" glyph-name="bullist" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" /> +<glyph unicode="" glyph-name="numlist" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" /> +<glyph unicode="" glyph-name="indent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" /> +<glyph unicode="" glyph-name="outdent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" /> +<glyph unicode="" glyph-name="blockquote" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" /> +<glyph unicode="" glyph-name="undo" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" /> +<glyph unicode="" glyph-name="redo" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" /> +<glyph unicode="" glyph-name="link" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" /> +<glyph unicode="" glyph-name="unlink" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" /> +<glyph unicode="" glyph-name="anchor" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" /> +<glyph unicode="" glyph-name="image" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" /> +<glyph unicode="" glyph-name="media" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" /> +<glyph unicode="" glyph-name="help" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" /> +<glyph unicode="" glyph-name="code" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" /> +<glyph unicode="" glyph-name="inserttime" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" /> +<glyph unicode="" glyph-name="preview" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" /> +<glyph unicode="" glyph-name="forecolor" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" /> +<glyph unicode="" glyph-name="table" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="" glyph-name="hr" d="M0 512h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="removeformat" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" /> +<glyph unicode="" glyph-name="sub" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="" glyph-name="sup" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="" glyph-name="charmap" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" /> +<glyph unicode="" glyph-name="emoticons" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" /> +<glyph unicode="" glyph-name="print" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" /> +<glyph unicode="" glyph-name="fullscreen" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" /> +<glyph unicode="" glyph-name="spellchecker" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" /> +<glyph unicode="" glyph-name="nonbreaking" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" /> +<glyph unicode="" glyph-name="template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" /> +<glyph unicode="" glyph-name="pagebreak" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" /> +<glyph unicode="" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" /> +<glyph unicode="" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" /> +<glyph unicode="" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" /> +<glyph unicode="" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" /> +<glyph unicode="" glyph-name="strikethrough" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" /> +<glyph unicode="" glyph-name="visualchars" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" /> +<glyph unicode="" glyph-name="ltr" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" /> +<glyph unicode="" glyph-name="rtl" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" /> +<glyph unicode="" glyph-name="copy" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" /> +<glyph unicode="" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" /> +<glyph unicode="" glyph-name="checkbox" d="M128 416l288-288 480 480-128 128-352-352-160 160z" /> +<glyph unicode="" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" /> +<glyph unicode="" glyph-name="pastetext" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" /> +<glyph unicode="" glyph-name="gamma" d="M483.2 320l-147.2 336c-9.6 25.6-19.2 44.8-25.6 54.4s-16 12.8-25.6 12.8c-16 0-25.6-3.2-28.8-3.2v70.4c9.6 6.4 25.6 6.4 38.4 9.6 32 0 57.6-6.4 73.6-22.4 6.4-6.4 12.8-16 19.2-25.6 6.4-12.8 12.8-25.6 16-41.6l121.6-291.2 150.4 371.2h92.8l-198.4-470.4v-224h-86.4v224zM0 960v-1024h1024v1024h-1024zM960 0h-896v896h896v-896z" /> +<glyph unicode="" glyph-name="orientation" d="M627.2 80h-579.2v396.8h579.2v-396.8zM553.6 406.4h-435.2v-256h435.2v256zM259.2 732.8c176 176 457.6 176 633.6 0s176-457.6 0-633.6c-121.6-121.6-297.6-160-454.4-108.8 121.6-28.8 262.4 9.6 361.6 108.8 150.4 150.4 160 384 22.4 521.6-121.6 121.6-320 128-470.4 19.2l86.4-86.4-294.4-22.4 22.4 294.4 92.8-92.8z" /> +<glyph unicode="" glyph-name="invert" d="M892.8-22.4l-89.6 89.6c-70.4-80-172.8-131.2-288-131.2-208 0-380.8 166.4-384 377.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4v0c0 0 0 0 0 3.2 0 0 0 3.2 0 3.2 3.2 105.6 48 211.2 105.6 304l-192 192 44.8 44.8 182.4-182.4c0 0 0 0 0 0l569.6-569.6c0 0 0 0 0 0l99.2-99.2-48-44.8zM896 326.4c0 0 0 0 0 0 0 3.2 0 6.4 0 6.4-9.6 316.8-384 627.2-384 627.2s-108.8-89.6-208-220.8l70.4-70.4c6.4 9.6 16 22.4 22.4 32 41.6 51.2 83.2 96 115.2 128v0c32-32 73.6-76.8 115.2-128 108.8-137.6 169.6-265.6 172.8-371.2 0 0 0-3.2 0-3.2v0 0c0-3.2 0-3.2 0-6.4s0-3.2 0-3.2v0 0c0-22.4-3.2-41.6-9.6-64l76.8-76.8c16 41.6 28.8 89.6 28.8 137.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4z" /> +<glyph unicode="" glyph-name="codesample" d="M199.995 578.002v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-100.518 0-182.003-81.485-182.003-182.003v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-100.515 81.485-182.003 182.003-182.003h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 50.931-20.928 96.966-54.646 130.002 33.716 33.036 54.646 79.072 54.646 130.002zM824.005 578.002v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c100.515 0 182.003-81.485 182.003-182.003v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-100.515-81.488-182.003-182.003-182.003h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 50.931 20.928 96.966 54.646 130.002-33.716 33.036-54.646 79.072-54.646 130.002zM616.002 603.285c0-57.439-46.562-104.002-104.002-104.002s-104.002 46.562-104.002 104.002c0 57.439 46.562 104.002 104.002 104.002s104.002-46.562 104.002-104.002zM512 448.717c-57.439 0-104.002-46.562-104.002-104.002 0-55.845 26-100.115 105.752-103.88-23.719-33.417-59.441-46.612-105.752-50.944v-61.751c0 0 208.003-18.144 208.003 216.577-0.202 57.441-46.56 104.004-104.002 104.004z" /> +<glyph unicode="" glyph-name="tablerowprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="" glyph-name="tablecellprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="" glyph-name="table2" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-896v192h896v-192z" /> +<glyph unicode="" glyph-name="tablemergecells" d="M0 896v-896h1024v896h-1024zM384 64v448h576v-448h-576zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192z" /> +<glyph unicode="" glyph-name="tableinsertcolbefore" d="M320 188.8v182.4h-182.4v89.6h182.4v182.4h86.4v-182.4h185.6v-89.6h-185.6v-182.4zM0 896v-896h1024v896h-1024zM640 64h-576v704h576v-704zM960 64h-256v192h256v-192zM960 320h-256v192h256v-192zM960 576h-256v192h256v-192z" /> +<glyph unicode="" glyph-name="tableinsertcolafter" d="M704 643.2v-182.4h182.4v-89.6h-182.4v-182.4h-86.4v182.4h-185.6v89.6h185.6v182.4zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v704h576v-704z" /> +<glyph unicode="" glyph-name="tableinsertrowbefore" d="M691.2 508.8h-144v-144h-70.4v144h-144v67.2h144v144h70.4v-144h144zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM640 64h-256v192h256v-192zM960 64h-256v192h256v-192zM960 316.8h-896v451.2h896v-451.2z" /> +<glyph unicode="" glyph-name="tableinsertrowafter" d="M332.8 323.2h144v144h70.4v-144h144v-67.2h-144v-144h-70.4v144h-144zM0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM64 768h256v-192h-256v192zM960 64h-896v451.2h896v-451.2zM960 576h-256v192h256v-192z" /> +<glyph unicode="" glyph-name="tablesplitcells" d="M0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v448h576v-448zM960 576h-256v192h256v-192zM864 156.8l-60.8-60.8-131.2 131.2-131.2-131.2-60.8 60.8 131.2 131.2-131.2 131.2 60.8 60.8 131.2-131.2 131.2 131.2 60.8-60.8-131.2-131.2z" /> +<glyph unicode="" glyph-name="tabledelete" d="M0 896h1024v-896h-1024v896zM60.8 768v-704h899.2v704h-899.2zM809.6 211.2l-96-96-204.8 204.8-204.8-204.8-96 96 204.8 204.8-204.8 204.8 96 96 204.8-204.8 204.8 204.8 96-96-204.8-204.8z" /> +<glyph unicode="" glyph-name="tableleftheader" d="M0 896v-832h1024v832h-1024zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM640 640h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-256v192h256v-192z" /> +<glyph unicode="" glyph-name="tabletopheader" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192z" /> +<glyph unicode="" glyph-name="tabledeleterow" d="M886.4 572.8l-156.8-156.8 160-160-76.8-76.8-160 160-156.8-156.8-76.8 73.6 160 160-163.2 163.2 76.8 76.8 163.2-163.2 156.8 156.8 73.6-76.8zM0 896v-896h1024v896h-1024zM960 576h-22.4l-64-64h86.4v-192h-89.6l64-64h25.6v-192h-896v192h310.4l64 64h-374.4v192h371.2l-64 64h-307.2v192h896v-192z" /> +<glyph unicode="" glyph-name="tabledeletecol" d="M320 499.2l64-64v-12.8l-64-64v140.8zM640 422.4l64-64v137.6l-64-64v-9.6zM1024 896v-896h-1024v896h1024zM960 768h-256v-51.2l-12.8 12.8-51.2-51.2v89.6h-256v-89.6l-51.2 51.2-12.8-12.8v51.2h-256v-704h256v118.4l35.2-35.2 28.8 28.8v-115.2h256v115.2l48-48 16 16v-83.2h256v707.2zM672 662.4l-156.8-156.8-163.2 163.2-76.8-76.8 163.2-163.2-156.8-156.8 76.8-76.8 156.8 156.8 160-160 76.8 76.8-160 160 156.8 156.8-76.8 76.8z" /> +<glyph unicode="" glyph-name="a11y" d="M960 704v64l-448-128-448 128v-64l320-128v-256l-128-448h64l192 448 192-448h64l-128 448v256zM416 800q0 40 28 68t68 28 68-28 28-68-28-68-68-28-68 28-28 68z" /> +<glyph unicode="" glyph-name="toc" d="M0 896h128v-128h-128v128zM192 896h832v-128h-832v128zM192 704h128v-128h-128v128zM384 704h640v-128h-640v128zM384 512h128v-128h-128v128zM576 512h448v-128h-448v128zM0 320h128v-128h-128v128zM192 320h832v-128h-832v128zM192 128h128v-128h-128v128zM384 128h640v-128h-640v128z" /> +<glyph unicode="" glyph-name="fill" d="M521.6 915.2l-67.2-67.2-86.4 86.4-86.4-86.4 86.4-86.4-368-368 432-432 518.4 518.4-428.8 435.2zM435.2 134.4l-262.4 262.4 35.2 35.2 576 51.2-348.8-348.8zM953.6 409.6c-6.4-6.4-16-16-28.8-32-28.8-32-41.6-64-41.6-89.6v0 0 0 0 0 0 0c0-16 6.4-35.2 22.4-48 12.8-12.8 32-22.4 48-22.4s35.2 6.4 48 22.4 22.4 32 22.4 48v0 0 0 0 0 0 0c0 25.6-12.8 54.4-41.6 89.6-9.6 16-22.4 25.6-28.8 32v0z" /> +<glyph unicode="" glyph-name="borderwidth" d="M0 265.6h1024v-128h-1024v128zM0 32h1024v-64h-1024v64zM0 566.4h1024v-192h-1024v192zM0 928h1024v-256h-1024v256z" /> +<glyph unicode="" glyph-name="line" d="M739.2 627.2l-502.4-502.4h-185.6v185.6l502.4 502.4 185.6-185.6zM803.2 688l-185.6 185.6 67.2 67.2c22.4 22.4 54.4 22.4 76.8 0l108.8-108.8c22.4-22.4 22.4-54.4 0-76.8l-67.2-67.2zM41.6 48h940.8v-112h-940.8v112z" /> +<glyph unicode="" glyph-name="count" d="M0 480h1024v-64h-1024v64zM304 912v-339.2h-67.2v272h-67.2v67.2zM444.8 694.4v-54.4h134.4v-67.2h-201.6v153.6l134.4 64v54.4h-134.4v67.2h201.6v-153.6zM854.4 912v-339.2h-204.8v67.2h137.6v67.2h-137.6v70.4h137.6v67.2h-137.6v67.2zM115.2 166.4c3.2 57.6 38.4 83.2 108.8 83.2 38.4 0 67.2-9.6 86.4-25.6s25.6-35.2 25.6-70.4v-112c0-25.6 0-28.8 9.6-41.6h-73.6c-3.2 9.6-3.2 9.6-6.4 19.2-22.4-19.2-41.6-25.6-70.4-25.6-54.4 0-89.6 32-89.6 76.8s28.8 70.4 99.2 80l38.4 6.4c16 3.2 22.4 6.4 22.4 16 0 12.8-12.8 22.4-38.4 22.4s-41.6-9.6-44.8-28.8h-67.2zM262.4 115.2c-6.4-3.2-12.8-6.4-25.6-6.4l-25.6-6.4c-25.6-6.4-38.4-16-38.4-28.8 0-16 12.8-25.6 35.2-25.6s41.6 9.6 54.4 32v35.2zM390.4 336h73.6v-112c22.4 16 41.6 22.4 67.2 22.4 64 0 105.6-51.2 105.6-124.8 0-76.8-44.8-134.4-108.8-134.4-32 0-48 9.6-67.2 35.2v-28.8h-70.4v342.4zM460.8 121.6c0-41.6 22.4-70.4 51.2-70.4s51.2 28.8 51.2 70.4c0 44.8-19.2 70.4-51.2 70.4-28.8 0-51.2-28.8-51.2-70.4zM851.2 153.6c-3.2 22.4-19.2 35.2-44.8 35.2-32 0-51.2-25.6-51.2-70.4 0-48 19.2-73.6 51.2-73.6 25.6 0 41.6 12.8 44.8 41.6l70.4-3.2c-9.6-60.8-54.4-96-118.4-96-73.6 0-121.6 51.2-121.6 128 0 80 48 131.2 124.8 131.2 64 0 108.8-35.2 112-96h-67.2z" /> +<glyph unicode="" glyph-name="reload" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" /> +<glyph unicode="" glyph-name="translate" d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8 304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8 48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6 67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816 540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2 214.4l76.8 201.6 76.8-201.6h-153.6z" /> +<glyph unicode="" glyph-name="drag" d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320 640h128v-128h-128v128zM576 384h128v-128h-128v128zM320 384h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM320 896h128v-128h-128v128z" /> +<glyph unicode="" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" /> +<glyph unicode="" glyph-name="books" d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0 64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384 640h128v-64h-128v64z" /> +<glyph unicode="" glyph-name="upload" d="M839.432 760.57c27.492-27.492 50.554-78.672 55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060 120.568-55.552l142.864-142.862zM512 576v384h-368c-44 0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576 192v-192h-192v192h-160l256 256 256-256h-160z" /> +<glyph unicode="" glyph-name="editimage" d="M768 416v-352h-640v640h352l128 128h-512c-52.8 0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96 96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416 320l-48 48 480 480 48-48-480-480z" /> +<glyph unicode="" glyph-name="bubble" d="M928 896h-832c-52.8 0-96-43.2-96-96v-512c0-52.8 43.2-96 96-96h160v-256l307.2 256h364.8c52.8 0 96 43.2 96 96v512c0 52.8-43.2 96-96 96zM896 320h-379.142l-196.858-174.714v174.714h-192v448h768v-448z" /> +<glyph unicode="" glyph-name="user" d="M622.826 257.264c-22.11 3.518-22.614 64.314-22.614 64.314s64.968 64.316 79.128 150.802c38.090 0 61.618 91.946 23.522 124.296 1.59 34.054 48.96 267.324-190.862 267.324s-192.45-233.27-190.864-267.324c-38.094-32.35-14.57-124.296 23.522-124.296 14.158-86.486 79.128-150.802 79.128-150.802s-0.504-60.796-22.614-64.314c-71.22-11.332-337.172-128.634-337.172-257.264h896c0 128.63-265.952 245.932-337.174 257.264z" /> +<glyph unicode="" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" /> +<glyph unicode="" glyph-name="unlock" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" /> +<glyph unicode="" glyph-name="settings" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" /> +<glyph unicode="" glyph-name="remove2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" /> +<glyph unicode="" glyph-name="menu" d="M384 896h256v-256h-256zM384 576h256v-256h-256zM384 256h256v-256h-256z" /> +<glyph unicode="" glyph-name="warning" d="M1009.956 44.24l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648s-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.302 0 96.792 48.708 63.302 108.24zM512 64c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64 35.348 0 64-28.652 64-64 0-35.346-28.652-64-64-64zM556 256h-88l-20 256c0 35.346 28.654 64 64 64s64-28.654 64-64l-20-256z" /> +<glyph unicode="" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" /> +<glyph unicode="" glyph-name="pluscircle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM768 384h-192v-192h-128v192h-192v128h192v192h128v-192h192z" /> +<glyph unicode="" glyph-name="info" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM448 768h128v-128h-128v128zM640 128h-256v64h64v256h-64v64h192v-320h64v-64z" /> +<glyph unicode="" glyph-name="notice" d="M1024 224l-288 736h-448l-288-288v-448l288-288h448l288 288v448l-288 288zM576 128h-128v128h128v-128zM576 384h-128v384h128v-384z" /> +<glyph unicode="" glyph-name="drop" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" /> +<glyph unicode="" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" /> +<glyph unicode="" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" /> +<glyph unicode="" glyph-name="arrowup" d="M0 320l192-192 320 320 320-320 192 192-511.998 512z" /> +<glyph unicode="" glyph-name="arrowright" d="M384 960l-192-192 320-320-320-320 192-192 512 512z" /> +<glyph unicode="" glyph-name="arrowdown" d="M1024 576l-192 192-320-320-320 320-192-192 512-511.998z" /> +<glyph unicode="" glyph-name="arrowup2" d="M768 320l-256 256-256-256z" /> +<glyph unicode="" glyph-name="arrowdown2" d="M256 576l256-256 256 256z" /> +<glyph unicode="" glyph-name="menu2" d="M256 704l256-256 256 256zM255.996 384.004l256-256 256 256z" /> +<glyph unicode="" glyph-name="newtab" d="M704 384l128 128v-512h-768v768h512l-128-128h-256v-512h512zM960 896v-352l-130.744 130.744-354.746-354.744h-90.51v90.512l354.744 354.744-130.744 130.744z" /> +<glyph unicode="" glyph-name="rotateleft" d="M607.998 831.986c-212.070 0-383.986-171.916-383.986-383.986h-191.994l246.848-246.848 246.848 246.848h-191.994c0 151.478 122.798 274.276 274.276 274.276 151.48 0 274.276-122.798 274.276-274.276 0-151.48-122.796-274.276-274.276-274.276v-109.71c212.070 0 383.986 171.916 383.986 383.986s-171.916 383.986-383.986 383.986z" /> +<glyph unicode="" glyph-name="rotateright" d="M416.002 831.986c212.070 0 383.986-171.916 383.986-383.986h191.994l-246.848-246.848-246.848 246.848h191.994c0 151.478-122.798 274.276-274.276 274.276-151.48 0-274.276-122.798-274.276-274.276 0-151.48 122.796-274.276 274.276-274.276v-109.71c-212.070 0-383.986 171.916-383.986 383.986s171.916 383.986 383.986 383.986z" /> +<glyph unicode="" glyph-name="flipv" d="M0 576h1024v384zM1024 0v384h-1024z" /> +<glyph unicode="" glyph-name="fliph" d="M576 960v-1024h384zM0-64h384v1024z" /> +<glyph unicode="" glyph-name="zoomin" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" /> +<glyph unicode="" glyph-name="zoomout" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" /> +<glyph unicode="" glyph-name="sharpen" d="M768 832h-512l-256-256 512-576 512 576-256 256zM512 181.334v2.666h-2.37l-14.222 16h16.592v16h-30.814l-14.222 16h45.036v16h-59.258l-14.222 16h73.48v16h-87.704l-14.222 16h101.926v16h-116.148l-14.222 16h130.37v16h-144.592l-14.222 16h158.814v16h-173.038l-14.222 16h187.26v16h-201.482l-14.222 16h215.704v16h-229.926l-14.222 16h244.148v16h-258.372l-14.222 16h272.594v16h-286.816l-14.222 16h301.038v16h-315.26l-14.222 16h329.482v16h-343.706l-7.344 8.262 139.072 139.072h211.978v-3.334h215.314l16-16h-231.314v-16h247.314l16-16h-263.314v-16h279.314l16-16h-295.314v-16h311.314l16-16h-327.314v-16h343.312l7.738-7.738-351.050-394.928z" /> +<glyph unicode="" glyph-name="options" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" /> +<glyph unicode="" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" /> +<glyph unicode="" glyph-name="moon" d="M715.812 895.52c-60.25 34.784-124.618 55.904-189.572 64.48 122.936-160.082 144.768-384.762 37.574-570.42-107.2-185.67-312.688-279.112-512.788-252.68 39.898-51.958 90.376-97.146 150.628-131.934 245.908-141.974 560.37-57.72 702.344 188.198 141.988 245.924 57.732 560.372-188.186 702.356z" /> +<glyph unicode="" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" /> +<glyph unicode="" glyph-name="remove22" d="M893.254 738.746l-90.508 90.508-290.746-290.744-290.746 290.744-90.508-90.506 290.746-290.748-290.746-290.746 90.508-90.508 290.746 290.746 290.746-290.746 90.508 90.51-290.744 290.744z" /> +<glyph unicode="" glyph-name="arrowleft" d="M672-64l192 192-320 320 320 320-192 192-512-512z" /> +<glyph unicode="" glyph-name="resize2" d="M0 896v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.488l677.488-677.488h-229.488c-35.346 0-64-28.652-64-64 0-35.346 28.654-64 64-64h384c35.346 0 64 28.654 64 64v384c0 35.348-28.654 64-64 64s-64-28.652-64-64v-229.488l-677.488 677.488h229.488c35.346 0 64 28.654 64 64s-28.652 64-64 64h-384c-35.346 0-64-28.654-64-64z" /> +<glyph unicode="" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" /> +</font></defs></svg> \ No newline at end of file diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce.ttf b/static/tinymce1.3/skins/lightgray/fonts/tinymce.ttf new file mode 100755 index 0000000000000000000000000000000000000000..16536bfd7a292e7090b9d4e0ae61061da9bc042f Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/fonts/tinymce.ttf differ diff --git a/static/tinymce1.3/skins/lightgray/fonts/tinymce.woff b/static/tinymce1.3/skins/lightgray/fonts/tinymce.woff new file mode 100755 index 0000000000000000000000000000000000000000..74b50f4c3001da7fdfffd8638213dcf1a396da78 Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/fonts/tinymce.woff differ diff --git a/static/tinymce1.3/skins/lightgray/img/anchor.gif b/static/tinymce1.3/skins/lightgray/img/anchor.gif new file mode 100755 index 0000000000000000000000000000000000000000..606348c7f53dba169a9aca7279a2a973f4b07bdb Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/img/anchor.gif differ diff --git a/static/tinymce1.3/skins/lightgray/img/loader.gif b/static/tinymce1.3/skins/lightgray/img/loader.gif new file mode 100755 index 0000000000000000000000000000000000000000..c69e937232b24ea30f01c68bbd2ebc798dcecfcb Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/img/loader.gif differ diff --git a/static/tinymce1.3/skins/lightgray/img/object.gif b/static/tinymce1.3/skins/lightgray/img/object.gif new file mode 100755 index 0000000000000000000000000000000000000000..cccd7f023fb80908cb33bb7d9604236cd21b7ae7 Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/img/object.gif differ diff --git a/static/tinymce1.3/skins/lightgray/img/trans.gif b/static/tinymce1.3/skins/lightgray/img/trans.gif new file mode 100755 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a Binary files /dev/null and b/static/tinymce1.3/skins/lightgray/img/trans.gif differ diff --git a/static/tinymce1.3/skins/lightgray/skin.ie7.min.css b/static/tinymce1.3/skins/lightgray/skin.ie7.min.css new file mode 100755 index 0000000000000000000000000000000000000000..8ebe708f0bfd24600f63b5960876cbaaead7e757 --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/skin.ie7.min.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#D9D9D9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px solid #3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #cacaca;border:0 solid rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#FFF;border:1px solid rgba(0,0,0,0.2);border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#858585}.mce-close:hover i{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#F0F0F0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#CCCCCC;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333333}.mce-notification .mce-progress .mce-bar-container{border-color:#CCCCCC}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ECB}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b1b1b1;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn button{padding:4px 8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group .mce-first{margin-left:0}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link b{font-size:11px}.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#333}.mce-menubar{border:1px solid rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn button{color:#333}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:white}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:white}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:white}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:white}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:white}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:white}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #AAA;background:#EEE;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #BBB;background:#DDD;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#BBB}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#ccc}.mce-splitbtn button{padding-right:6px;padding-left:6px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#dbdbdb;outline:1px solid #ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#FFF}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#ffffff;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = this.currentStyle['-ie7-icon'].substr(1, 1) + ' ')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-alignnone{-ie7-icon:"\e003"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-rotateleft{-ie7-icon:"\eaa8"}.mce-i-rotateright{-ie7-icon:"\eaa9"}.mce-i-crop{-ie7-icon:"\ee78"}.mce-i-editimage{-ie7-icon:"\e914"}.mce-i-options{-ie7-icon:"\ec6a"}.mce-i-flipv{-ie7-icon:"\eaaa"}.mce-i-fliph{-ie7-icon:"\eaac"}.mce-i-zoomin{-ie7-icon:"\eb35"}.mce-i-zoomout{-ie7-icon:"\eb36"}.mce-i-sun{-ie7-icon:"\eccc"}.mce-i-moon{-ie7-icon:"\eccd"}.mce-i-arrowleft{-ie7-icon:"\edc0"}.mce-i-arrowright{-ie7-icon:"\edb8"}.mce-i-drop{-ie7-icon:"\e934"}.mce-i-contrast{-ie7-icon:"\ecd4"}.mce-i-sharpen{-ie7-icon:"\eba7"}.mce-i-palette{-ie7-icon:"\e92a"}.mce-i-resize2{-ie7-icon:"\edf9"}.mce-i-orientation{-ie7-icon:"\e601"}.mce-i-invert{-ie7-icon:"\e602"}.mce-i-gamma{-ie7-icon:"\e600"}.mce-i-remove{-ie7-icon:"\ed6a"}.mce-i-codesample{-ie7-icon:"\e603"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB} \ No newline at end of file diff --git a/static/tinymce1.3/skins/lightgray/skin.min.css b/static/tinymce1.3/skins/lightgray/skin.min.css new file mode 100755 index 0000000000000000000000000000000000000000..7e3da52ff732bd0f87a6520d118b3ad54701b3f4 --- /dev/null +++ b/static/tinymce1.3/skins/lightgray/skin.min.css @@ -0,0 +1,17 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid rgba(0,0,0,0.2);width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#D9D9D9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#3498db}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#3498db}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#3498db;background:#3498db}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding:2px 0}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#3498db}.mce-croprect-handle-move:focus{outline:1px solid #3498db}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:rgba(0,0,0,0.2);border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:rgba(0,0,0,0.2);border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#f0f0f0;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#f0f0f0;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:rgba(0,0,0,0.2);border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#f0f0f0;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:rgba(0,0,0,0.2);border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#f0f0f0;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body .mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body .mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0 solid rgba(0,0,0,0.2);border-left-width:1px}.mce-sidebar-toolbar .mce-btn.mce-active,.mce-sidebar-toolbar .mce-btn.mce-active:hover{border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-sidebar-toolbar .mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover button,.mce-sidebar-toolbar .mce-btn.mce-active button i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button i{color:#fff;text-shadow:1px 1px none}.mce-sidebar-panel{border:0 solid rgba(0,0,0,0.2);border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #cacaca;border:0 solid rgba(0,0,0,0.2);background-color:#f0f0f0}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#FFF;border:1px solid rgba(0,0,0,0.2);border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0.2);border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#858585}.mce-close:hover i{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#ccc}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#333}.mce-bar{display:block;width:0;height:100%;background-color:#d7d7d7;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#F0F0F0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#CCCCCC;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333333}.mce-notification .mce-progress .mce-bar-container{border-color:#CCCCCC}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ECB}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b1b1b1;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#f0f0f0}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;border-color:#ccc}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#dbdbdb;border-color:#ccc}.mce-btn:active{background-color:#e0e0e0;border-color:#ccc}.mce-btn button{padding:4px 8px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#2d8ac7}.mce-primary:hover,.mce-primary:focus{background-color:#257cb6;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#206ea1}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:3px;margin-left:3px}.mce-btn-group .mce-first{margin-left:0}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;background-color:#f0f0f0;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link b{font-size:11px}.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#ccc}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid rgba(0,0,0,0.2);width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #ccc}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#333}.mce-menubar{border:1px solid rgba(217,217,217,0.52)}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#ccc;background:#fff;filter:none}.mce-menubtn button{color:#333}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:white}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:white}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:white}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#3498db}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:white}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:white}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:white}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:white;background-color:#2d8ac7}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:white}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:white}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #AAA;background:#EEE;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #BBB;background:#DDD;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#BBB}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#ccc}.mce-splitbtn button{padding-right:6px;padding-left:6px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#dbdbdb;outline:1px solid #ccc}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#FFF}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#ffffff;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#3498db}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB} +.mce-btn[aria-label~='Numbered'] .mce-open{ + display: none; +} +.mce-btn[aria-label~='Bullet'] .mce-open{ + display: none; +} + +.mce-colorbutton-grid tbody tr:last-child{ + display: none; +} +.mce-custom-color-btn{ + display: none; +} +.mce-fullscreen{ + z-index: 10000; +} diff --git a/static/tinymce1.3/tinymce.min.js b/static/tinymce1.3/tinymce.min.js new file mode 100755 index 0000000000000000000000000000000000000000..da2dd1a289e4987718795edf18754239f78579ff --- /dev/null +++ b/static/tinymce1.3/tinymce.min.js @@ -0,0 +1,14 @@ +// 4.5.5 (2017-03-07) +!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){var r,i,o,a,l;for(r=0;r<n.length;r++){i=e,o=n[r],a=o.split(/[.\/]/);for(var u=0;u<a.length-1;++u)i[a[u]]===t&&(i[a[u]]={}),i=i[a[u]];i[a[a.length-1]]=s[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o in s)l[o]=s[o];for(r=0;r<n.length;r++)delete l[n[r]];e.privateModules=l}}var s={},l="tinymce/geom/Rect",u="tinymce/util/Promise",c="tinymce/util/Delay",d="tinymce/Env",f="tinymce/dom/EventUtils",p="tinymce/dom/Sizzle",h="tinymce/util/Arr",m="tinymce/util/Tools",g="tinymce/dom/DomQuery",v="tinymce/html/Styles",y="tinymce/dom/TreeWalker",b="tinymce/dom/Range",C="tinymce/html/Entities",x="tinymce/dom/StyleSheetLoader",w="tinymce/dom/DOMUtils",E="tinymce/dom/ScriptLoader",N="tinymce/AddOnManager",_="tinymce/dom/NodeType",S="tinymce/text/Zwsp",k="tinymce/caret/CaretContainer",T="tinymce/dom/RangeUtils",R="tinymce/NodeChange",A="tinymce/html/Node",B="tinymce/html/Schema",D="tinymce/html/SaxParser",L="tinymce/html/DomParser",M="tinymce/html/Writer",P="tinymce/html/Serializer",O="tinymce/dom/Serializer",H="tinymce/dom/TridentSelection",I="tinymce/util/VK",F="tinymce/dom/ControlSelection",z="tinymce/util/Fun",U="tinymce/caret/CaretCandidate",W="tinymce/geom/ClientRect",V="tinymce/text/ExtendingChar",$="tinymce/caret/CaretPosition",q="tinymce/caret/CaretBookmark",j="tinymce/dom/BookmarkManager",Y="tinymce/dom/Selection",X="tinymce/dom/ElementUtils",K="tinymce/fmt/Preview",G="tinymce/fmt/Hooks",J="tinymce/Formatter",Q="tinymce/undo/Diff",Z="tinymce/undo/Fragments",ee="tinymce/undo/Levels",te="tinymce/UndoManager",ne="tinymce/EnterKey",re="tinymce/ForceBlocks",ie="tinymce/caret/CaretUtils",oe="tinymce/caret/CaretWalker",ae="tinymce/InsertList",se="tinymce/InsertContent",le="tinymce/EditorCommands",ue="tinymce/util/URI",ce="tinymce/util/Class",de="tinymce/util/EventDispatcher",fe="tinymce/data/Binding",pe="tinymce/util/Observable",he="tinymce/data/ObservableObject",me="tinymce/ui/Selector",ge="tinymce/ui/Collection",ve="tinymce/ui/DomUtils",ye="tinymce/ui/BoxUtils",be="tinymce/ui/ClassList",Ce="tinymce/ui/ReflowQueue",xe="tinymce/ui/Control",we="tinymce/ui/Factory",Ee="tinymce/ui/KeyboardNavigation",Ne="tinymce/ui/Container",_e="tinymce/ui/DragHelper",Se="tinymce/ui/Scrollable",ke="tinymce/ui/Panel",Te="tinymce/ui/Movable",Re="tinymce/ui/Resizable",Ae="tinymce/ui/FloatPanel",Be="tinymce/ui/Window",De="tinymce/ui/MessageBox",Le="tinymce/WindowManager",Me="tinymce/ui/Tooltip",Pe="tinymce/ui/Widget",Oe="tinymce/ui/Progress",He="tinymce/ui/Notification",Ie="tinymce/NotificationManager",Fe="tinymce/dom/NodePath",ze="tinymce/util/Quirks",Ue="tinymce/EditorObservable",We="tinymce/Mode",Ve="tinymce/Shortcuts",$e="tinymce/file/Uploader",qe="tinymce/file/Conversions",je="tinymce/file/ImageScanner",Ye="tinymce/file/BlobCache",Xe="tinymce/file/UploadStatus",Ke="tinymce/ErrorReporter",Ge="tinymce/EditorUpload",Je="tinymce/caret/FakeCaret",Qe="tinymce/dom/Dimensions",Ze="tinymce/caret/LineWalker",et="tinymce/caret/LineUtils",tt="tinymce/dom/MousePosition",nt="tinymce/DragDropOverrides",rt="tinymce/SelectionOverrides",it="tinymce/util/Uuid",ot="tinymce/ui/Sidebar",at="tinymce/Editor",st="tinymce/util/I18n",lt="tinymce/FocusManager",ut="tinymce/EditorManager",ct="tinymce/LegacyInput",dt="tinymce/util/XHR",ft="tinymce/util/JSON",pt="tinymce/util/JSONRequest",ht="tinymce/util/JSONP",mt="tinymce/util/LocalStorage",gt="tinymce/Compat",vt="tinymce/ui/Layout",yt="tinymce/ui/AbsoluteLayout",bt="tinymce/ui/Button",Ct="tinymce/ui/ButtonGroup",xt="tinymce/ui/Checkbox",wt="tinymce/ui/ComboBox",Et="tinymce/ui/ColorBox",Nt="tinymce/ui/PanelButton",_t="tinymce/ui/ColorButton",St="tinymce/util/Color",kt="tinymce/ui/ColorPicker",Tt="tinymce/ui/Path",Rt="tinymce/ui/ElementPath",At="tinymce/ui/FormItem",Bt="tinymce/ui/Form",Dt="tinymce/ui/FieldSet",Lt="tinymce/content/LinkTargets",Mt="tinymce/ui/FilePicker",Pt="tinymce/ui/FitLayout",Ot="tinymce/ui/FlexLayout",Ht="tinymce/ui/FlowLayout",It="tinymce/fmt/FontInfo",Ft="tinymce/ui/FormatControls",zt="tinymce/ui/GridLayout",Ut="tinymce/ui/Iframe",Wt="tinymce/ui/InfoBox",Vt="tinymce/ui/Label",$t="tinymce/ui/Toolbar",qt="tinymce/ui/MenuBar",jt="tinymce/ui/MenuButton",Yt="tinymce/ui/MenuItem",Xt="tinymce/ui/Throbber",Kt="tinymce/ui/Menu",Gt="tinymce/ui/ListBox",Jt="tinymce/ui/Radio",Qt="tinymce/ui/ResizeHandle",Zt="tinymce/ui/SelectBox",en="tinymce/ui/Slider",tn="tinymce/ui/Spacer",nn="tinymce/ui/SplitButton",rn="tinymce/ui/StackLayout",on="tinymce/ui/TabPanel",an="tinymce/ui/TextBox",sn="tinymce/Register";r(l,[],function(){function e(e,t,n){var r,i,a,s,l,c;return r=t.x,i=t.y,a=e.w,s=e.h,l=t.w,c=t.h,n=(n||"").split(""),"b"===n[0]&&(i+=c),"r"===n[1]&&(r+=l),"c"===n[0]&&(i+=u(c/2)),"c"===n[1]&&(r+=u(l/2)),"b"===n[3]&&(i-=s),"r"===n[4]&&(r-=a),"c"===n[3]&&(i-=u(s/2)),"c"===n[4]&&(r-=u(a/2)),o(r,i,a,s)}function t(t,n,r,i){var o,a;for(a=0;a<i.length;a++)if(o=e(t,n,i[a]),o.x>=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a];return null}function n(e,t,n){return o(e.x-t,e.y-n,e.w+2*t,e.h+2*n)}function r(e,t){var n,r,i,a;return n=l(e.x,t.x),r=l(e.y,t.y),i=s(e.x+e.w,t.x+t.w),a=s(e.y+e.h,t.y+t.h),i-n<0||a-r<0?null:o(n,r,i-n,a-r)}function i(e,t,n){var r,i,a,s,u,c,d,f,p,h;return u=e.x,c=e.y,d=e.x+e.w,f=e.y+e.h,p=t.x+t.w,h=t.y+t.h,r=l(0,t.x-u),i=l(0,t.y-c),a=l(0,d-p),s=l(0,f-h),u+=r,c+=i,n&&(d+=r,f+=i,u-=a,c-=s),d-=a,f-=s,o(u,c,d-u,f-c)}function o(e,t,n,r){return{x:e,y:t,w:n,h:r}}function a(e){return o(e.left,e.top,e.width,e.height)}var s=Math.min,l=Math.max,u=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i,create:o,fromClientRect:a}}),r(u,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;e<t;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&u(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(e){return new t(function(t,n){n(e)})},t.race=function(e){return new t(function(t,n){for(var r=0,i=e.length;r<i;r++)e[r].then(t,n)})},t}),r(c,[u],function(e){function t(e,t){function n(e){window.setTimeout(e,0)}var r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r<o.length&&!i;r++)i=window[o[r]+"RequestAnimationFrame"];i||(i=n),i(e,t)}function n(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)}function r(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)}function i(e){return clearTimeout(e)}function o(e){return clearInterval(e)}function a(e,t){var r,i;return i=function(){var i=arguments;clearTimeout(r),r=n(function(){e.apply(this,i)},t)},i.stop=function(){clearTimeout(r)},i}var s;return{requestAnimationFrame:function(n,r){return s?void s.then(n):void(s=new e(function(e){r||(r=document.body),t(e,r)}).then(n))},setTimeout:n,setInterval:r,setEditorTimeout:function(e,t,r){return n(function(){e.removed||t()},r)},setEditorInterval:function(e,t,n){var i;return i=r(function(){e.removed?clearInterval(i):t()},n)},debounce:a,throttle:a,clearInterval:o,clearTimeout:i}}),r(d,[],function(){function e(e){return"matchMedia"in window&&matchMedia(e).matches}var t=navigator,n=t.userAgent,r,i,o,a,s,l,u,c,d,f,p,h,m;r=window.opera&&window.opera.buildNumber,d=/Android/.test(n),i=/WebKit/.test(n),o=!i&&!r&&/MSIE/gi.test(n)&&/Explorer/gi.test(t.appName),o=o&&/MSIE (\w+)\./.exec(n)[1],a=n.indexOf("Trident/")!=-1&&(n.indexOf("rv:")!=-1||t.appName.indexOf("Netscape")!=-1)&&11,s=n.indexOf("Edge/")!=-1&&!o&&!a&&12,o=o||a||s,l=!i&&!a&&/Gecko/.test(n),u=n.indexOf("Mac")!=-1,c=/(iPad|iPhone)/.test(n),f="FormData"in window&&"FileReader"in window&&"URL"in window&&!!URL.createObjectURL,p=e("only screen and (max-device-width: 480px)")&&(d||c),h=e("only screen and (min-width: 800px)")&&(d||c),m=n.indexOf("Windows Phone")!=-1,s&&(i=!1);var g=!c||f||n.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:r,webkit:i,ie:o,gecko:l,mac:u,iOS:c,android:d,contentEditable:g,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=o,range:window.getSelection&&"Range"in window,documentMode:o&&!s?document.documentMode||7:10,fileApi:f,ceFalse:o===!1||o>8,canHaveCSP:o===!1||o>11,desktop:!p&&!h,windowsPhone:m}}),r(f,[c,d],function(e,t){function n(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function r(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function i(e,t){var n,r=t;return n=e.path,n&&n.length>0&&(r=n[0]),e.deepPath&&(n=e.deepPath(),n&&n.length>0&&(r=n[0])),r}function o(e,n){function r(){return!1}function o(){return!0}var a,s=n||{},l;for(a in e)c[a]||(s[a]=e[a]);if(s.target||(s.target=s.srcElement||document),t.experimentalShadowDom&&(s.target=i(e,s.target)),e&&u.test(e.type)&&e.pageX===l&&e.clientX!==l){var d=s.target.ownerDocument||document,f=d.documentElement,p=d.body;s.pageX=e.clientX+(f&&f.scrollLeft||p&&p.scrollLeft||0)-(f&&f.clientLeft||p&&p.clientLeft||0),s.pageY=e.clientY+(f&&f.scrollTop||p&&p.scrollTop||0)-(f&&f.clientTop||p&&p.clientTop||0)}return s.preventDefault=function(){s.isDefaultPrevented=o,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},s.stopPropagation=function(){s.isPropagationStopped=o,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},s.stopImmediatePropagation=function(){s.isImmediatePropagationStopped=o,s.stopPropagation()},s.isDefaultPrevented||(s.isDefaultPrevented=r,s.isPropagationStopped=r,s.isImmediatePropagationStopped=r),"undefined"==typeof s.metaKey&&(s.metaKey=!1),s}function a(t,i,o){function a(){o.domLoaded||(o.domLoaded=!0,i(c))}function s(){("complete"===u.readyState||"interactive"===u.readyState&&u.body)&&(r(u,"readystatechange",s),a())}function l(){try{u.documentElement.doScroll("left")}catch(t){return void e.setTimeout(l)}a()}var u=t.document,c={type:"ready"};return o.domLoaded?void i(c):(u.addEventListener?"complete"===u.readyState?a():n(t,"DOMContentLoaded",a):(n(u,"readystatechange",s),u.documentElement.doScroll&&t.self===t.top&&l()),void n(t,"load",a))}function s(){function e(e,t){var n,r,o,a,s=i[t];if(n=s&&s[e.type])for(r=0,o=n.length;r<o;r++)if(a=n[r],a&&a.func.call(a.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var t=this,i={},s,u,c,d,f;u=l+(+new Date).toString(32),d="onmouseenter"in document.documentElement,c="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},s=1,t.domLoaded=!1,t.events=i,t.bind=function(r,l,p,h){function m(t){e(o(t||E.event),g)}var g,v,y,b,C,x,w,E=window;if(r&&3!==r.nodeType&&8!==r.nodeType){for(r[u]?g=r[u]:(g=s++,r[u]=g,i[g]={}),h=h||r,l=l.split(" "),y=l.length;y--;)b=l[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),t.domLoaded&&"ready"===b&&"complete"==r.readyState?p.call(h,o({type:b})):(d||(C=f[b],C&&(x=function(t){var n,r;if(n=t.currentTarget,r=t.relatedTarget,r&&n.contains)r=n.contains(r);else for(;r&&r!==n;)r=r.parentNode;r||(t=o(t||E.event),t.type="mouseout"===t.type?"mouseleave":"mouseenter",t.target=n,e(t,g))})),c||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(t){t=o(t||E.event),t.type="focus"===t.type?"focusin":"focusout",e(t,g)}),v=i[g][b],v?"ready"===b&&t.domLoaded?p({type:b}):v.push({func:p,scope:h}):(i[g][b]=v=[{func:p,scope:h}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?a(r,x,t):n(r,C||b,x,w)));return r=v=0,p}},t.unbind=function(e,n,o){var a,s,l,c,d,f;if(!e||3===e.nodeType||8===e.nodeType)return t;if(a=e[u]){if(f=i[a],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],s=f[d]){if(o)for(c=s.length;c--;)if(s[c].func===o){var p=s.nativeHandler,h=s.fakeName,m=s.capture;s=s.slice(0,c).concat(s.slice(c+1)),s.nativeHandler=p,s.fakeName=h,s.capture=m,f[d]=s}o&&0!==s.length||(delete f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture))}}else{for(d in f)s=f[d],r(e,s.fakeName||d,s.nativeHandler,s.capture);f={}}for(d in f)return t;delete i[a];try{delete e[u]}catch(g){e[u]=null}}return t},t.fire=function(n,r,i){var a;if(!n||3===n.nodeType||8===n.nodeType)return t;i=o(null,i),i.type=r,i.target=n;do a=n[u],a&&e(i,a),n=n.parentNode||n.ownerDocument||n.defaultView||n.parentWindow;while(n&&!i.isPropagationStopped());return t},t.clean=function(e){var n,r,i=t.unbind;if(!e||3===e.nodeType||8===e.nodeType)return t;if(e[u]&&i(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(i(e),r=e.getElementsByTagName("*"),n=r.length;n--;)e=r[n],e[u]&&i(e);return t},t.destroy=function(){i={}},t.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var l="mce-data-",u=/^(?:mouse|contextmenu)|click/,c={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1};return s.Event=new s,s.Event.bind(window,"ready",function(){}),s}),r(p,[],function(){function e(e,t,n,r){var i,o,a,s,l,u,d,p,h,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&x.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(x.qsa&&(!P||!P.test(e))){if(p=d=F,h=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(u=_(e),(d=t.getAttribute("id"))?p=d.replace(be,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",l=u.length;l--;)u[l]=p+f(u[l]);h=ye.test(e)&&c(t.parentNode)||t,m=u.join(",")}if(m)try{return Z.apply(n,h.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||X)-(~e.sourceIndex||X);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function u(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=W++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,u=[U,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===U&&s[1]===o)return u[2]=s[2];if(l[r]=u,u[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;i<o;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),u&&t.push(s)));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var u,c,d,f=[],p=[],h=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:h||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(u=g(b,p),i(u,[],s,l),c=u.length;c--;)(d=u[c])&&(b[p[c]]=!(y[p[c]]=d));if(r){if(o||e){if(o){for(u=[],c=b.length;c--;)(d=b[c])&&u.push(y[c]=d);o(null,b=[],u,l)}for(c=b.length;c--;)(d=b[c])&&(u=o?te.call(r,d):f[c])>-1&&(r[u]=!(a[u]=d))}}else b=g(b===a?b.splice(h,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=p(function(e){return e===t},a,!0),u=p(function(e){return te.call(t,e)>-1},a,!0),c=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):u(e,n,r))}];s<i;s++)if(n=w.relative[e[s].type])c=[p(h(c),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;r<i&&!w.relative[e[r].type];r++);return v(s>1&&h(c),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s<r&&y(e.slice(s,r)),r<i&&y(e=e.slice(r)),r<i&&f(e))}c.push(n)}return h(c)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,u){var c,d,f,p=0,h="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",u),C=U+=null==y?1:Math.random()||.1,x=b.length;for(u&&(T=a!==D&&a);h!==x&&null!=(c=b[h]);h++){if(o&&c){for(d=0;f=t[d++];)if(f(c,a,s)){l.push(c);break}u&&(U=C)}i&&((c=!f&&c)&&p--,r&&m.push(c))}if(p+=h,i&&h!==p){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(p>0)for(;h--;)m[h]||v[h]||(v[h]=J.call(l));v=g(v)}Z.apply(l,v),u&&!r&&v.length>0&&p+n.length>1&&e.uniqueSort(l)}return u&&(U=C,T=y),m};return i?r(a):a}var C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F="sizzle"+-new Date,z=window.document,U=0,W=0,V=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},Y=typeof t,X=1<<31,K={}.hasOwnProperty,G=[],J=G.pop,Q=G.push,Z=G.push,ee=G.slice,te=G.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ue=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ce=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),pe={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,Ce=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),xe=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)};try{Z.apply(G=ee.call(z.childNodes),z.childNodes),G[z.childNodes.length].nodeType}catch(we){Z={apply:G.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},N=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},B=e.setDocument=function(e){function t(e){try{return e.top}catch(t){}return null}var n,r=e?e.ownerDocument||e:z,o=r.defaultView;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=r.documentElement,M=!N(r),o&&o!==t(o)&&(o.addEventListener?o.addEventListener("unload",function(){B()},!1):o.attachEvent&&o.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(r.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=ge.test(r.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=F,!r.getElementsByName||!r.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==Y&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(Ce,xe);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Y)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){if(M)return t.getElementsByClassName(e)},O=[],P=[],(x.qsa=ge.test(r.querySelectorAll))&&(i(function(e){e.innerHTML="<select msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||P.push(":checked")}),i(function(e){var t=r.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=ge.test(H=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=H.call(e,"div"),H.call(e,"[s!='']:x"),O.push("!=",ae)}),P=P.length&&new RegExp(P.join("|")),O=O.length&&new RegExp(O.join("|")),n=ge.test(L.compareDocumentPosition),I=n||ge.test(L.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)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=n?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===r||e.ownerDocument===z&&I(z,e)?-1:t===r||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,i=0,o=e.parentNode,s=t.parentNode,l=[e],u=[t];if(!o||!s)return e===r?-1:t===r?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(n=e;n=n.parentNode;)l.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;l[i]===u[i];)i++;return i?a(l[i],u[i]):l[i]===z?-1:u[i]===z?1:0},r):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ce,"='$1']"),x.matchesSelector&&M&&(!O||!O.test(n))&&(!P||!P.test(n)))try{var r=H.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&K.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return i!==t?i:x.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},E=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=E(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=E(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:pe,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(Ce,xe),e[3]=(e[3]||e[4]||e[5]||"").replace(Ce,xe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(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(Ce,xe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=V[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&V(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},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,l){var u,c,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(c=g[F]||(g[F]={}),u=c[e]||[],p=u[0]===U&&u[1],f=u[0]===U&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){c[e]=[U,p,f];break}}else if(y&&(u=(t[F]||(t[F]={}))[e])&&u[0]===U)f=u[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[U,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(Ce,xe),function(t){return(t.textContent||t.innerText||E(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(Ce,xe).toLowerCase(),function(e){var n;do if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!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,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return he.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:u(function(){return[0]}),last:u(function(e,t){return[t-1]}),eq:u(function(e,t,n){return[n<0?n+t:n]}),even:u(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:u(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:u(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:u(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(C in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[C]=s(C);for(C in{submit:!0,reset:!0})w.pseudos[C]=l(C);return d.prototype=w.filters=w.pseudos,w.setFilters=new d,_=e.tokenize=function(t,n){var r,i,o,a,s,l,u,c=$[t+" "];if(c)return n?0:c.slice(0);for(s=t,l=[],u=w.preFilter;s;){r&&!(i=le.exec(s))||(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ue.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in w.filter)!(i=pe[a].exec(s))||u[a]&&!(i=u[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},S=e.compile=function(e,t){var n,r=[],i=[],o=q[e+" "];if(!o){for(t||(t=_(e)),n=t.length;n--;)o=y(t[n]),o[F]?r.push(o):i.push(o);o=q(e,b(i,r)),o.selector=e}return o},k=e.select=function(e,t,n,r){var i,o,a,s,l,u="function"==typeof e&&e,d=!r&&_(e=u.selector||e); +if(n=n||[],1===d.length){if(o=d[0]=d[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ce,xe),t)||[])[0],!t)return n;u&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ce,xe),ye.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(u||S(e,d))(r,t,!M,n,ye.test(e)&&c(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(h,[],function(){function e(e){var t=e,n,r;if(!c(e))for(t=[],n=0,r=e.length;n<r;n++)t[n]=e[n];return t}function n(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;i<o;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function r(e,t){var r=[];return n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return n(e,function(n,i){t&&!t(n,i,e)||r.push(n)}),r}function o(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function a(e,t,n,r){var i=0;for(arguments.length<3&&(n=e[0]);i<e.length;i++)n=t.call(r,n,e[i],i);return n}function s(e,t,n){var r,i;for(r=0,i=e.length;r<i;r++)if(t.call(n,e[r],r,e))return r;return-1}function l(e,n,r){var i=s(e,n,r);return i!==-1?e[i]:t}function u(e){return e[e.length-1]}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{isArray:c,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a,findIndex:s,find:l,last:u}}),r(m,[d,h],function(e,n){function r(e){return null===e||e===t?"":(""+e).replace(h,"")}function i(e,r){return r?!("array"!=r||!n.isArray(e))||typeof e==r:e!==t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function s(e,t,n){var r=this,i,o,a,s,l,u=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},u=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],u?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function l(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;r<i;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function u(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return t.call(i,e,n,r)!==!1&&void u(e,t,r,i)}))}function c(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function d(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;n<r&&(t=t[e[n]],t);n++);return t}function f(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function p(t){var n=e.cacheSuffix;return n&&(t+=(t.indexOf("?")===-1?"?":"&")+n),t}var h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,hasOwn:a,extend:l,create:s,walk:u,createNS:c,resolve:d,explode:f,_addCacheSuffix:p}}),r(g,[f,p,m,d],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function u(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)u(e,t[i],n,r);else for(i=0;i<t.length;i++)u(e,t[i],n,r);return e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function c(e,t){return e&&t&&(" "+e.className+" ").indexOf(" "+t+" ")!==-1}function d(e,t,n){var r,i;return t=f(t)[0],e.each(function(){var e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function f(e,t){return new f.fn.init(e,t)}function p(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function h(e){return null===e||e===k?"":(""+e).replace(P,"")}function m(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else for(i=0;i<n&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function C(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function x(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,E=Array.prototype.push,N=Array.prototype.slice,_=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),A=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),B={"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},P=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:_.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)E.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else E.apply(n,f.makeArray(e));return n},attr:function(e,t){var n=this,r;if("object"==typeof e)m(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=L[e],r&&r.get)return r.get(n[0],e);if(A[e])return n.prop(e)?e:k;t=n[0].getAttribute(e,2),null===t&&(t=k)}return t}this.each(function(){var n;if(1===this.nodeType){if(n=L[e],n&&n.set)return void n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if(e=B[e]||e,"object"==typeof e)m(e,function(e,t){n.prop(e,t)});else{if(!o(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return n},css:function(e,t){function n(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var i=this,a,s;if("object"==typeof e)m(e,function(e,t){i.css(e,t)});else if(o(t))e=n(e),"number"!=typeof t||R[e]||(t+="px"),i.each(function(){var n=this.style;if(s=M[e],s&&s.set)return void s.set(this,t);try{this.style[D[e]||e]=t}catch(i){}null!==t&&""!==t||(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=M[e],s&&s.get)return s.get(a);if(a.ownerDocument.defaultView)try{return a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return k}else if(a.currentStyle)return a.currentStyle[n(e)]}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],S.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){f(t[n]).empty().append(e)}return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in t[n]?t[n].innerText=e:t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return u(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return u(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var e=this;return e[0]&&e[0].parentNode?u(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?u(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return f(e).append(this),this},prependTo:function(e){return f(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return d(this,e)},wrapAll:function(e){return d(this,e,!0)},wrapInner:function(e){return this.each(function(){f(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){f(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),f(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return"string"!=typeof e?n:(e.indexOf(" ")!==-1?m(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(n,r){var i,o;o=c(r,e),o!==t&&(i=r.className,o?r.className=h((" "+i+" ").replace(" "+e+" "," ")):r.className+=i?" "+e:e)}),n)},hasClass:function(e){return c(this[0],e)},each:function(e){return m(this,e)},on:function(e,t){return this.each(function(){S.bind(this,e,t)})},off:function(e,t){return this.each(function(){S.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?S.fire(this,e.type,e):S.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new f(N.apply(this,arguments))},eq:function(e){return e===-1?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:E,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:p,isArray:r.isArray,each:m,trim:h,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return C(e,"nextSibling",1)},prev:function(e){return C(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),0!==e.indexOf("parents")&&"prevUntil"!==e||(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(x(L,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),x(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",x(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(v,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l={},u,c,d,f="\ufeff";for(e=e||{},t&&(c=t.getValidStyles(),d=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+f).split(" "),s=0;s<u.length;s++)l[u[s]]=f+s,l[f+s]=u[s];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function u(e,t,n){var r,i,o,a;if(r=y[e+"-top"+t],r&&(i=y[e+"-right"+t],i&&(o=y[e+"-bottom"+t],o&&(a=y[e+"-left"+t])))){var l=[r,i,o,a];for(s=l.length-1;s--&&l[s]===l[s+1];);s>-1&&n||(y[e+t]=s==-1?l[0]:l.join(" "),delete y[e+"-top"+t],delete y[e+"-right"+t],delete y[e+"-bottom"+t],delete y[e+"-left"+t])}}function c(e){var t=y[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return y[e]=t[0],!0}}function d(e,t,n,r){c(t)&&c(n)&&c(r)&&(y[e]=y[t]+" "+y[n]+" "+y[r],delete y[t],delete y[n],delete y[r])}function p(e){return w=!0,l[e]}function h(e,t){return w&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return l[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function m(e){return String.fromCharCode(parseInt(e.slice(1),16))}function g(e){return e.replace(/\\[0-9a-f]+/gi,m)}function v(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return E&&(n=E.call(N,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var y={},b,C,x,w,E=e.url_converter,N=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,p).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,p)});b=o.exec(t);)if(o.lastIndex=b.index+b[0].length,C=b[1].replace(a,"").toLowerCase(),x=b[2].replace(a,""),C&&x){if(C=g(C),x=g(x),C.indexOf(f)!==-1||C.indexOf('"')!==-1)continue;if(!e.allow_script_urls&&("behavior"==C||/expression\s*\(|\/\*|\*\//.test(x)))continue;"font-weight"===C&&"700"===x?x="bold":"color"!==C&&"background-color"!==C||(x=x.toLowerCase()),x=x.replace(r,n),x=x.replace(i,v),y[C]=w?h(x,!0):x}u("border","",!0),u("border","-width"),u("border","-color"),u("border","-style"),u("padding",""),u("margin",""),d("border","border-width","border-style","border-color"),"medium none"===y.border&&delete y.border,"none"===y["border-image"]&&delete y["border-image"]}return y},serialize:function(e,t){function n(t){var n,r,o,a;if(n=c[t])for(r=0,o=n.length;r<o;r++)t=n[r],a=e[t],a&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=d["*"],(!n||!n[e])&&(n=d[t],!n||!n[e])}var i="",o,a;if(t&&c)n("*"),n(t);else for(o in e)a=e[o],!a||d&&!r(o,t)||(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(y,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}function r(e,n,r,i){var o,a,s;if(e){if(o=e[r],t&&o===t)return;if(o){if(!i)for(s=o[n];s;s=s[n])if(!s[n])return s;return o}if(a=e.parentNode,a&&a!==t)return a}}var i=e;this.current=function(){return i},this.next=function(e){return i=n(i,"firstChild","nextSibling",e)},this.prev=function(e){return i=n(i,"lastChild","previousSibling",e)},this.prev2=function(e){return i=r(i,"lastChild","previousSibling",e)}}}),r(b,[m],function(e){function t(n){function r(){return P.createDocumentFragment()}function i(e,t){E(F,e,t)}function o(e,t){E(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function u(e){o(e.parentNode,j(e)+1)}function c(e){e?(M[V]=M[W],M[$]=M[U]):(M[W]=M[V],M[U]=M[$]),M.collapsed=F}function d(e){a(e),u(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function p(e,t){var n=M[W],r=M[U],i=M[V],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,u=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,u):3===e?w(n,r,l,u):void 0}function h(){N(I)}function m(){return N(O)}function g(){return N(H)}function v(e){var t=this[W],r=this[U],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return q(new t(n),{startContainer:M[W],startOffset:M[U],endContainer:M[V],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(t<0)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return M[W]==M[V]&&M[U]==M[$]}function w(e,t,r,i){var o,a,s,l,u,c;if(e==r)return t==i?0:t<i?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&a<t;)a++,s=s.nextSibling;return t<=a?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&a<i;)a++,s=s.nextSibling;return a<i?-1:1}for(l=n.findCommonAncestor(e,r),u=e;u&&u.parentNode!=l;)u=u.parentNode;for(u||(u=l),c=r;c&&c.parentNode!=l;)c=c.parentNode;if(c||(c=l),u==c)return 0;for(s=l.firstChild;s;){if(s==u)return-1;if(s==c)return 1;s=s.nextSibling}}function E(e,t,r){var i,o;for(e?(M[W]=t,M[U]=r):(M[V]=t,M[$]=r),i=M[V];i.parentNode;)i=i.parentNode;for(o=M[W];o.parentNode;)o=o.parentNode;o==i?w(M[W],M[U],M[V],M[$])>0&&M.collapse(e):M.collapse(e),M.collapsed=x(),M.commonAncestorContainer=n.findCommonAncestor(M[W],M[V])}function N(e){var t,n=0,r=0,i,o,a,s,l,u;if(M[W]==M[V])return _(e);for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[W])return S(t,e);++n}for(t=M[W],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return k(t,e);++r}for(o=r-n,a=M[W];o>0;)a=a.parentNode,o--;for(s=M[V];o<0;)s=s.parentNode,o++;for(l=a.parentNode,u=s.parentNode;l!=u;l=l.parentNode,u=u.parentNode)a=l,s=u;return T(a,s,e)}function _(e){var t,n,i,o,a,s,l,u,c;if(e!=I&&(t=r()),M[U]==M[$])return t;if(3==M[W].nodeType){if(n=M[W].nodeValue,i=n.substring(M[U],M[$]),e!=H&&(o=M[W],u=M[U],c=M[$]-M[U],0===u&&c>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(u,c),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(P.createTextNode(i)),t}for(o=C(M[W],M[U]),a=M[$]-M[U];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=H&&M.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[U],a<=0)return t!=H&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=H&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=H&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,u,c;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,u=e.nextSibling;l>0;)c=u.nextSibling,i=D(u,n),o&&o.appendChild(i),u=c,--l;return i=R(t,n),o&&o.appendChild(i),n!=H&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=C(M[V],M[$]-1),r,i,o,a,s,l=n!=M[V];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(M[W],M[U]),r=n!=M[W],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,u;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[U],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=H&&(e.nodeValue=s),i==I)return;return u=n.clone(e,z),u.nodeValue=a,u}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==H?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var M=this,P=n.doc,O=0,H=1,I=2,F=!0,z=!1,U="startOffset",W="startContainer",V="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(M,{startContainer:P,startOffset:0,endContainer:P,endOffset:0,collapsed:F,commonAncestorContainer:P,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:u,collapse:c,selectNode:d,selectNodeContents:f,compareBoundaryPoints:p,deleteContents:h,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(C,[m],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/[<>&\"\']/g,c=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},a={"<":"<",">":">","&":"&",""":'"',"'":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(u,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function u(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?u:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(c,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(x,[m,c],function(e,t){return function(n,r){function i(e){n.getElementsByTagName("head")[0].appendChild(e)}function o(r,o,u){function c(){for(var e=b.passed,t=e.length;t--;)e[t]();b.status=2,b.passed=[],b.failed=[]}function d(){for(var e=b.failed,t=e.length;t--;)e[t]();b.status=3,b.passed=[],b.failed=[]}function f(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function p(e,n){e()||((new Date).getTime()-y<l?t.setTimeout(n):d())}function h(){p(function(){for(var e=n.styleSheets,t,r=e.length,i;r--;)if(t=e[r],i=t.ownerNode?t.ownerNode:t.owningElement,i&&i.id===g.id)return c(),!0},h)}function m(){p(function(){try{var e=v.sheet.cssRules;return c(),!!e}catch(t){}},m)}var g,v,y,b;if(r=e._addCacheSuffix(r),s[r]?b=s[r]:(b={passed:[],failed:[]},s[r]=b),o&&b.passed.push(o),u&&b.failed.push(u),1!=b.status){if(2==b.status)return void c();if(3==b.status)return void d();if(b.status=1,g=n.createElement("link"),g.rel="stylesheet",g.type="text/css",g.id="u"+a++,g.async=!1,g.defer=!1,y=(new Date).getTime(),"onload"in g&&!f())g.onload=h,g.onerror=d;else{if(navigator.userAgent.indexOf("Firefox")>0)return v=n.createElement("style"),v.textContent='@import "'+r+'"',m(),void i(v);h()}i(g),g.href=r}}var a=0,s={},l;r=r||{},l=r.maxLoadTime||5e3,this.load=o}}),r(w,[p,g,v,f,y,b,C,d,m,x],function(e,n,r,i,o,a,s,l,u,c){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function p(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n}function h(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new c(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var m=u.each,g=u.is,v=u.grep,y=u.trim,b=l.ie,C=/^([a-z0-9],?)+$/i,x=/^[ \t\r\n]*$/;return h.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(b&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),n.indexOf("px")===-1&&(n=0),r.indexOf("px")===-1&&(r=0), +{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(C.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,u;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return u=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=u.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=u.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==h.DOM&&n===document){var o=h.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,h.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==h.DOM&&n===document?void h.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void m(e.split(","),function(e){var i;e=u._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div></div>").html("<br>"+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("<div></div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(u.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),!!e&&(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i))},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,u,c=0;if(e=e.firstChild){l=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null),s=n.schema?n.schema.getWhiteSpaceElements():{};do{if(a=e.nodeType,1===a){var d=e.getAttribute("data-mce-bogus");if(d){e=l.next("all"===d);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){c++,e=l.next();continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(u=i[r].nodeName,"name"===u||"data-mce-bookmark"===u)return!1}if(8==a)return!1;if(3===a&&!x.test(e.nodeValue))return!1;if(3===a&&e.parentNode&&s[e.parentNode.nodeName]&&x.test(e.nodeValue))return!1;e=l.next()}while(e)}return c<=1},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:p,split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;if(e&&t)return o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.insertBefore(n,e):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t},bind:function(e,t,n,r){var i=this;if(u.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(u.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},h.DOM=new h(document),h.nodeIndex=p,h}),r(E,[w,m],function(e,t){function n(){function e(e,n,i){function o(){l.remove(c),u&&(u.onreadystatechange=u.onload=u=null),n()}function s(){a(i)?i():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+e)}var l=r,u,c;c=l.uniqueId(),u=document.createElement("script"),u.id=c,u.type="text/javascript",u.src=t._addCacheSuffix(e),"onreadystatechange"in u?u.onreadystatechange=function(){/loaded|complete/.test(u.readyState)&&o()}:u.onload=o,u.onerror=s,(document.getElementsByTagName("head")[0]||document.body).appendChild(u)}var n=0,s=1,l=2,u=3,c={},d=[],f={},p=[],h=0,m;this.isDone=function(e){return c[e]==l},this.markDone=function(e){c[e]=l},this.add=this.load=function(e,t,r,i){var o=c[e];o==m&&(d.push(e),c[e]=n),t&&(f[e]||(f[e]=[]),f[e].push({success:t,failure:i,scope:r||this}))},this.remove=function(e){delete c[e],delete f[e]},this.loadQueue=function(e,t,n){this.loadScripts(d,e,t,n)},this.loadScripts=function(t,n,r,d){function g(e,t){i(f[t],function(t){a(t[e])&&t[e].call(t.scope)}),f[t]=m}var v,y=[];p.push({success:n,failure:d,scope:r||this}),(v=function(){var n=o(t);t.length=0,i(n,function(t){return c[t]===l?void g("success",t):c[t]===u?void g("failure",t):void(c[t]!==s&&(c[t]=s,h++,e(t,function(){c[t]=l,h--,g("success",t),v()},function(){c[t]=u,h--,y.push(t),g("failure",t),v()})))}),h||(i(p,function(e){0===y.length?a(e.success)&&e.success.call(e.scope):a(e.failure)&&e.failure.call(e.scope,y)}),p.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep,a=function(e){return"function"==typeof e};return n.ScriptLoader=new n,n}),r(N,[E,m],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",n.indexOf(","+i.substr(0,2)+",")!=-1)i=i.substr(0,2);else if(n.indexOf(","+i+",")==-1)return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},remove:function(e){delete this.urls[e],delete this.lookup[e]},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s,l){function u(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,d=o;c.urls[n]||("object"==typeof o&&(d=o.prefix+o.resource+o.suffix),0!==d.indexOf("/")&&d.indexOf("://")==-1&&(d=r.baseURL+"/"+d),c.urls[n]=d.substring(0,d.lastIndexOf("/")),c.lookup[n]?u():e.ScriptLoader.add(d,u,s,l))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(_,[],function(){function e(e){return function(t){return!!t&&t.nodeType==e}}function t(e){return e=e.toLowerCase().split(" "),function(t){var n,r;if(t&&t.nodeType)for(r=t.nodeName.toLowerCase(),n=0;n<e.length;n++)if(r===e[n])return!0;return!1}}function n(e,t){return t=t.toLowerCase().split(" "),function(n){var r,i;if(s(n))for(r=0;r<t.length;r++)if(i=getComputedStyle(n,null).getPropertyValue(e),i===t[r])return!0;return!1}}function r(e,t){return function(n){return s(n)&&n[e]===t}}function i(e,t){return function(n){return s(n)&&n.getAttribute(e)===t}}function o(e){return s(e)&&e.hasAttribute("data-mce-bogus")}function a(e){return function(t){if(s(t)){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}return!1}}var s=e(1);return{isText:e(3),isElement:s,isComment:e(8),isBr:t("br"),isContentEditableTrue:a("true"),isContentEditableFalse:a("false"),matchNodeNames:t,hasPropValue:r,hasAttributeValue:i,matchStyleValues:n,isBogus:o}}),r(S,[],function(){function e(e){return e==n}function t(e){return e.replace(new RegExp(n,"g"),"")}var n="\ufeff";return{isZwsp:e,ZWSP:n,trim:t}}),r(k,[_,S],function(e,t){function n(e){return y(e)&&(e=e.parentNode),v(e)&&e.hasAttribute("data-mce-caret")}function r(e){return y(e)&&t.isZwsp(e.data)}function i(e){return n(e)||r(e)}function o(e){var t=e.parentNode;t&&t.removeChild(e)}function a(e){try{return e.nodeValue}catch(t){return""}}function s(e,t){0===t.length?o(e):e.nodeValue=t}function l(e,n){var r,o,a,s;if(r=e.ownerDocument,a=r.createTextNode(t.ZWSP),s=e.parentNode,n){if(o=e.previousSibling,y(o)){if(i(o))return o;if(h(o))return o.splitText(o.data.length-1)}s.insertBefore(a,e)}else{if(o=e.nextSibling,y(o)){if(i(o))return o;if(p(o))return o.splitText(1),o}e.nextSibling?s.insertBefore(a,e.nextSibling):s.appendChild(a)}return a}function u(){var e=document.createElement("br");return e.setAttribute("data-mce-bogus","1"),e}function c(e,t,n){var r,i,o;return r=t.ownerDocument,i=r.createElement(e),i.setAttribute("data-mce-caret",n?"before":"after"),i.setAttribute("data-mce-bogus","all"),i.appendChild(u()),o=t.parentNode,n?o.insertBefore(i,t):t.nextSibling?o.insertBefore(i,t.nextSibling):o.appendChild(i),i}function d(t){return t.firstChild!==t.lastChild||!e.isBr(t.firstChild)}function f(e){if(v(e)&&i(e)&&(d(e)?e.removeAttribute("data-mce-caret"):o(e)),y(e)){var n=t.trim(a(e));s(e,n)}}function p(e){return y(e)&&e.data[0]==t.ZWSP}function h(e){return y(e)&&e.data[e.data.length-1]==t.ZWSP}function m(t){var n=t.getElementsByTagName("br"),r=n[n.length-1];e.isBogus(r)&&r.parentNode.removeChild(r)}function g(e){return e&&e.hasAttribute("data-mce-caret")?(m(e),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null}var v=e.isElement,y=e.isText;return{isCaretContainer:i,isCaretContainerBlock:n,isCaretContainerInline:r,showCaretContainerBlock:g,insertInline:l,insertBlock:c,hasContent:d,remove:f,startsWithCaretContainer:p,endsWithCaretContainer:h}}),r(T,[m,y,_,b,k],function(e,t,n,r,i){function o(e){return m(e)||g(e)}function a(e,t){var n=e.childNodes;return t--,t>n.length-1?t=n.length-1:t<0&&(t=0),n[t]||e}function s(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}function l(e,t,n){return null!==s(e,t,n)}function u(e){return"_mce_caret"===e.id}function c(e,t){return v(e)&&l(e,t,u)===!1}function d(e){this.walk=function(t,n){function r(e){var t;return t=e[0],3===t.nodeType&&t===l&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===d&&e.length>0&&t===c&&3===t.nodeType&&e.splice(e.length-1,1),e}function i(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function o(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function s(e,t,o){var a=o?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=i(g==e?g:g[a],a),y.length&&(o||y.reverse(),n(r(y)))}var l=t.startContainer,u=t.startOffset,c=t.endContainer,d=t.endOffset,f,p,m,g,v,y,b;if(b=e.select("td[data-mce-selected],th[data-mce-selected]"),b.length>0)return void h(b,function(e){n([e])});if(1==l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[u]),1==c.nodeType&&c.hasChildNodes()&&(c=a(c,d)),l==c)return n(r([l]));for(f=e.findCommonAncestor(l,c),g=l;g;g=g.parentNode){if(g===c)return s(l,f,!0);if(g===f)break}for(g=c;g;g=g.parentNode){if(g===l)return s(c,f);if(g===f)break}p=o(l,f)||l,m=o(c,f)||c,s(l,p,!0),y=i(p==l?p:p.nextSibling,"nextSibling",m==c?m.nextSibling:m),y.length&&n(r(y)),s(c,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function r(r){function a(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function s(n,r){for(var i=new t(n,e.getParent(n.parentNode,e.isBlock)||m);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function l(e){for(;e&&e!=m;){if(g(e))return!0;e=e.parentNode}return!1}function u(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function d(n,r){var a,s,l;if(r=r||f,l=e.getParent(r.parentNode,e.isBlock)||m,n&&"BR"==r.nodeName&&x&&e.isEmpty(l))return f=r.parentNode,p=e.nodeIndex(r),void(i=!0);for(a=new t(r,l);y=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(y)||c(y,e.getRoot()))return;if(3===y.nodeType&&y.nodeValue.length>0)return f=y,p=n?y.nodeValue.length:0,void(i=!0);if(e.isBlock(y)||b[y.nodeName.toLowerCase()])return;s=y}o&&s&&(f=s,i=!0,p=0)}var f,p,h,m=e.getRoot(),y,b,C,x;if(f=n[(r?"start":"end")+"Container"],p=n[(r?"start":"end")+"Offset"],x=1==f.nodeType&&p===f.childNodes.length,b=e.schema.getNonEmptyElements(),C=r,!v(f)){if(1==f.nodeType&&p>f.childNodes.length-1&&(C=!1),9===f.nodeType&&(f=e.getRoot(),p=0),f===m){if(C&&(y=f.childNodes[p>0?p-1:0])){if(v(y))return;if(b[y.nodeName]||"TABLE"==y.nodeName)return}if(f.hasChildNodes()){if(p=Math.min(!C&&p>0?p-1:p,f.childNodes.length-1),f=f.childNodes[p],p=0,!o&&f===m.lastChild&&"TABLE"===f.nodeName)return;if(l(f)||v(f))return;if(f.hasChildNodes()&&!/TABLE/.test(f.nodeName)){y=f,h=new t(f,m);do{if(g(y)||v(y)){i=!1;break}if(3===y.nodeType&&y.nodeValue.length>0){p=C?0:y.nodeValue.length,f=y,i=!0;break}if(b[y.nodeName.toLowerCase()]&&!a(y)){p=e.nodeIndex(y),f=y.parentNode,"IMG"!=y.nodeName||C||p++,i=!0;break}}while(y=C?h.next():h.prev())}}}o&&(3===f.nodeType&&0===p&&d(!0),1===f.nodeType&&(y=f.childNodes[p],y||(y=f.childNodes[p-1]),!y||"BR"!==y.nodeName||u(y,"A")||s(y)||s(y,!0)||d(!0,y))),C&&!o&&3===f.nodeType&&p===f.nodeValue.length&&d(!1),i&&n["set"+(r?"Start":"End")](f,p)}}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}function f(t,n,r){var i,o,a;if(i=r.elementFromPoint(t,n),o=r.body.createTextRange(),i&&"HTML"!=i.tagName||(i=r.body),o.moveToElementText(i),a=e.toArray(o.getClientRects()),a=a.sort(function(e,t){return e=Math.abs(Math.max(e.top-n,e.bottom-n)),t=Math.abs(Math.max(t.top-n,t.bottom-n)),e-t}),a.length>0){n=(a[0].bottom+a[0].top)/2;try{return o.moveToPoint(t,n),o.collapse(!0),o}catch(s){}}return null}function p(e,t){var n=e&&e.parentElement?e.parentElement():null;return g(s(n,t,o))?null:e}var h=e.each,m=n.isContentEditableTrue,g=n.isContentEditableFalse,v=i.isCaretContainer;return d.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},d.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r=f(e,t,n)}return p(r,n.body)}return r},d.getSelectedNode=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset==n+1?t.childNodes[n]:null},d.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},d}),r(R,[T,d,c],function(e,t,n){return function(r){function i(e){var t,n;if(n=r.$(e).parentsUntil(r.getBody()).add(e),n.length===a.length){for(t=n.length;t>=0&&n[t]===a[t];t--);if(t===-1)return a=n,!0}return a=n,!1}var o,a=[];"onselectionchange"in r.getDoc()||r.on("NodeChange Click MouseUp KeyUp Focus",function(t){var n,i;n=r.selection.getRng(),i={startContainer:n.startContainer,startOffset:n.startOffset,endContainer:n.endContainer,endOffset:n.endOffset},"nodechange"!=t.type&&e.compareRanges(i,o)||r.fire("SelectionChange"),o=i}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!t.range&&r.selection.isCollapsed()||!i(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==r.selection.getNode().nodeName?n.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())}),this.nodeChanged=function(e){var t=r.selection,n,i,o;r.initialized&&t&&!r.settings.disable_nodechange&&!r.readonly&&(o=r.getBody(),n=t.getStart()||o,n.ownerDocument==r.getDoc()&&r.dom.isChildOf(n,o)||(n=o),"IMG"==n.nodeName&&t.isCollapsed()&&(n=n.parentNode),i=[],r.dom.getParent(n,function(e){return e===o||void i.push(e)}),e=e||{},e.element=n,e.parents=i,r.fire("NodeChange",e))}}}),r(A,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;r<i;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t,r){var i=this,o=i.firstChild,a,s;if(r=r||{},o)do{if(1===o.type){if(o.attributes.map["data-mce-bogus"])continue;if(t[o.name])return!1;for(a=o.attributes.length;a--;)if(s=o.attributes[a].name,"name"===s||0===s.indexOf("data-mce-bookmark"))return!1}if(8===o.type)return!1;if(3===o.type&&!n.test(o.value))return!1;if(3===o.type&&o.parent&&r[o.parent.name]&&n.test(o.value))return!1}while(o=e(o,i));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(B,[m],function(e){function t(t,n){return t=e.trim(t),t?t.split(n||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;r<i;r++)n[e[r]]=t||{};return n}var s,u,c;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),e=t(e),s=e.length;s--;)u=t([l,n].join(" ")),c={attributes:i(u),attributesOrder:u,children:i(r,o)},a[e[s]]=c}function r(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;o<s;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,u,c,d,f,p;return i[e]?i[e]:(l="id accesskey class dir lang style tabindex title",u="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",c="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!=e&&(l+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",u+=" article aside details dialog figure header footer hgroup section nav",c+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!=e&&(l+=" xml:lang",p="acronym applet basefont big font strike tt",c=[c,p].join(" "),s(t(p),function(e){n(e,"",c)}),f="center dir isindex noframes",u=[u,f].join(" "),d=[u,c].join(" "),s(t(f),function(e){n(e,"",d)})),d=d||[u,c].join(" "),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",c),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",c),n("q","cite",c),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",[d,"param"].join(" ")),n("param","name value"),n("map","name",[d,"area"].join(" ")),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",[d,"legend"].join(" ")),n("label","form for",c),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:c),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",[d,"li"].join(" ")),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",[c,"rt rp"].join(" ")),n("figcaption","",d),n("mark rt rp summary bdi","",c),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[d,"track source"].join(" ")),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[d,"track source"].join(" ")),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",[c,"option"].join(" ")),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",[d,"figcaption"].join(" ")),n("time","datetime",c),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",c),n("progress","value max",c),n("meter","value min max low high optimum",c),n("details","open",[d,"summary"].join(" ")),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"), +r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):u(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,u=e.explode,c=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,u,f,p,h,m,g,v,b,x,w,E,N,_,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,E=y["@"].attributesOrder),n=0,r=e.length;n<r;n++)if(s=S.exec(e[n])){if(b=s[1],p=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(N in w)g[N]=w[N];v.push.apply(v,E)}if(f)for(f=t(f,"|"),i=0,o=f.length;i<o;i++)if(s=k.exec(f[i])){if(u={},m=s[1],h=s[2].replace(/::/g,":"),b=s[3],_=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(h),u.required=!0),"-"===m){delete g[h],v.splice(c(v,h),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:h,value:_}),u.defaultValue=_),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:h,value:_}),u.forcedValue=_),"<"===b&&(u.validValues=a(_,"?"))),T.test(h)?(l.attributePatterns=l.attributePatterns||[],u.pattern=d(h),l.attributePatterns.push(u)):(g[h]||v.push(h),g[h]=u)}w||"@"!=p||(w=g,E=v),x&&(l.outputName=p,y[x]=l),T.test(p)?(l.pattern=d(p),C.push(l)):y[p]=l}}function p(e){y={},C=[],f(e),s(E,function(e,t){b[t]=e.children})}function h(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],M[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(n){var r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var v=this,y={},b={},C=[],x,w,E,N,_,S,k,T,R,A,B,D,L,M={},P={};e=e||{},E=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),N=o("whitespace_elements","pre script noscript style textarea video audio iframe object code"),_=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),S=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),k=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script pre code",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption",D),L=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){P[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?p(e.valid_elements):(s(E,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),h(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),s({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,n){y[n]&&(y[n].parentsRequired=t(e))}),e.invalid_elements&&s(u(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return x},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return k},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return L},v.getShortEndedElements=function(){return S},v.getSelfClosingElements=function(){return _},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return N},v.getSpecialElements=function(){return P},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return M},v.addValidElements=f,v.setValidElements=p,v.addCustomElements=h,v.addValidChildren=m,v.elements=y}}),r(D,[B,C,m],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=p.length;t--&&p[t].name!==e;);if(t>=0){for(n=p.length-1;n>=t;n--)e=p[n],e.valid&&l.end(e.name);p.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in x?t:z(n||r||o||""),E&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););s===-1&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(W[t]&&!i.allow_script_urls){var u=n.replace(l,"");try{u=decodeURIComponent(u)}catch(c){u=unescape(u)}if(V.test(u))return;if(!i.allow_html_data_urls&&$.test(u)&&!/^data:image\//i.test(u))return}h.map[t]=n,h.push({name:t,value:n})}var l=this,u,c=0,d,f,p=[],h,m,g,v,y,b,C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F=0,z=t.decode,U,W=n.makeMap("src,href,data,background,formaction,poster"),V=/((java|vb)script|mhtml):/i,$=/^data:/i;for(P=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),O=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,C=a.getShortEndedElements(),M=i.self_closing_elements||a.getSelfClosingElements(),x=a.getBoolAttrs(),E=i.validate,b=i.remove_internals,U=i.fix_self_closing,H=a.getSpecialElements();u=P.exec(e);){if(c<u.index&&l.text(z(e.substr(c,u.index-c))),d=u[6])d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),o(d);else if(d=u[7]){if(d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),w=d in C,U&&M[d]&&p.length>0&&p[p.length-1].name===d&&o(d),!E||(N=a.getElementRule(d))){if(_=!0,E&&(T=N.attributes,R=N.attributePatterns),(k=u[8])?(y=k.indexOf("data-mce-type")!==-1,y&&b&&(_=!1),h=[],h.map={},k.replace(O,s)):(h=[],h.map={}),E&&!y){if(A=N.attributesRequired,B=N.attributesDefault,D=N.attributesForced,L=N.removeEmptyAttrs,L&&!h.length&&(_=!1),D)for(m=D.length;m--;)S=D[m],v=S.name,I=S.value,"{$uid}"===I&&(I="mce_"+F++),h.map[v]=I,h.push({name:v,value:I});if(B)for(m=B.length;m--;)S=B[m],v=S.name,v in h.map||(I=S.value,"{$uid}"===I&&(I="mce_"+F++),h.map[v]=I,h.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in h.map););m===-1&&(_=!1)}if(S=h.map["data-mce-bogus"]){if("all"===S){c=r(a,e,P.lastIndex),P.lastIndex=c;continue}_=!1}}_&&l.start(d,h,w)}else _=!1;if(f=H[d]){f.lastIndex=c=u.index+u[0].length,(u=f.exec(e))?(_&&(g=e.substr(c,u.index-c)),c=u.index+u[0].length):(g=e.substr(c),c=e.length),_&&(g.length>0&&l.text(g,!0),l.end(d)),P.lastIndex=c;continue}w||(k&&k.indexOf("/")==k.length-1?_&&l.end(d):p.push({name:d,valid:_}))}else(d=u[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3).toLowerCase()||(d=" "+d),l.comment(d)):(d=u[2])?l.cdata(d):(d=u[3])?l.doctype(d):(d=u[4])&&l.pi(d,u[5]);c=u.index+u[0].length}for(c<e.length&&l.text(z(e.substr(c))),m=p.length-1;m>=0;m--)d=p[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(L,[A,B,D,m],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend,l=function(t,n){t.padd_empty_with_br?n.empty().append(new e("br","1")).shortEnded=!0:n.empty().append(new e("#text","3")).value="\xa0"},u=function(e,t){return e&&e.firstChild===e.lastChild&&e.firstChild.name===t};return function(c,d){function f(t){var n,r,o,a,s,l,c,f,h,m,g,v,y,b,C,x;for(v=i("tr,td,th,tbody,thead,tfoot,table"),m=d.getNonEmptyElements(),g=d.getWhiteSpaceElements(),y=d.getTextBlockElements(),b=d.getSpecialElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(y[r.name]&&"li"==r.parent.name){for(C=r.next;C&&y[C.name];)C.name="li",C.fixed=!0,r.parent.insert(C,r.parent),C=C.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!d.isValidChild(o.name,r.name)&&!v[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=l=p.filterNode(a[0].clone()),h=0;h<a.length-1;h++){for(d.isValidChild(l.name,a[h].name)?(c=p.filterNode(a[h].clone()),l.append(c)):c=l,f=a[h].firstChild;f&&f!=a[h+1];)x=f.next,c.append(f),f=x;l=c}s.isEmpty(m,g)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(m,g)||u(o,"br"))&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(C=r.prev,C&&("ul"===C.name||"ul"===C.name)){C.append(r);continue}if(C=r.next,C&&("ul"===C.name||"ul"===C.name)){C.insert(r,C.firstChild,!0);continue}r.wrap(p.filterNode(new e("ul",1)));continue}d.isValidChild(r.parent.name,"div")&&d.isValidChild("div",r.name)?r.wrap(p.filterNode(new e("div",1))):b[r.name]?r.empty().remove():r.unwrap()}}}var p=this,h={},m=[],g={},v={};c=c||{},c.validate=!("validate"in c)||c.validate,c.root_name=c.root_name||"body",p.schema=d=d||new t,p.filterNode=function(e){var t,n,r;n in h&&(r=g[n],r?r.push(e):g[n]=[e]),t=m.length;for(;t--;)n=m[t].name,n in e.attributes.map&&(r=v[n],r?r.push(e):v[n]=[e]);return e},p.addNodeFilter=function(e,t){o(a(e),function(e){var n=h[e];n||(h[e]=n=[]),n.push(t)})},p.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<m.length;n++)if(m[n].name===e)return void m[n].callbacks.push(t);m.push({name:e,callbacks:[t]})})},p.parse=function(t,r){function o(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(A,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(L,"")))}var t=b.firstChild,n,r;if(d.isValidChild(b.name,F.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!R[t.name]&&!t.attr("data-mce-type")?r?r.append(t):(r=a(F,1),r.attr(c.forced_root_block_attrs),b.insert(r,t),r.append(t)):(e(r),r=null),t=n;e(r)}}function a(t,n){var r=new e(t,n),i;return t in h&&(i=g[t],i?i.push(r):g[t]=[r]),r}function u(e){var t,n,r,i,o=d.getBlockElements();for(t=e.prev;t&&3===t.type;){if(r=t.value.replace(L,""),r.length>0)return void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function p(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var y,b,C,x,w,E,N,_,S,k,T,R,A,B=[],D,L,M,P,O,H,I,F;if(r=r||{},g={},v={},R=s(i("script,style,head,html,body,title,meta,param"),d.getBlockElements()),I=d.getNonEmptyElements(),H=d.children,T=c.validate,F="forced_root_block"in r?r.forced_root_block:c.forced_root_block,O=d.getWhiteSpaceElements(),A=/^[ \t\r\n]+/,L=/[ \t\r\n]+$/,M=/[ \t\r\n]+/g,P=/^[ \t\r\n]+$/,y=new n({validate:T,allow_script_urls:c.allow_script_urls,allow_conditional_comments:c.allow_conditional_comments,self_closing_elements:p(d.getSelfClosingElements()),cdata:function(e){C.append(a("#cdata",4)).value=e},text:function(e,t){var n;D||(e=e.replace(M," "),C.lastChild&&R[C.lastChild.name]&&(e=e.replace(A,""))),0!==e.length&&(n=a("#text",3),n.raw=!!t,C.append(n).value=e)},comment:function(e){C.append(a("#comment",8)).value=e},pi:function(e,t){C.append(a(e,7)).value=t,u(C)},doctype:function(e){var t;t=C.append(a("#doctype",10)),t.value=e,u(C)},start:function(e,t,n){var r,i,o,s,l;if(o=T?d.getElementRule(e):{}){for(r=a(o.outputName||e,1),r.attributes=t,r.shortEnded=n,C.append(r),l=H[C.name],l&&H[r.name]&&!l[r.name]&&B.push(r),i=m.length;i--;)s=m[i].name,s in t.map&&(S=v[s],S?S.push(r):v[s]=[r]);R[e]&&u(r),n||(C=r),!D&&O[e]&&(D=!0)}},end:function(e){var t,n,r,i,o;if(n=T?d.getElementRule(e):{}){if(R[e]&&!D){if(t=C.firstChild,t&&3===t.type)if(r=t.value.replace(A,""),r.length>0)t.value=r,t=t.next;else for(i=t.next,t.remove(),t=i;t&&3===t.type;)r=t.value,i=t.next,(0===r.length||P.test(r))&&(t.remove(),t=i),t=i;if(t=C.lastChild,t&&3===t.type)if(r=t.value.replace(L,""),r.length>0)t.value=r,t=t.prev;else for(i=t.prev,t.remove(),t=i;t&&3===t.type;)r=t.value,i=t.prev,(0===r.length||P.test(r))&&(t.remove(),t=i),t=i}if(D&&O[e]&&(D=!1),(n.removeEmpty||n.paddEmpty)&&C.isEmpty(I,O))if(n.paddEmpty)l(c,C);else if(!C.attributes.map.name&&!C.attributes.map.id)return o=C.parent,R[C.name]?C.empty().remove():C.unwrap(),void(C=o);C=C.parent}}},d),b=C=new e(r.context||c.root_name,11),y.parse(t),T&&B.length&&(r.context?r.invalid=!0:f(B)),F&&("body"==b.name||r.isRootContent)&&o(),!r.invalid){for(k in g){for(S=h[k],x=g[k],N=x.length;N--;)x[N].parent||x.splice(N,1);for(w=0,E=S.length;w<E;w++)S[w](x,k,r)}for(w=0,E=m.length;w<E;w++)if(S=m[w],S.name in v){for(x=v[S.name],N=x.length;N--;)x[N].parent||x.splice(N,1);for(N=0,_=S.callbacks.length;N<_;N++)S.callbacks[N](x,S.name,r)}}return b},c.remove_trailing_brs&&p.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},d.getBlockElements()),a=d.getNonEmptyElements(),u,f,p,h,m=d.getNonEmptyElements(),g,v;for(o.body=1,n=0;n<r;n++)if(i=t[n],u=i.parent,o[i.parent.name]&&i===u.lastChild){for(p=i.prev;p;){if(h=p.name,"span"!==h||"bookmark"!==p.attr("data-mce-type")){if("br"!==h)break;if("br"===h){i=null;break}}p=p.prev}i&&(i.remove(),u.isEmpty(a,m)&&(g=d.getElementRule(u.name),g&&(g.removeEmpty?u.remove():g.paddEmpty&&l(c,u))))}else{for(f=i;u&&u.firstChild===f&&u.lastChild===f&&(f=u,!o[u.name]);)u=u.parent;f===u&&c.padd_empty_with_br!==!0&&(v=new e("#text",3),v.value="\xa0",i.replace(v))}}),c.allow_unsafe_link_target||p.addAttributeFilter("href",function(e){function t(e){return e=n(e),e?[e,l].join(" "):l}function n(e){var t=new RegExp("("+l.replace(" ","|")+")","g");return e&&(e=r.trim(e.replace(t,""))),e?e:null}function i(e,r){return r?t(e):n(e)}for(var o=e.length,a,s,l="noopener noreferrer";o--;)a=e[o],s=a.attr("rel"),"a"===a.name&&a.attr("rel",i(s,"_blank"==a.attr("target")))}),c.allow_html_in_named_anchor||p.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),c.fix_list_elements&&p.addNodeFilter("ul,ol",function(t){for(var n=t.length,r,i;n--;)if(r=t[n],i=r.parent,"ul"===i.name||"ol"===i.name)if(r.prev&&"li"===r.prev.name)r.prev.append(r);else{var o=new e("li",1);o.attr("style","list-style-type: none"),r.wrap(o)}}),c.validate&&d.getValidClasses()&&p.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=d.getValidClasses(),l,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i<r.length;i++)o=r[i],u=!1,l=s["*"],l&&l[o]&&(u=!0),l=s[n.name],!u&&l&&l[o]&&(u=!0),u&&(a&&(a+=" "),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(M,[C,m],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var u,c,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(u=0,c=t.length;u<c;u++)d=t[u],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",s(t),"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(P,[M,B],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate=!("validate"in n)||n.validate,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,u,c,d,f,p,h,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,u=e.attributes,a&&u&&u.length>1&&(f=[],f.map={},m=r.getElementRule(e.name))){for(p=0,h=m.attributesOrder.length;p<h;p++)c=m.attributesOrder[p],c in u.map&&(d=u.map[c],f.map[c]=d,f.push({name:c,value:d}));for(p=0,h=u.length;p<h;p++)c=u[p].name,c in f.map||(d=u.map[c],f.map[c]=d,f.push({name:c,value:d}));u=f}if(o.start(e.name,u,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(O,[w,L,D,C,P,A,B,d,m,S],function(e,t,n,r,i,o,a,s,l,u){function c(e){function t(e){return e&&"br"===e.name}var n,r;n=e.lastChild,t(n)&&(r=n.prev,t(r)&&(n.remove(),r.remove()))}var d=l.each,f=l.trim,p=e.DOM;return function(e,o){function h(e){var t=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>","\\s?("+x.join("|")+')="[^"]+"'].join("|"),"gi");return e=u.trim(e.replace(t,""))}function m(e){var t=e,r=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,i,a,s,l,u,c=o.schema;for(t=h(t),u=c.getShortEndedElements();l=r.exec(t);)a=r.lastIndex,s=l[0].length,i=u[l[1]]?a:n.findEndTag(c,t,a),t=t.substring(0,a-s)+t.substring(i),r.lastIndex=a-s;return t}function g(){return m(o.getBody().innerHTML)}function v(e){l.inArray(x,e)===-1&&(C.addAttributeFilter(e,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),x.push(e))}var y,b,C,x=["data-mce-selected"];return o&&(y=o.dom,b=o.schema),y=y||p,b=b||new a(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs=!("remove_trailing_brs"in e)||e.remove_trailing_brs,C=new t(e,b),C.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),C.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,s=e.url_converter,l=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=y.serializeStyle(y.parseStyle(o),i.name):s&&(o=s.call(l,o,n,i.name)),i.attr(n,o.length>0?o:null))}),C.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),C.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),C.addNodeFilter("noscript",function(e){for(var t=e.length,n;t--;)n=e[t].firstChild,n&&(n.value=r.decode(n.value))}),C.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),C.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),C.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),C.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:b,addNodeFilter:C.addNodeFilter,addAttributeFilter:C.addAttributeFilter,serialize:function(t,n){var r=this,o,a,l,p,h,m;return s.ie&&y.select("script,style,select,map").length>0?(h=t.innerHTML,t=t.cloneNode(!1),y.setHTML(t,h)):t=t.cloneNode(!0),o=document.implementation,o.createHTMLDocument&&(a=o.createHTMLDocument(""),d("BODY"==t.nodeName?t.childNodes:[t],function(e){a.body.appendChild(a.importNode(e,!0))}),t="BODY"!=t.nodeName?a.body.firstChild:a.body,l=y.doc,y.doc=a),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,r.onPreProcess(n)),m=C.parse(f(n.getInner?t.innerHTML:y.getOuterHTML(t)),n),c(m),p=new i(e,b),n.content=p.serialize(m),n.cleanup||(n.content=u.trim(n.content),n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||r.onPostProcess(n),l&&(y.doc=l),n.node=null,n.content},addRules:function(e){b.addValidElements(e)},setRules:function(e){b.setValidElements(e)},onPreProcess:function(e){o&&o.fire("PreProcess",e)},onPostProcess:function(e){o&&o.fire("PostProcess",e)},addTempAttr:v,trimHtml:h,getTrimmedContent:g,trimContent:m}}}),r(H,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,u,c,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;i<=o;)if(c=Math.floor((i+o)/2),l=s[c],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=c-1;else{if(!(d<0))return{node:l};i=c+1}if(d<0)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),u=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)u++;else for(r.collapse(!0),u=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)u++;return{node:l,position:d,offset:u,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,u,c;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===u)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(c=l.nodeValue,s+=c.length,s>=i)){r=l,s-=i,s=c.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,u,c,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(f.number!=-2147024809)throw f;d=r.getBookmark(2),u=o.duplicate(),u.collapse(!0),s=u.parentElement(),l||(u=o.duplicate(),u.collapse(!1),c=u.parentElement(),c.innerHTML=c.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;if(n=t(a,e))return{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,u;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),u=i.offset,u!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-u:u)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,h;a=i.create("a"),t=e?s:u,n=e?l:c,d=r.duplicate(),t!=f&&t!=f.documentElement||(t=p,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(h=t.childNodes,h.length?(n>=h.length?i.insertAfter(a,h[h.length-1]):t.insertBefore(a,h[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span></span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,u,c,d,f=e.dom.doc,p=f.body,h,m;if(s=t.startContainer,l=t.startOffset,u=t.endContainer,c=t.endOffset,r=p.createTextRange(),s==u&&1==s.nodeType){if(l==c&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="":d=null,s.innerHTML="<span></span><span></span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==c-1)try{if(m=s.childNodes[l],a=p.createControlRange(),a.addElement(m),a.select(),h=e.getRng(),h.item&&m===h.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(I,[d],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(F,[I,m,c,d,_],function(e,t,n,r,i){function o(e,t){for(;t&&t!=e;){if(s(t)||a(t))return t;t=t.parentNode}return null}var a=i.isContentEditableFalse,s=i.isContentEditableTrue;return function(i,s){function l(e){var t=s.settings.object_resizing;return t!==!1&&!r.iOS&&("string"!=typeof t&&(t="table,img,div"),"false"!==e.getAttribute("data-mce-resize")&&(e!=s.getBody()&&s.dom.is(e,t)))}function u(t){var n,r,i,o,a;n=t.screenX-L,r=t.screenY-M,U=n*B[2]+H,W=r*B[3]+I,U=U<5?5:U,W=W<5?5:W,i="IMG"==k.nodeName&&s.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==k.nodeName&&B[2]*B[3]!==0,i&&(j(n)>j(r)?(W=Y(U*F),U=Y(W/F)):(U=Y(W/F),W=Y(U*F))),_.setStyles(T,{width:U,height:W}),o=B.startPos.x+n,a=B.startPos.y+r,o=o>0?o:0,a=a>0?a:0,_.setStyles(R,{left:o,top:a,display:"block"}),R.innerHTML=U+" × "+W,B[2]<0&&T.clientWidth<=U&&_.setStyle(T,"left",P+(H-U)),B[3]<0&&T.clientHeight<=W&&_.setStyle(T,"top",O+(I-W)),n=X.scrollWidth-K,r=X.scrollHeight-G,n+r!==0&&_.setStyles(R,{left:o-n,top:a-r}),z||(s.fire("ObjectResizeStart",{target:k,width:H,height:I}),z=!0)}function c(){function e(e,t){t&&(k.style[e]||!s.schema.isValid(k.nodeName.toLowerCase(),e)?_.setStyle(k,e,t):_.setAttrib(k,e,t))}z=!1,e("width",U),e("height",W),_.unbind(V,"mousemove",u),_.unbind(V,"mouseup",c),$!=V&&(_.unbind($,"mousemove",u),_.unbind($,"mouseup",c)),_.remove(T),_.remove(R),q&&"TABLE"!=k.nodeName||d(k),s.fire("ObjectResized",{target:k,width:U,height:W}),_.setAttrib(k,"style",_.getAttrib(k,"style")),s.nodeChanged()}function d(e,t,n){var i,o,a,d,p;f(),x(),i=_.getPos(e,X),P=i.x,O=i.y,p=e.getBoundingClientRect(),o=p.width||p.right-p.left,a=p.height||p.bottom-p.top,k!=e&&(C(),k=e,U=W=0),d=s.fire("ObjectSelected",{target:e}),l(e)&&!d.isDefaultPrevented()?S(A,function(e,i){function s(t){L=t.screenX,M=t.screenY,H=k.clientWidth,I=k.clientHeight,F=I/H,B=e,e.startPos={x:o*e[0]+P,y:a*e[1]+O},K=X.scrollWidth,G=X.scrollHeight,T=k.cloneNode(!0),_.addClass(T,"mce-clonedresizable"),_.setAttrib(T,"data-mce-bogus","all"),T.contentEditable=!1,T.unSelectabe=!0,_.setStyles(T,{left:P,top:O,margin:0}),T.removeAttribute("data-mce-selected"),X.appendChild(T),_.bind(V,"mousemove",u),_.bind(V,"mouseup",c),$!=V&&(_.bind($,"mousemove",u),_.bind($,"mouseup",c)),R=_.add(X,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},H+" × "+I)}var l;return t?void(i==t&&s(n)):(l=_.get("mceResizeHandle"+i),l&&_.remove(l),l=_.add(X,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),r.ie&&(l.contentEditable=!1),_.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),s(e)}),e.elm=l,void _.setStyles(l,{left:o*e[0]+P-l.offsetWidth/2,top:a*e[1]+O-l.offsetHeight/2}))}):f(),k.setAttribute("data-mce-selected","1")}function f(){var e,t;x(),k&&k.removeAttribute("data-mce-selected");for(e in A)t=_.get("mceResizeHandle"+e),t&&(_.unbind(t),_.remove(t))}function p(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,r;if(!z&&!s.removed)return S(_.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),r="mousedown"==e.type?e.target:i.getNode(),r=_.$(r).closest(q?"table":"table,img,hr")[0],t(r,X)&&(w(),n=i.getStart(!0),t(n,r)&&t(i.getEnd(!0),r)&&(!q||r!=n&&"IMG"!==n.nodeName))?void d(r):void f()}function h(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function m(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function g(e){var t=e.srcElement,n,r,i,o,a,l,u;n=t.getBoundingClientRect(),l=D.clientX-n.left,u=D.clientY-n.top;for(r in A)if(i=A[r],o=t.offsetWidth*i[0],a=t.offsetHeight*i[1],j(o-l)<8&&j(a-u)<8){B=i;break}z=!0,s.fire("ObjectResizeStart",{target:k,width:k.clientWidth,height:k.clientHeight}),s.getDoc().selection.empty(),d(t,r,D)}function v(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function y(e){return a(o(s.getBody(),e))}function b(e){var t=e.srcElement;if(y(t))return void v(e);if(t!=k){if(s.fire("ObjectSelected",{target:t}),C(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1); +"IMG"!=t.nodeName&&"TABLE"!=t.nodeName||(f(),k=t,h(t,"resizestart",g))}}function C(){m(k,"resizestart",g)}function x(){for(var e in A){var t=A[e];t.elm&&(_.unbind(t.elm),delete t.elm)}}function w(){try{s.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function E(e){var t;if(q){t=V.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function N(){k=T=null,q&&(C(),m(X,"controlselect",b))}var _=s.dom,S=t.each,k,T,R,A,B,D,L,M,P,O,H,I,F,z,U,W,V=s.getDoc(),$=document,q=r.ie&&r.ie<11,j=Math.abs,Y=Math.round,X=s.getBody(),K,G;A={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var J=".mce-content-body";return s.contentStyles.push(J+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: box-sizing;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+J+" .mce-resizehandle:hover {background: #000}"+J+" img[data-mce-selected],"+J+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+J+" .mce-clonedresizable {position: absolute;"+(r.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+J+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),s.on("init",function(){q?(s.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(f(),E(e.target))}),h(X,"controlselect",b),s.on("mousedown",function(e){D=e})):(w(),r.ie>=11&&(s.on("mousedown click",function(e){var t=e.target,n=t.nodeName;z||!/^(TABLE|IMG|HR)$/.test(n)||y(t)||(s.selection.select(t,"TABLE"==n),"mousedown"==e.type&&s.nodeChanged())}),s.dom.bind(X,"mscontrolselect",function(e){function t(e){n.setEditorTimeout(s,function(){s.selection.select(e)})}return y(e.target)?(e.preventDefault(),void t(e.target)):void(/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&t(e.target)))})));var e=n.throttle(function(e){s.composing||p(e)});s.on("nodechange ResizeEditor ResizeWindow drop",e),s.on("keyup compositionend",function(t){k&&"TABLE"==k.nodeName&&e(t)}),s.on("hide blur",f)}),s.on("remove",x),{isResizable:l,showResizeRect:d,hideResizeRect:f,updateResizeRect:p,controlSelect:E,destroy:N}}}),r(z,[],function(){function e(e){return function(){return e}}function t(e){return function(t){return!e(t)}}function n(e,t){return function(n){return e(t(n))}}function r(){var e=s.call(arguments);return function(t){for(var n=0;n<e.length;n++)if(e[n](t))return!0;return!1}}function i(){var e=s.call(arguments);return function(t){for(var n=0;n<e.length;n++)if(!e[n](t))return!1;return!0}}function o(e){var t=s.call(arguments);return t.length-1>=e.length?e.apply(this,t.slice(1)):function(){var e=t.concat([].slice.call(arguments));return o.apply(this,e)}}function a(){}var s=[].slice;return{constant:e,negate:t,and:i,or:r,curry:o,compose:n,noop:a}}),r(U,[_,h,k],function(e,t,n){function r(e){return!m(e)&&(d(e)?!f(e.parentNode):p(e)||c(e)||h(e)||u(e))}function i(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode){if(u(e))return!1;if(l(e))return!0}return!0}function o(e){return!!u(e)&&t.reduce(e.getElementsByTagName("*"),function(e,t){return e||l(t)},!1)!==!0}function a(e){return p(e)||o(e)}function s(e,t){return r(e)&&i(e,t)}var l=e.isContentEditableTrue,u=e.isContentEditableFalse,c=e.isBr,d=e.isText,f=e.matchNodeNames("script style textarea"),p=e.matchNodeNames("img input textarea hr iframe video audio object"),h=e.matchNodeNames("table"),m=n.isCaretContainer;return{isCaretCandidate:r,isInEditable:i,isAtomic:a,isEditableCaretCandidate:s}}),r(W,[],function(){function e(e){return e?{left:c(e.left),top:c(e.top),bottom:c(e.bottom),right:c(e.right),width:c(e.width),height:c(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function t(t,n){return t=e(t),n?t.right=t.left:(t.left=t.left+t.width,t.right=t.left),t.width=0,t}function n(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}function r(e,t,n){return e>=0&&e<=Math.min(t.height,n.height)/2}function i(e,t){return e.bottom<t.top||!(e.top>t.bottom)&&r(t.top-e.bottom,e,t)}function o(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&r(t.bottom-e.top,e,t)}function a(e,t){return e.left<t.left}function s(e,t){return e.right>t.right}function l(e,t){return i(e,t)?-1:o(e,t)?1:a(e,t)?-1:s(e,t)?1:0}function u(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}var c=Math.round;return{clone:e,collapse:t,isEqual:n,isAbove:i,isBelow:o,isLeft:a,isRight:s,compare:l,containsXY:u}}),r(V,[],function(){function e(e){return"string"==typeof e&&e.charCodeAt(0)>=768&&t.test(e)}var t=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]");return{isExtendingChar:e}}),r($,[z,_,w,T,U,W,V],function(e,t,n,r,i,o,a){function s(e){return"createRange"in e?e.createRange():n.DOM.createRng()}function l(e){return e&&/[\r\n\t ]/.test(e)}function u(e){var t=e.startContainer,n=e.startOffset,r;return!!(l(e.toString())&&v(t.parentNode)&&(r=t.data,l(r[n-1])||l(r[n+1])))}function c(e){function t(e){var t=e.ownerDocument,n=s(t),r=t.createTextNode("\xa0"),i=e.parentNode,a;return i.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1),a=o.clone(n.getBoundingClientRect()),i.removeChild(r),a}function n(e){var n,r;return r=e.getClientRects(),n=r.length>0?o.clone(r[0]):o.clone(e.getBoundingClientRect()),b(e)&&0===n.left?t(e):n}function r(e,t){return e=o.collapse(e,t),e.width=1,e.right=e.left+1,e}function i(e){0!==e.height&&(c.length>0&&o.isEqual(e,c[c.length-1])||c.push(e))}function l(e,t){var o=s(e.ownerDocument);if(t<e.data.length){if(a.isExtendingChar(e.data[t]))return c;if(a.isExtendingChar(e.data[t-1])&&(o.setStart(e,t),o.setEnd(e,t+1),!u(o)))return i(r(n(o),!1)),c}t>0&&(o.setStart(e,t-1),o.setEnd(e,t),u(o)||i(r(n(o),!1))),t<e.data.length&&(o.setStart(e,t),o.setEnd(e,t+1),u(o)||i(r(n(o),!0)))}var c=[],d,p;if(y(e.container()))return l(e.container(),e.offset()),c;if(f(e.container()))if(e.isAtEnd())p=x(e.container(),e.offset()),y(p)&&l(p,p.data.length),g(p)&&!b(p)&&i(r(n(p),!1));else{if(p=x(e.container(),e.offset()),y(p)&&l(p,0),g(p)&&e.isAtEnd())return i(r(n(p),!1)),c;d=x(e.container(),e.offset()-1),g(d)&&!b(d)&&(h(d)||h(p)||!g(p))&&i(r(n(d),!1)),g(p)&&i(r(n(p),!0))}return c}function d(t,n,r){function i(){return y(t)?0===n:0===n}function o(){return y(t)?n>=t.data.length:n>=t.childNodes.length}function a(){var e;return e=s(t.ownerDocument),e.setStart(t,n),e.setEnd(t,n),e}function l(){return r||(r=c(new d(t,n))),r}function u(){return l().length>0}function f(e){return e&&t===e.container()&&n===e.offset()}function p(e){return x(t,e?n-1:n)}return{container:e.constant(t),offset:e.constant(n),toRange:a,getClientRects:l,isVisible:u,isAtStart:i,isAtEnd:o,isEqual:f,getNode:p}}var f=t.isElement,p=i.isCaretCandidate,h=t.matchStyleValues("display","block table"),m=t.matchStyleValues("float","left right"),g=e.and(f,p,e.negate(m)),v=e.negate(t.matchStyleValues("white-space","pre pre-line pre-wrap")),y=t.isText,b=t.isBr,C=n.nodeIndex,x=r.getNode;return d.fromRangeStart=function(e){return new d(e.startContainer,e.startOffset)},d.fromRangeEnd=function(e){return new d(e.endContainer,e.endOffset)},d.after=function(e){return new d(e.parentNode,C(e)+1)},d.before=function(e){return new d(e.parentNode,C(e))},d}),r(q,[_,w,z,h,$],function(e,t,n,r,i){function o(e){var t=e.parentNode;return v(t)?o(t):t}function a(e){return e?r.reduce(e.childNodes,function(e,t){return v(t)&&"BR"!=t.nodeName?e=e.concat(a(t)):e.push(t),e},[]):[]}function s(e,t){for(;(e=e.previousSibling)&&g(e);)t+=e.data.length;return t}function l(e){return function(t){return e===t}}function u(t){var n,i,s;return n=a(o(t)),i=r.findIndex(n,l(t),t),n=n.slice(0,i+1),s=r.reduce(n,function(e,t,r){return g(t)&&g(n[r-1])&&e++,e},0),n=r.filter(n,e.matchNodeNames(t.nodeName)),i=r.findIndex(n,l(t),t),i-s}function c(e){var t;return t=g(e)?"text()":e.nodeName.toLowerCase(),t+"["+u(e)+"]"}function d(e,t,n){var r=[];for(t=t.parentNode;t!=e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}function f(t,i){var o,a,l=[],u,f,p;return o=i.container(),a=i.offset(),g(o)?u=s(o,a):(f=o.childNodes,a>=f.length?(u="after",a=f.length-1):u="before",o=f[a]),l.push(c(o)),p=d(t,o),p=r.filter(p,n.negate(e.isBogus)),l=l.concat(r.map(p,function(e){return c(e)})),l.reverse().join("/")+","+u}function p(t,n,i){var o=a(t);return o=r.filter(o,function(e,t){return!g(e)||!g(o[t-1])}),o=r.filter(o,e.matchNodeNames(n)),o[i]}function h(e,t){for(var n=e,r=0,o;g(n);){if(o=n.data.length,t>=r&&t<=r+o){e=n,t-=r;break}if(!g(n.nextSibling)){e=n,t=o;break}r+=o,n=n.nextSibling}return t>e.data.length&&(t=e.data.length),new i(e,t)}function m(e,t){var n,o,a;return t?(n=t.split(","),t=n[0].split("/"),a=n.length>1?n[1]:"before",o=r.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),p(e,t[1],parseInt(t[2],10))):null},e),o?g(o)?h(o,parseInt(a,10)):(a="after"===a?y(o)+1:y(o),new i(o.parentNode,a)):null):null}var g=e.isText,v=e.isBogus,y=t.nodeIndex;return{create:f,resolve:m}}),r(j,[d,m,k,q,$,_,T],function(e,t,n,r,i,o,a){function s(s){var u=s.dom;this.getBookmark=function(e,c){function d(e,n){var r=0;return t.each(u.select(e),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!=n&&void r++}),r}function f(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function p(e){function t(e,t){var r=e[t?"startContainer":"endContainer"],i=e[t?"startOffset":"endOffset"],o=[],a,s,l=0;if(3==r.nodeType){if(c)for(a=r.previousSibling;a&&3==a.nodeType;a=a.previousSibling)i+=a.nodeValue.length;o.push(i)}else s=r.childNodes,i>=s.length&&s.length&&(l=1,i=Math.max(0,s.length-1)),o.push(u.nodeIndex(s[i],c)+l);for(;r&&r!=n;r=r.parentNode)o.push(u.nodeIndex(r,c));return o}var n=u.getRoot(),r={};return r.start=t(e,!0),s.isCollapsed()||(r.end=t(e)),r}function h(e){function t(e,t){var r;if(o.isElement(e)&&(e=a.getNode(e,t),l(e)))return e;if(n.isCaretContainer(e)){if(o.isText(e)&&n.isCaretContainerBlock(e)&&(e=e.parentNode),r=e.previousSibling,l(r))return r;if(r=e.nextSibling,l(r))return r}}return t(e.startContainer,e.startOffset)||t(e.endContainer,e.endOffset)}var m,g,v,y,b,C,x="",w;if(2==e)return C=s.getNode(),b=C?C.nodeName:null,m=s.getRng(),l(C)||"IMG"==b?{name:b,index:d(b,C)}:s.tridentSel?s.tridentSel.getBookmark(e):(C=h(m),C?(b=C.tagName,{name:b,index:d(b,C)}):p(m));if(3==e)return m=s.getRng(),{start:r.create(u.getRoot(),i.fromRangeStart(m)),end:r.create(u.getRoot(),i.fromRangeEnd(m))};if(e)return{rng:s.getRng()};if(m=s.getRng(),v=u.uniqueId(),y=s.isCollapsed(),w="overflow:hidden;line-height:0px",m.duplicate||m.item){if(m.item)return C=m.item(0),b=C.nodeName,{name:b,index:d(b,C)};g=m.duplicate();try{m.collapse(),m.pasteHTML('<span data-mce-type="bookmark" id="'+v+'_start" style="'+w+'">'+x+"</span>"),y||(g.collapse(!1),m.moveToElementText(g.parentElement()),0===m.compareEndPoints("StartToEnd",g)&&g.move("character",-1),g.pasteHTML('<span data-mce-type="bookmark" id="'+v+'_end" style="'+w+'">'+x+"</span>"))}catch(E){return null}}else{if(C=s.getNode(),b=C.nodeName,"IMG"==b)return{name:b,index:d(b,C)};g=f(m.cloneRange()),y||(g.collapse(!1),g.insertNode(u.create("span",{"data-mce-type":"bookmark",id:v+"_end",style:w},x))),m=f(m),m.collapse(!0),m.insertNode(u.create("span",{"data-mce-type":"bookmark",id:v+"_start",style:w},x))}return s.moveToBookmark({id:v,keep:1}),{id:v}},this.moveToBookmark=function(n){function i(e){var t=n[e?"start":"end"],r,i,o,a;if(t){for(o=t[0],i=d,r=t.length-1;r>=1;r--){if(a=i.childNodes,t[r]>a.length-1)return;i=a[t[r]]}3===i.nodeType&&(o=Math.min(t[0],i.nodeValue.length)),1===i.nodeType&&(o=Math.min(t[0],i.childNodes.length)),e?c.setStart(i,o):c.setEnd(i,o)}return!0}function o(r){var i=u.get(n.id+"_"+r),o,a,s,l,c=n.keep;if(i&&(o=i.parentNode,"start"==r?(c?(o=i.firstChild,a=1):a=u.nodeIndex(i),f=p=o,h=m=a):(c?(o=i.firstChild,a=1):a=u.nodeIndex(i),p=o,m=a),!c)){for(l=i.previousSibling,s=i.nextSibling,t.each(t.grep(i.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});i=u.get(n.id+"_"+r);)u.remove(i,1);l&&s&&l.nodeType==s.nodeType&&3==l.nodeType&&!e.opera&&(a=l.nodeValue.length,l.appendData(s.nodeValue),u.remove(s),"start"==r?(f=p=l,h=m=a):(p=l,m=a))}}function a(t){return!u.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t}function l(){var e,t;return e=u.createRng(),t=r.resolve(u.getRoot(),n.start),e.setStart(t.container(),t.offset()),t=r.resolve(u.getRoot(),n.end),e.setEnd(t.container(),t.offset()),e}var c,d,f,p,h,m;if(n)if(t.isArray(n.start)){if(c=u.createRng(),d=u.getRoot(),s.tridentSel)return s.tridentSel.moveToBookmark(n);i(!0)&&i()&&s.setRng(c)}else"string"==typeof n.start?s.setRng(l(n)):n.id?(o("start"),o("end"),f&&(c=u.createRng(),c.setStart(a(f),h),c.setEnd(a(p),m),s.setRng(c))):n.name?s.select(u.select(n.name)[n.index]):n.rng&&s.setRng(n.rng)}}var l=o.isContentEditableFalse;return s.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},s}),r(Y,[y,H,F,T,j,_,d,m,$],function(e,n,r,i,o,a,s,l,u){function c(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var d=l.each,f=l.trim,p=s.ie;return c.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!(!t||t.item)&&(t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed)},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a,s,l;if(!n.win)return null;if(a=n.win.document,"undefined"==typeof a||null===a)return null;if(!e&&n.lastFocusBookmark){var u=n.lastFocusBookmark;return u.startContainer?(i=a.createRange(),i.setStart(u.startContainer,u.startOffset),i.setEnd(u.endContainer,u.endOffset)):i=u,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(c){}if(l=n.editor.fire("GetSelectionRange",{range:i}),l.range!==i)return l.range;if(p&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(c){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r,i,o;if(e)if(e.select){n.explicitRange=null;try{e.select()}catch(a){}}else if(n.tridentSel){if(e.cloneRange)try{n.tridentSel.addRange(e)}catch(a){}}else{if(r=n.getSel(),o=n.editor.fire("SetSelectionRange",{range:e}),e=o.range,r){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(a){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||s.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&(r.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),r.anchorNode!==e.startContainer&&r.setBaseAndExtent(i,0,i,1))),n.editor.fire("AfterSetSelectionRange",{range:e})}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i,o,a,s,l=t.dom.getRoot();return n?(i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&s-a<2&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r)):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return!(t&&t.anchorNode&&t.focusNode)||(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0)},normalize:function(){var e=this,t=e.getRng();return s.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};d(n.selectorChangedData,function(e,t){d(o,function(n){if(i.is(n,t))return r[t]||(d(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1})}),d(r,function(e,n){a[n]||(delete r[n],d(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){function n(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var r,i,o=this,s=o.dom,l=s.getRoot(),u,c,d=0;if(a.isElement(e)){if(t===!1&&(d=e.offsetHeight),"BODY"!=l.nodeName){var f=o.getScrollContainer();if(f)return r=n(e).y-n(f).y+d,c=f.clientHeight,u=f.scrollTop,void((r<u||r+25>u+c)&&(f.scrollTop=r<u?r:r-c+25))}i=s.getViewPort(o.editor.getWin()),r=s.getPos(e).y+d,u=i.y,c=i.h,(r<i.y||r+25>u+c)&&o.editor.getWin().scrollTo(0,r<u?r:r-c+25)}},placeCaretAt:function(e,t){this.setRng(i.getCaretRangeFromPoint(e,t,this.editor.getDoc()))},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),a=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==f(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(s.ie&&s.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},getBoundingClientRect:function(){var e=this.getRng();return e.collapsed?u.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){this.win=null,this.controlSelection.destroy()}},c}),r(X,[j,m],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&0!==i.indexOf("data-")&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName==i.nodeName&&(!!a(o(n),o(i))&&(!!a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))&&(!e.isBookmarkNode(n)&&!e.isBookmarkNode(i))))}}var r=t.each;return n}),r(K,[w,m,B],function(e,t,n){function r(e,r){function i(e,t){t.classes.length&&u.addClass(e,t.classes.join(" ")),u.setAttribs(e,t.attrs)}function o(e){var t;return c="string"==typeof e?{name:e,classes:[],attrs:{}}:e,t=u.create(c.name),i(t,c),t}function a(e,n){var r="string"!=typeof e?e.nodeName.toLowerCase():e,i=f.getElementRule(r),o=i.parentsRequired;return!(!o||!o.length)&&(n&&t.inArray(o,n)!==-1?n:o[0])}function s(e,n,r){var i,l,c,d=n.length&&n[0],f=d&&d.name;if(c=a(e,f))f==c?(l=n[0],n=n.slice(1)):l=c;else if(d)l=n[0],n=n.slice(1);else if(!r)return e;return l&&(i=o(l),i.appendChild(e)),r&&(i||(i=u.create("div"),i.appendChild(e)),t.each(r,function(t){var n=o(t);i.insertBefore(n,e)})),s(i,n,l&&l.siblings)}var l,c,d,f=r&&r.schema||new n({});return e&&e.length?(c=e[0],l=o(c),d=u.create("div"),d.appendChild(s(l,e.slice(1),c.siblings)),d):""}function i(e,t){return r(a(e),t)}function o(e){var n,r={classes:[],attrs:{}};return e=r.selector=t.trim(e),"*"!==e&&(n=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,n,i,o,a){switch(n){case"#":r.attrs.id=i;break;case".":r.classes.push(i);break;case":":t.inArray("checked disabled enabled read-only required".split(" "),i)!==-1&&(r.attrs[i]=i)}if("["==o){var s=a.match(/([\w\-]+)(?:\=\"([^\"]+))?/);s&&(r.attrs[s[1]]=s[2])}return""})),r.name=n||"div",r}function a(e){return e&&"string"==typeof e?(e=e.split(/\s*,\s*/)[0],e=e.replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),t.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var n=t.map(e.split(/(?:~\+|~|\+)/),o),r=n.pop();return n.length&&(r.siblings=n),r}).reverse()):[]}function s(e,t){function n(e){return e.replace(/%(\w+)/g,"")}var i,o,s,c,d="",f,p;if(p=e.settings.preview_styles,p===!1)return"";if("string"!=typeof p&&(p="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return"preview"in t&&(p=t.preview,p===!1)?"":(i=t.block||t.inline||"span",c=a(t.selector),c.length?(c[0].name||(c[0].name=i),i=t.selector,o=r(c,e)):o=r([i],e),s=u.select(i,o)[0]||o.firstChild,l(t.styles,function(e,t){e=n(e),e&&u.setStyle(s,t,e)}),l(t.attributes,function(e,t){e=n(e),e&&u.setAttrib(s,t,e)}),l(t.classes,function(e){e=n(e),u.hasClass(s,e)||u.addClass(s,e)}),e.fire("PreviewFormats"),u.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),f=u.getStyle(e.getBody(),"fontSize",!0),f=/px$/.test(f)?parseInt(f,10):0,l(p.split(" "),function(t){var n=u.getStyle(s,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=u.getStyle(e.getBody(),t,!0),"#ffffff"==u.toHex(n).toLowerCase())||"color"==t&&"#000000"==u.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===f)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*f+"px"}"border"==t&&n&&(d+="padding:0 2px;"),d+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),u.remove(o),d)}var l=t.each,u=e.DOM;return{getCssText:s,parseSelector:a,selectorToHtml:i}}),r(G,[h,_,g],function(e,t,n){function r(e,t){var n=o[e];n||(o[e]=n=[]),o[e].push(t)}function i(e,t){s(o[e],function(e){e(t)})}var o={},a=e.filter,s=e.each;return r("pre",function(r){function i(t){return u(t.previousSibling)&&e.indexOf(c,t.previousSibling)!=-1}function o(e,t){n(t).remove(),n(e).append("<br><br>").append(t.childNodes)}var l=r.selection.getRng(),u,c;u=t.matchNodeNames("pre"),l.collapsed||(c=r.selection.getSelectedBlocks(),s(a(a(c,u),i),function(e){o(e.previousSibling,e)}))}),{postProcess:i}}),r(J,[y,T,j,X,z,m,K,G],function(e,t,n,r,i,o,a,s){return function(l){function u(e){return e.nodeType&&(e=e.nodeName),!!l.schema.getTextBlockElements()[e.toLowerCase()]}function c(e){return/^(TH|TD)$/.test(e.nodeName)}function d(e){return e&&/^(IMG)$/.test(e.nodeName)}function f(e,t){return Q.getParents(e,t,Q.getRoot())}function p(e){return 1===e.nodeType&&"_mce_caret"===e.id}function h(){v({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){me(n,function(t,n){Q.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"], +split:!1,expand:!1,deep:!0}]}),me("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){v(e,{block:e,remove:"all"})}),v(l.settings.formats)}function m(){l.addShortcut("meta+b","bold_desc","Bold"),l.addShortcut("meta+i","italic_desc","Italic"),l.addShortcut("meta+u","underline_desc","Underline");for(var e=1;e<=6;e++)l.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);l.addShortcut("access+7","",["FormatBlock",!1,"p"]),l.addShortcut("access+8","",["FormatBlock",!1,"div"]),l.addShortcut("access+9","",["FormatBlock",!1,"address"])}function g(e){return e?J[e]:J}function v(e,t){e&&("string"!=typeof e?me(e,function(e,t){v(t,e)}):(t=t.length?t:[t],me(t,function(e){e.deep===ce&&(e.deep=!e.selector),e.split===ce&&(e.split=!e.selector||e.inline),e.remove===ce&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),J[e]=t))}function y(e){return e&&J[e]&&delete J[e],J}function b(e,t){var n=g(t);if(n)for(var r=0;r<n.length;r++)if(n[r].inherit===!1&&Q.is(e,n[r].selector))return!0;return!1}function C(e){var t;return l.dom.getParent(e,function(e){return t=l.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function x(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=C(e.parentNode),l.dom.getStyle(e,"color")&&t?l.dom.setStyle(e,"text-decoration",t):l.dom.getStyle(e,"text-decoration")===t&&l.dom.setStyle(e,"text-decoration",null))}function w(t,n,r){function i(e,t){if(t=t||f,e){if(t.onformat&&t.onformat(e,t,n,r),me(t.styles,function(t,r){Q.setStyle(e,r,F(t,n))}),t.styles){var i=Q.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}me(t.attributes,function(t,r){Q.setAttrib(e,r,F(t,n))}),me(t.classes,function(t){t=F(t,n),Q.hasClass(e,t)||Q.addClass(e,t)})}}function o(e,t){var n=!1;return!!f.selector&&(me(e,function(e){if(!("collapsed"in e&&e.collapsed!==v))return Q.is(t,e.selector)&&!p(t)?(i(t,e),n=!0,!1):void 0}),n)}function a(){function t(t,n){var i=new e(n);for(r=i.prev2();r;r=i.prev2()){if(3==r.nodeType&&r.data.length>0)return r;if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}}var n=l.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var a=t(i,o),s=3==a.nodeType?a.data.length:a.childNodes.length;n.setEnd(a,s)}return n}function c(e,r,a){var s=[],l,c,h=!0;l=f.inline||f.block,c=Q.create(l),i(c),ee.walk(e,function(e){function r(e){var g,v,y,b;if(b=h,g=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&de(e)&&(b=h,h="true"===de(e),y=!0),D(g,"br"))return m=0,void(f.block&&Q.remove(e));if(f.wrapper&&_(e,t,n))return void(m=0);if(h&&!y&&f.block&&!f.wrapper&&u(g)&&te(v,l))return e=Q.rename(e,l),i(e),s.push(e),void(m=0);if(f.selector){var C=o(d,e);if(!f.inline||C)return void(m=0)}!h||y||!te(l,g)||!te(v,l)||!a&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||p(e)||f.inline&&ne(e)?(m=0,me(ge(e.childNodes),r),y&&(h=b),m=0):(m||(m=Q.clone(c,se),e.parentNode.insertBefore(m,e),s.push(m)),m.appendChild(e))}var m;me(e,r)}),f.links===!0&&me(s,function(e){function t(e){"A"===e.nodeName&&i(e,f),me(ge(e.childNodes),t)}t(e)}),me(s,function(e){function r(e){var t=0;return me(e.childNodes,function(e){z(e)||he(e)||t++}),t}function o(e){var t=!1;return me(e.childNodes,function(e){if(M(e))return t=e,!1}),t}function a(e,t){do{if(1!==r(e))break;if(e=o(e),!e)break;if(t(e))return e}while(e);return null}function l(e){var t,n;return t=o(e),t&&!he(t)&&B(t,f)&&(n=Q.clone(t,se),i(n),Q.replace(n,e,le),Q.remove(t,1)),n||e}var u;if(u=r(e),(s.length>1||!ne(e))&&0===u)return void Q.remove(e,1);if(f.inline||f.wrapper){if(f.exact||1!==u||(e=l(e)),me(d,function(t){me(Q.select(t.inline,e),function(e){he(e)||$(t,n,e,t.exact?e:null)})}),_(e.parentNode,t,n)&&$(f,n,e)&&(e=0),f.merge_with_parents&&Q.getParent(e.parentNode,function(r){if(_(r,t,n))return $(f,n,e)&&(e=0),le}),!ne(e)&&!H(e,"fontSize")){var c=a(e,P("fontSize"));c&&w("fontsize",{value:H(c,"fontSize")},e)}e&&f.merge_siblings!==!1&&(e=Y(j(e),e),e=Y(e,j(e,le)))}})}var d=g(t),f=d[0],h,m,v=!r&&Z.isCollapsed();if("false"!==de(Z.getNode())){if(f){if(r)r.nodeType?o(d,r)||(m=Q.createRng(),m.setStartBefore(r),m.setEndAfter(r),c(W(m,d),null,!0)):c(r,null,!0);else if(v&&f.inline&&!Q.select("td[data-mce-selected],th[data-mce-selected]").length)K("apply",t,n);else{var y=l.selection.getNode();re||!d[0].defaultBlock||Q.getParent(y,Q.isBlock)||w(d[0].defaultBlock),l.selection.setRng(a()),h=Z.getBookmark(),c(W(Z.getRng(le),d),h),f.styles&&((f.styles.color||f.styles.textDecoration)&&(ve(y,x,"childNodes"),x(y)),f.styles.backgroundColor&&L(y,P("fontSize"),O("backgroundColor",F(f.styles.backgroundColor,n)))),Z.moveToBookmark(h),G(Z.getRng(le)),l.nodeChanged()}s.postProcess(t,l)}}else{r=Z.getNode();for(var b=0,C=d.length;b<C;b++)if(d[b].ceFalseOverride&&Q.is(r,d[b].selector))return void i(r,d[b])}}function E(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&de(e)&&(a=y,y="true"===de(e),s=!0),n=ge(e.childNodes),y&&!s)for(r=0,o=p.length;r<o&&!$(p[r],t,e,e);r++);if(h.deep&&n.length){for(r=0,o=n.length;r<o;r++)i(n[r]);s&&(y=a)}}function o(n){var i;return me(f(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=_(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function a(e,n,r,i){var o,a,s,l,u,c;if(e){for(c=e.parentNode,o=n.parentNode;o&&o!=c;o=o.parentNode){for(a=Q.clone(o,se),u=0;u<p.length;u++)if($(p[u],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||h.mixed&&ne(e)||(n=Q.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function s(e){return a(o(e),e,e,!0)}function u(e){var t=Q.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return he(n)&&(n=n[e?"firstChild":"lastChild"]),3==n.nodeType&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),Q.remove(t,!0),n}function d(e){var t,n,r=e.commonAncestorContainer;if(e=W(e,p,le),h.split){if(t=X(e,le),n=X(e),t!=n){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&c(n)&&n.firstChild&&(n=n.firstChild||n),Q.isChildOf(t,n)&&!ne(n)&&!c(t)&&!c(n))return t=U(t,"span",{id:"_start","data-mce-type":"bookmark"}),s(t),void(t=u(le));t=U(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=U(n,"span",{id:"_end","data-mce-type":"bookmark"}),s(t),s(n),t=u(le),n=u()}else t=n=s(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=ie(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=ie(n)+1}ee.walk(e,function(e){me(e,function(e){i(e),1===e.nodeType&&"underline"===l.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===C(e.parentNode)&&$({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var p=g(e),h=p[0],m,v,y=!0;if(n)return void(n.nodeType?(v=Q.createRng(),v.setStartBefore(n),v.setEndAfter(n),d(v)):d(n));if("false"!==de(Z.getNode()))Z.isCollapsed()&&h.inline&&!Q.select("td[data-mce-selected],th[data-mce-selected]").length?K("remove",e,t,r):(m=Z.getBookmark(),d(Z.getRng(le)),Z.moveToBookmark(m),h.inline&&S(e,t,Z.getStart())&&G(Z.getRng(!0)),l.nodeChanged());else{n=Z.getNode();for(var b=0,x=p.length;b<x&&(!p[b].ceFalseOverride||!$(p[b],t,n,n));b++);}}function N(e,t,n){var r=g(e);!S(e,t,n)||"toggle"in r[0]&&!r[0].toggle?w(e,t,n):E(e,t,n)}function _(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===ce){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?Q.getAttrib(e,o):H(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!D(a,I(F(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?Q.getAttrib(e,s[l]):H(e,s[l]))return t;return t}var o=g(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],B(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!Q.hasClass(e,l[s]))return;return a}}function S(e,t,n){function r(n){var r=Q.getRoot();return n!==r&&(n=Q.getParent(n,function(n){return!!b(n,e)||(n.parentNode===r||!!_(n,e,t,!0))}),_(n,e,t))}var i;return n?r(n):(n=Z.getNode(),r(n)?le:(i=Z.getStart(),i!=n&&r(i)?le:se))}function k(e,t){var n,r=[],i={};return n=Z.getStart(),Q.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&_(n,a,t)&&(i[a]=!0,r.push(a))},Q.getRoot()),r}function T(e){var t=g(e),n,r,i,o,a;if(t)for(n=Z.getStart(),r=f(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return le;for(i=r.length-1;i>=0;i--)if(Q.is(r[i],a))return le}return se}function R(e,t,n){var r;return ue||(ue={},r={},l.on("NodeChange",function(e){var t=f(e.element),n={};t=o.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),me(ue,function(e,i){me(t,function(o){return _(o,i,{},e.similar)?(r[i]||(me(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):!b(o,i)&&void 0})}),me(r,function(i,o){n[o]||(delete r[o],me(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),me(e.split(","),function(e){ue[e]||(ue[e]=[],ue[e].similar=n),ue[e].push(t)}),this}function A(e){return a.getCssText(l,e)}function B(e,t){return D(e,t.inline)?le:D(e,t.block)?le:t.selector?1==e.nodeType&&Q.is(e,t.selector):void 0}function D(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function L(e,t,n){me(e.childNodes,function(e){M(e)&&(t(e)&&n(e),e.hasChildNodes()&&L(e,t,n))})}function M(e){return 1==e.nodeType&&!he(e)&&!z(e)&&!p(e)}function P(e){return i.curry(function(e,t){return!(!t||!H(t,e))},e)}function O(e,t){return i.curry(function(e,t,n){Q.setStyle(n,e,t)},e,t)}function H(e,t){return I(Q.getStyle(e,t),t)}function I(e,t){return"color"!=t&&"backgroundColor"!=t||(e=Q.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function F(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function z(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function U(e,t,n){var r=Q.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function W(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=Q.getRoot(),3==r.nodeType&&!z(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&ne(i))return i;for(o=i[a];o;o=o[a])if(!he(o)&&!z(o)&&!t(o))return i;if(i==s||i.parentNode==s){r=i;break}i=i.parentNode}return r}function o(e,t){for(t===ce&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function a(e){for(var t=e;t;){if(1===t.nodeType&&de(t))return"false"===de(t)?t:e;t=t.parentNode}return e}function s(t,n,i){function o(e,t){var n,o,a=e.nodeValue;return"undefined"==typeof t&&(t=i?a.length:0),i?(n=a.lastIndexOf(" ",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,n===-1||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=n!==-1&&(o===-1||n<o)?n:o),n}var a,s,u,c;if(3===t.nodeType){if(u=o(t,n),u!==-1)return{container:t,offset:u};c=t}for(a=new e(t,Q.getParent(t,ne)||l.getBody());s=a[i?"prev":"next"]();)if(3===s.nodeType){if(c=s,u=o(s),u!==-1)return{container:s,offset:u}}else if(ne(s))break;if(c)return n=i?0:c.length,{container:c,offset:n}}function c(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=f(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in s&&s.collapsed!==t.collapsed)&&Q.is(i[o],s.selector))return i[o];return e}function d(e,t){var r,i=Q.getRoot();if(n[0].wrapper||(r=Q.getParent(e,n[0].block,i)),r||(r=Q.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=i&&u(e)})),r&&n[0].wrapper&&(r=f(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!ne(r[t])&&(r=r[t],!D(r,"br")););return r||e}var p,h,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(p=g.childNodes.length-1,g=g.childNodes[v>p?p:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(p=y.childNodes.length-1,y=y.childNodes[b>p?p:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=a(g),y=a(y),(he(g.parentNode)||he(g))&&(g=he(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(he(y.parentNode)||he(y))&&(y=he(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=s(g,v,!0),m&&(g=m.container,v=m.offset),m=s(y,b),m&&(y=m.container,b=m.offset)),h=o(y,b),h.node)){for(;h.node&&0===h.offset&&h.node.previousSibling;)h=o(h.node.previousSibling);h.node&&h.offset>0&&3===h.node.nodeType&&" "===h.node.nodeValue.charAt(h.offset-1)&&h.offset>1&&(y=h.node,y.splitText(h.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==se&&!n[0].inline&&(g=c(g,"previousSibling"),y=c(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=d(g,"previousSibling"),y=d(y,"nextSibling"),n[0].block&&(ne(g)||(g=i(!0)),ne(y)||(y=i()))),1==g.nodeType&&(v=ie(g),g=g.parentNode),1==y.nodeType&&(b=ie(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function V(e,t){return t.links&&"A"==e.tagName}function $(e,t,n,r){var i,o,a;if(!B(n,e)&&!V(n,e))return se;if("all"!=e.remove)for(me(e.styles,function(i,o){i=I(F(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||D(H(r,o),i))&&Q.setStyle(n,o,""),a=1}),a&&""===Q.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),me(e.attributes,function(e,i){var o;if(e=F(e,t),"number"==typeof i&&(i=e,r=0),!r||D(Q.getAttrib(r,i),e)){if("class"==i&&(e=Q.getAttrib(n,i),e&&(o="",me(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void Q.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),ae.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),me(e.classes,function(e){e=F(e,t),r&&!Q.hasClass(r,e)||Q.removeClass(n,e)}),o=Q.getAttribs(n),i=0;i<o.length;i++){var s=o[i].nodeName;if(0!==s.indexOf("_")&&0!==s.indexOf("data-"))return se}return"none"!=e.remove?(q(n,e),le):void 0}function q(e,t){function n(e,t,n){return e=j(e,t,n),!e||"BR"==e.nodeName||ne(e)}var r=e.parentNode,i;t.block&&(re?r==Q.getRoot()&&(t.list_block&&D(e,t.list_block)||me(ge(e.childNodes),function(e){te(re,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=U(e,re),Q.setAttribs(i,l.settings.forced_root_block_attrs)):i=0})):ne(e)&&!ne(r)&&(n(e,se)||n(e.firstChild,le,1)||e.insertBefore(Q.create("br"),e.firstChild),n(e,le)||n(e.lastChild,se,1)||e.appendChild(Q.create("br")))),t.selector&&t.inline&&!D(t.inline,e)||Q.remove(e,1)}function j(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!z(e))return e}function Y(e,t){function n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!he(i))return i}return e}var i,o,a=new r(Q);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return Q.remove(t),me(ge(t.childNodes),function(t){e.appendChild(t)}),e}return t}function X(t,n){var r,i,o;return r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,l.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,l.getBody()).prev()||r),r}function K(t,n,r,i){function o(e){var t=Q.create("span",{id:m,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(l.getDoc().createTextNode(oe)),t}function a(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==oe||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function s(e){for(;e;){if(e.id===m)return e;e=e.parentNode}}function c(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=Z.getRng(!0),a(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),Q.remove(e)):(n=c(e),n.nodeValue.charAt(0)===oe&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),Q.remove(e,1)),Z.setRng(r);else if(e=s(Z.getStart()),!e)for(;e=Q.get(m);)d(e,!1)}function f(){var e,t,i,a,l,u,d;e=Z.getRng(!0),a=e.startOffset,u=e.startContainer,d=u.nodeValue,t=s(Z.getStart()),t&&(i=c(t));var f=/[^\s\u00a0\u00ad\u200b\ufeff]/;d&&a>0&&a<d.length&&f.test(d.charAt(a))&&f.test(d.charAt(a-1))?(l=Z.getBookmark(),e.collapse(!0),e=W(e,g(n)),e=ee.split(e),w(n,r,e),Z.moveToBookmark(l)):(t&&i.nodeValue===oe?w(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),a=1,w(n,r,t)),Z.setCursorLocation(i,a))}function p(){var e=Z.getRng(!0),t,a,s,l,c,d,f=[],p,h;for(t=e.startContainer,a=e.startOffset,c=t,3==t.nodeType&&(a!=t.nodeValue.length&&(l=!0),c=c.parentNode);c;){if(_(c,n,r,i)){d=c;break}c.nextSibling&&(l=!0),f.push(c),c=c.parentNode}if(d)if(l)s=Z.getBookmark(),e.collapse(!0),e=W(e,g(n),!0),e=ee.split(e),E(n,r,e),Z.moveToBookmark(s);else{for(h=o(),c=h,p=f.length-1;p>=0;p--)c.appendChild(Q.clone(f[p],!1)),c=c.firstChild;c.appendChild(Q.doc.createTextNode(oe)),c=c.firstChild;var m=Q.getParent(d,u);m&&Q.isEmpty(m)?d.parentNode.replaceChild(h,d):Q.insertAfter(h,d),Z.setCursorLocation(c,1),Q.isEmpty(d)&&Q.remove(d)}}function h(){var e;e=s(Z.getStart()),e&&!Q.isEmpty(e)&&ve(e,function(e){1!=e.nodeType||e.id===m||Q.isEmpty(e)||Q.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var m="_mce_caret",v=l.settings.caret_debug;l._hasCaretEvents||(pe=function(){var e=[],t;if(a(s(Z.getStart()),e))for(t=e.length;t--;)Q.setAttrib(e[t],"data-mce-bogus","1")},fe=function(e){var t=e.keyCode;d(),8==t&&Z.isCollapsed()&&Z.getStart().innerHTML==oe&&d(s(Z.getStart())),37!=t&&39!=t||d(s(Z.getStart())),h()},l.on("SetContent",function(e){e.selection&&h()}),l._hasCaretEvents=!0),"apply"==t?f():p()}function G(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!d(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=ie(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,Q.getParent(n,Q.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!z(a))return l=Q.create("a",{"data-mce-bogus":"all"},oe),a.parentNode.insertBefore(l,a),t.setStart(a,0),Z.setRng(t),void Q.remove(l)}var J={},Q=l.dom,Z=l.selection,ee=new t(Q),te=l.schema.isValidChild,ne=Q.isBlock,re=l.settings.forced_root_block,ie=Q.nodeIndex,oe="\ufeff",ae=/^(src|href|style)$/,se=!1,le=!0,ue,ce,de=Q.getContentEditable,fe,pe,he=n.isBookmarkNode,me=o.each,ge=o.grep,ve=o.walk,ye=o.extend;ye(this,{get:g,register:v,unregister:y,apply:w,remove:E,toggle:N,match:S,matchAll:k,matchNode:_,canApply:T,formatChanged:R,getCssText:A}),h(),m(),l.on("BeforeGetContent",function(e){pe&&"raw"!=e.format&&pe()}),l.on("mouseup keydown",function(e){fe&&fe(e)})}}),r(Q,[],function(){var e=0,t=1,n=2,r=function(r,i){var o=r.length+i.length+2,a=new Array(o),s=new Array(o),l=function(e,t,n){return{start:e,end:t,diag:n}},u=function(o,a,s,l,c){var f=d(o,a,s,l);if(null===f||f.start===a&&f.diag===a-l||f.end===o&&f.diag===o-s)for(var p=o,h=s;p<a||h<l;)p<a&&h<l&&r[p]===i[h]?(c.push([e,r[p]]),++p,++h):a-o>l-s?(c.push([n,r[p]]),++p):(c.push([t,i[h]]),++h);else{u(o,f.start,s,f.start-f.diag,c);for(var m=f.start;m<f.end;++m)c.push([e,r[m]]);u(f.end,a,f.end-f.diag,l,c)}},c=function(e,t,n,o){for(var a=e;a-t<o&&a<n&&r[a]===i[a-t];)++a;return l(e,a,t)},d=function(e,t,n,o){var l=t-e,u=o-n;if(0===l||0===u)return null;var d=l-u,f=u+l,p=(f%2===0?f:f+1)/2;a[1+p]=e,s[1+p]=t+1;for(var h=0;h<=p;++h){for(var m=-h;m<=h;m+=2){var g=m+p;m===-h||m!=h&&a[g-1]<a[g+1]?a[g]=a[g+1]:a[g]=a[g-1]+1;for(var v=a[g],y=v-e+n-m;v<t&&y<o&&r[v]===i[y];)a[g]=++v,++y;if(d%2!=0&&d-h<=m&&m<=d+h&&s[g-d]<=a[g])return c(s[g-d],m+e-n,t,o)}for(m=d-h;m<=d+h;m+=2){for(g=m+p-d,m===d-h||m!=d+h&&s[g+1]<=s[g-1]?s[g]=s[g+1]-1:s[g]=s[g-1],v=s[g]-1,y=v-e+n-m;v>=e&&y>=n&&r[v]===i[y];)s[g]=v--,y--;if(d%2===0&&-h<=m&&m<=h&&s[g]<=a[g+d])return c(s[g],m+e-n,t,o)}}},f=[];return u(0,r.length,0,i.length,f),f};return{KEEP:e,DELETE:n,INSERT:t,diff:r}}),r(Z,[h,C,Q],function(e,t,n){var r=function(e){return 1===e.nodeType?e.outerHTML:3===e.nodeType?t.encodeRaw(e.data,!1):8===e.nodeType?"<!--"+e.data+"-->":""},i=function(e){var t,n,r;for(r=document.createElement("div"),t=document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t},o=function(e,t,n){var r=i(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)},a=function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}},s=function(t,r){var i=0;e.each(t,function(e){e[0]===n.KEEP?i++:e[0]===n.INSERT?(o(r,e[1],i),i++):e[0]===n.DELETE&&a(r,i)})},l=function(t){return e.map(t.childNodes,r)},u=function(t,i){var o=e.map(i.childNodes,r);return s(n.diff(o,t),i),i};return{read:l,write:u}}),r(ee,[h,Z],function(e,t){var n=function(e){return e.indexOf("</iframe>")!==-1},r=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},i=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},o=function(o){var a,s,l;return a=t.read(o.getBody()),l=e.map(a,function(e){return o.serializer.trimContent(e)}),s=l.join(""),n(s)?r(l):i(s)},a=function(e,n,r){"fragmented"===n.type?t.write(n.fragments,e.getBody()):e.setContent(n.content,{format:"raw"}),e.selection.moveToBookmark(r?n.beforeBookmark:n.bookmark)},s=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},l=function(e,t){return s(e)===s(t)};return{createFragmentedLevel:r,createCompleteLevel:i,createFromEditor:o,applyToEditor:a,isEq:l}}),r(te,[I,m,ee],function(e,t,n){return function(e){function r(t){e.setDirty(t)}function i(e){a.typing=!1,a.add({},e)}function o(){a.typing&&(a.typing=!1,a.add())}var a=this,s=0,l=[],u,c,d=0;return e.on("init",function(){a.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(o(),a.beforeChange())}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&i(e)}),e.on("ObjectResizeStart Cut",function(){a.beforeChange()}),e.on("SaveContent ObjectResized blur",i),e.on("DragEnd",i),e.on("KeyUp",function(t){var o=t.keyCode;t.isDefaultPrevented()||((o>=33&&o<=36||o>=37&&o<=40||45===o||t.ctrlKey)&&(i(),e.nodeChanged()),46!==o&&8!==o||e.nodeChanged(),c&&a.typing&&(e.isDirty()||(r(l[0]&&!n.isEq(n.createFromEditor(e),l[0])),e.isDirty()&&e.fire("change",{level:l[0],lastLevel:null})),e.fire("TypingUndo"),c=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&t<=36||t>=37&&t<=40||45===t)return void(a.typing&&i(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||t>20)||224===t||91===t||a.typing||n||(a.beforeChange(),a.typing=!0,a.add({},e),c=!0)}}),e.on("MouseDown",function(e){a.typing&&i(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),a={data:l,typing:!1,beforeChange:function(){d||(u=e.selection.getBookmark(2,!0))},add:function(i,o){var a,c=e.settings,f,p;if(p=n.createFromEditor(e),i=i||{},i=t.extend(i,p),d||e.removed)return null;if(f=l[s],e.fire("BeforeAddUndo",{level:i,lastLevel:f,originalEvent:o}).isDefaultPrevented())return null;if(f&&n.isEq(f,i))return null;if(l[s]&&(l[s].beforeBookmark=u),c.custom_undo_redo_levels&&l.length>c.custom_undo_redo_levels){for(a=0;a<l.length-1;a++)l[a]=l[a+1];l.length--,s=l.length}i.bookmark=e.selection.getBookmark(2,!0),s<l.length-1&&(l.length=s+1),l.push(i),s=l.length-1;var h={level:i,lastLevel:f,originalEvent:o};return e.fire("AddUndo",h),s>0&&(r(!0),e.fire("change",h)),i},undo:function(){var t;return a.typing&&(a.add(),a.typing=!1),s>0&&(t=l[--s],n.applyToEditor(e,t,!0),r(!0),e.fire("undo",{level:t})),t},redo:function(){var t;return s<l.length-1&&(t=l[++s],n.applyToEditor(e,t,!1),r(!0),e.fire("redo",{level:t})),t},clear:function(){l=[],s=0,a.typing=!1,a.data=l,e.fire("ClearUndos")},hasUndo:function(){return s>0||a.typing&&l[0]&&!n.isEq(n.createFromEditor(e),l[0])},hasRedo:function(){return s<l.length-1&&!a.typing},transact:function(e){o(),a.beforeChange();try{d++,e()}finally{d--}return a.add()},extra:function(t,r){var i,o;a.transact(t)&&(o=l[s].bookmark,i=l[s-1],n.applyToEditor(e,i,!0),a.transact(r)&&(l[s-1].beforeBookmark=o))}}}}),r(ne,[y,T,k,d],function(e,t,n,r){var i=r.ie&&r.ie<11;return function(o){function a(a){function h(e){return e&&s.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==s.getContentEditable(e)}function m(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function g(e){var t;s.isBlock(e)&&(t=l.getRng(),e.appendChild(s.create("span",null,"\xa0")),l.select(e),e.lastChild.outerHTML="",l.setRng(t))}function v(e){var t=e,n=[],r;if(t){for(;t=t.firstChild;){if(s.isBlock(t))return;1!=t.nodeType||f[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?s.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&s.remove(t)}}function y(t){function n(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}var i,o,a,u=t,c;if(t){if(r.ie&&r.ie<9&&P&&P.firstChild&&P.firstChild==P.lastChild&&"BR"==P.firstChild.tagName&&s.remove(P.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var d=n(t.firstChild);d&&/^(UL|OL|DL)$/.test(d.nodeName)&&t.insertBefore(s.doc.createTextNode("\xa0"),t.firstChild)}if(a=s.createRng(),r.ie||t.normalize(),t.hasChildNodes()){for(i=new e(t,t);o=i.current();){if(3==o.nodeType){a.setStart(o,0),a.setEnd(o,0);break}if(p[o.nodeName.toLowerCase()]){a.setStartBefore(o),a.setEndBefore(o);break}u=o,o=i.next()}o||(a.setStart(u,0),a.setEnd(u,0))}else"BR"==t.nodeName?t.nextSibling&&s.isBlock(t.nextSibling)?((!O||O<9)&&(c=s.create("br"),t.parentNode.insertBefore(c,t)),a.setStartBefore(t),a.setEndBefore(t)):(a.setStartAfter(t),a.setEndAfter(t)):(a.setStart(t,0),a.setEnd(t,0));l.setRng(a),s.remove(c),l.scrollIntoView(t)}}function b(e){var t=u.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&s.setAttribs(e,u.forced_root_block_attrs)}function C(e){e.innerHTML=i?"":'<br data-mce-bogus="1">'}function x(e){var t=L,n,r,o,a=d.getTextInlineElements();if(e||"TABLE"==U?(n=s.create(e||V),b(n)):n=P.cloneNode(!1),o=n,u.keep_styles!==!1)do if(a[t.nodeName]){if("_mce_caret"==t.id)continue;r=t.cloneNode(!1),s.setAttrib(r,"id",""),n.hasChildNodes()?(r.appendChild(n.firstChild),n.appendChild(r)):(o=r,n.appendChild(r))}while((t=t.parentNode)&&t!=D);return i||(o.innerHTML='<br data-mce-bogus="1">'),n}function w(t){var n,r,i;if(3==L.nodeType&&(t?M>0:M<L.nodeValue.length))return!1;if(L.parentNode==P&&$&&!t)return!0;if(t&&1==L.nodeType&&L==P.firstChild)return!0;if("TABLE"===L.nodeName||L.previousSibling&&"TABLE"==L.previousSibling.nodeName)return $&&!t||!$&&t;for(n=new e(L,P),3==L.nodeType&&(t&&0===M?n.prev():t||M!=L.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),f[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function E(e,t){var n,r,i,a,l,u,c=V||"P";if(r=s.getParent(e,s.isBlock),!r||!h(r)){if(r=r||D,u=r==o.getBody()||m(r)?r.nodeName.toLowerCase():r.parentNode.nodeName.toLowerCase(),!r.hasChildNodes())return n=s.create(c),b(n),r.appendChild(n),A.setStart(n,0),A.setEnd(n,0),n;for(a=e;a.parentNode!=r;)a=a.parentNode;for(;a&&!s.isBlock(a);)i=a,a=a.previousSibling;if(i&&d.isValidChild(u,c.toLowerCase())){for(n=s.create(c),b(n),i.parentNode.insertBefore(n,i),a=i;a&&!s.isBlock(a);)l=a.nextSibling,n.appendChild(a),a=l;A.setStart(e,t),A.setEnd(e,t)}}return e}function N(){function e(e){for(var t=z[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===P}function t(){var e=z.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:z}if(z!=o.getBody()){var n=z.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(V="LI"),I=V?x(V):s.create("BR"),e(!0)&&e()?"LI"==n?s.insertAfter(I,t()):s.replace(I,z):e(!0)?"LI"==n?(s.insertAfter(I,t()),I.appendChild(s.doc.createTextNode(" ")),I.appendChild(z)):z.parentNode.insertBefore(I,z):e()?(s.insertAfter(I,t()),g(I)):(z=t(),B=A.cloneRange(),B.setStartAfter(P),B.setEndAfter(z),F=B.extractContents(),"LI"==V&&"LI"==F.firstChild.nodeName?(I=F.firstChild,s.insertAfter(F,z)):(s.insertAfter(F,z),s.insertAfter(I,z))),s.remove(P),y(I),c.add()}}function _(){o.execCommand("InsertLineBreak",!1,a)}function S(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function k(e){var t=s.getRoot(),n,r;for(n=e;n!==t&&"false"!==s.getContentEditable(n);)"true"===s.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function T(e){var t;i||(e.normalize(),t=e.lastChild,t&&!/^(left|right)$/gi.test(s.getStyle(t,"float",!0))||s.add(e,"br"))}function R(){I=/^(H[1-6]|PRE|FIGURE)$/.test(U)&&"HGROUP"!=W?x(V):x(),u.end_container_on_empty_block&&h(z)&&s.isEmpty(P)?I=s.split(z,P):s.insertAfter(I,P),y(I)}var A,B,D,L,M,P,O,H,I,F,z,U,W,V,$;if(A=l.getRng(!0),!a.isDefaultPrevented()){if(!A.collapsed)return void o.execCommand("Delete");if(new t(s).normalize(A),L=A.startContainer,M=A.startOffset,V=(u.force_p_newlines?"p":"")||u.forced_root_block,V=V?V.toUpperCase():"",O=s.doc.documentMode,H=a.shiftKey,1==L.nodeType&&L.hasChildNodes()&&($=M>L.childNodes.length-1,L=L.childNodes[Math.min(M,L.childNodes.length-1)]||L,M=$&&3==L.nodeType?L.nodeValue.length:0),D=k(L)){if(c.beforeChange(),!s.isBlock(D)&&D!=s.getRoot())return void(V&&!H||_());if((V&&!H||!V&&H)&&(L=E(L,M)),P=s.getParent(L,s.isBlock),z=P?s.getParent(P.parentNode,s.isBlock):null,U=P?P.nodeName.toUpperCase():"",W=z?z.nodeName.toUpperCase():"","LI"!=W||a.ctrlKey||(P=z,U=W),o.undoManager.typing&&(o.undoManager.typing=!1,o.undoManager.add()),/^(LI|DT|DD)$/.test(U)){if(!V&&H)return void _();if(s.isEmpty(P))return void N()}if("PRE"==U&&u.br_in_pre!==!1){if(!H)return void _()}else if(!V&&!H&&"LI"!=U||V&&H)return void _();V&&P===o.getBody()||(V=V||"P",n.isCaretContainerBlock(P)?(I=n.showCaretContainerBlock(P),s.isEmpty(P)&&C(P),y(I)):w()?R():w(!0)?(I=P.parentNode.insertBefore(x(),P),g(I),y(P)):(B=A.cloneRange(),B.setEndAfter(P),F=B.extractContents(),S(F),I=F.firstChild,s.insertAfter(F,P),v(I),T(P),s.isEmpty(P)&&C(P),I.normalize(),s.isEmpty(I)?(s.remove(I),R()):y(I)),s.setAttrib(I,"id",""),o.fire("NewBlock",{newBlock:I}),c.typing=!1,c.add())}}}var s=o.dom,l=o.selection,u=o.settings,c=o.undoManager,d=o.schema,f=d.getNonEmptyElements(),p=d.getMoveCaretBeforeOnEnterElements();o.on("keydown",function(e){13==e.keyCode&&a(e)!==!1&&e.preventDefault()})}}),r(re,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,u,c,d,f,p,h,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){u=l.startContainer,c=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),c=y.move("character",m)*-1,y.collapsed||(y=l.duplicate(),y.collapse(!1),f=y.move("character",m)*-1-c);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){h=t,t=t.nextSibling,r.remove(h);continue}p||(p=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(p,t), +g=!0),h=t,t=t.nextSibling,p.appendChild(h)}else p=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(u,c),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",c),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(ie,[z,y,_,$,k,U],function(e,t,n,r,i,o){function a(e){return e>0}function s(e){return e<0}function l(e,t){for(var n;n=e(t);)if(!N(n))return n;return null}function u(e,n,r,i,o){var u=new t(e,i);if(s(n)){if((x(e)||N(e))&&(e=l(u.prev,!0),r(e)))return e;for(;e=l(u.prev,o);)if(r(e))return e}if(a(n)){if((x(e)||N(e))&&(e=l(u.next,!0),r(e)))return e;for(;e=l(u.next,o);)if(r(e))return e}return null}function c(e,t){for(e=e.parentNode;e&&e!=t;e=e.parentNode)if(C(e))return e;return t}function d(e,t){for(;e&&e!=t;){if(w(e))return e;e=e.parentNode}return null}function f(e,t,n){return d(e.container(),n)==d(t.container(),n)}function p(e,t,n){return c(e.container(),n)==c(t.container(),n)}function h(e,t){var n,r;return t?(n=t.container(),r=t.offset(),S(n)?n.childNodes[r+e]:null):null}function m(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function g(e,t,n){return d(t,e)==d(n,e)}function v(e,t,n){var r,i;for(i=e?"previousSibling":"nextSibling";n&&n!=t;){if(r=n[i],E(r)&&(r=r[i]),x(r)){if(g(t,r,n))return r;break}if(k(r))break;n=n.parentNode}return null}function y(e,t,r){var o,a,s,l,u=_(v,!0,t),c=_(v,!1,t);if(a=r.startContainer,s=r.startOffset,i.isCaretContainerBlock(a)){if(S(a)||(a=a.parentNode),l=a.getAttribute("data-mce-caret"),"before"==l&&(o=a.nextSibling,x(o)))return T(o);if("after"==l&&(o=a.previousSibling,x(o)))return R(o)}if(!r.collapsed)return r;if(n.isText(a)){if(E(a)){if(1===e){if(o=c(a))return T(o);if(o=u(a))return R(o)}if(e===-1){if(o=u(a))return R(o);if(o=c(a))return T(o)}return r}if(i.endsWithCaretContainer(a)&&s>=a.data.length-1)return 1===e&&(o=c(a))?T(o):r;if(i.startsWithCaretContainer(a)&&s<=1)return e===-1&&(o=u(a))?R(o):r;if(s===a.data.length)return o=c(a),o?T(o):r;if(0===s)return o=u(a),o?R(o):r}return r}function b(e,t){return x(h(e,t))}var C=n.isContentEditableTrue,x=n.isContentEditableFalse,w=n.matchStyleValues("display","block table table-cell table-caption"),E=i.isCaretContainer,N=i.isCaretContainerBlock,_=e.curry,S=n.isElement,k=o.isCaretCandidate,T=_(m,!0),R=_(m,!1);return{isForwards:a,isBackwards:s,findNode:u,getEditingHost:c,getParentBlock:d,isInSameBlock:f,isInSameEditingHost:p,isBeforeContentEditableFalse:_(b,0),isAfterContentEditableFalse:_(b,-1),normalizeRange:y}}),r(oe,[_,U,$,ie,h,z],function(e,t,n,r,i,o){function a(e,t){for(var n=[];e&&e!=t;)n.push(e),e=e.parentNode;return n}function s(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function l(e,t){if(m(e)){if(v(t.previousSibling)&&!f(t.previousSibling))return n.before(t);if(f(t))return n(t,0)}if(g(e)){if(v(t.nextSibling)&&!f(t.nextSibling))return n.after(t);if(f(t))return n(t,t.data.length)}return g(e)?h(t)?n.before(t):n.after(t):n.before(t)}function u(t,i){var o;return!!e.isBr(t)&&(o=c(1,n.after(t),i),!!o&&!r.isInSameBlock(n.before(t),n.before(o),i))}function c(e,t,h){var C,x,w,E,N,_,S;if(!p(h)||!t)return null;if(S=t,C=S.container(),x=S.offset(),f(C)){if(g(e)&&x>0)return n(C,--x);if(m(e)&&x<C.length)return n(C,++x);w=C}else{if(g(e)&&x>0&&(E=s(C,x-1),v(E)))return!y(E)&&(N=r.findNode(E,e,b,E))?f(N)?n(N,N.data.length):n.after(N):f(E)?n(E,E.data.length):n.before(E);if(m(e)&&x<C.childNodes.length&&(E=s(C,x),v(E)))return u(E,h)?c(e,n.after(E),h):!y(E)&&(N=r.findNode(E,e,b,E))?f(N)?n(N,0):n.before(N):f(E)?n(E,0):n.after(E);w=S.getNode()}return(m(e)&&S.isAtEnd()||g(e)&&S.isAtStart())&&(w=r.findNode(w,e,o.constant(!0),h,!0),b(w))?l(e,w):(E=r.findNode(w,e,b,h),_=i.last(i.filter(a(C,h),d)),!_||E&&_.contains(E)?E?l(e,E):null:S=m(e)?n.after(_):n.before(_))}var d=e.isContentEditableFalse,f=e.isText,p=e.isElement,h=e.isBr,m=r.isForwards,g=r.isBackwards,v=t.isCaretCandidate,y=t.isAtomic,b=t.isEditableCaretCandidate;return function(e){return{next:function(t){return c(1,t,e)},prev:function(t){return c(-1,t,e)}}}}),r(ae,[m,oe,$],function(e,t,n){var r=function(e){var t=e.firstChild,n=e.lastChild;return t&&"meta"===t.name&&(t=t.next),n&&"mce_marker"===n.attr("id")&&(n=n.prev),!(!t||t!==n)&&("ul"===t.name||"ol"===t.name)},i=function(e){var t=e.firstChild,n=e.lastChild;return t&&"META"===t.nodeName&&t.parentNode.removeChild(t),n&&"mce_marker"===n.id&&n.parentNode.removeChild(n),e},o=function(e,t,n){var r=t.serialize(n),o=e.createFragment(r);return i(o)},a=function(t){return e.grep(t.childNodes,function(e){return"LI"===e.nodeName})},s=function(e){return!e.firstChild},l=function(e){return e.length>0&&s(e[e.length-1])?e.slice(0,-1):e},u=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},c=function(e,t){return!!u(e,t)},d=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]},f=function(e,r){var i=n.before(e),o=new t(r),a=o.next(i);return a?a.toRange():null},p=function(e,r){var i=n.after(e),o=new t(r),a=o.prev(i);return a?a.toRange():null},h=function(t,n,r,i){var o=d(t,i),a=t.parentNode;return a.insertBefore(o[0],t),e.each(n,function(e){a.insertBefore(e,t)}),a.insertBefore(o[1],t),a.removeChild(t),p(n[n.length-1],r)},m=function(t,n,r){var i=t.parentNode;return e.each(n,function(e){i.insertBefore(e,t)}),f(t,r)},g=function(e,t,n,r){return r.insertAfter(t.reverse(),e),p(t[0],n)},v=function(e,r,i,s){var c=o(r,e,s),d=u(r,i.startContainer),f=l(a(c.firstChild)),p=1,v=2,y=r.getRoot(),b=function(e){var o=n.fromRangeStart(i),a=new t(r.getRoot()),s=e===p?a.prev(o):a.next(o);return!s||u(r,s.getNode())!==d};return b(p)?m(d,f,y):b(v)?g(d,f,y,r):h(d,f,y,i)};return{isListFragment:r,insertAtCaret:v,isParentBlockLi:c,trimListItems:l,listItems:a}}),r(se,[d,m,P,oe,$,X,_,ae],function(e,t,n,r,i,o,a,s){var l=a.matchNodeNames("td th"),u=function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,i=n.lastChild;!r||r===i&&"BR"===r.nodeName?e.dom.setHTML(n,t):e.selection.setContent(t)}},c=function(a,c,d){function f(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=L.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^ /," "):t("previousSibling")||(e=e.replace(/^ /," ")),i<r.length?e=e.replace(/ (<br>|)$/," "):t("nextSibling")||(e=e.replace(/( | )(<br>|)$/," "))),e}function p(){var e,t,n;e=L.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(c)||(c+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(c)||(c=" "+c)))}function h(){if(B){var e=a.getBody(),n=new o(M);t.each(M.select("*[data-mce-fragment]"),function(t){for(var r=t.parentNode;r&&r!=e;r=r.parentNode)D[t.nodeName.toLowerCase()]&&n.compare(r,t)&&M.remove(t,!0)})}}function m(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}function g(e){t.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}function v(e){return!!e.getAttribute("data-mce-fragment")}function y(e){return e&&!a.schema.getShortEndedElements()[e.nodeName]}function b(t){function n(e){for(var t=a.getBody();e&&e!==t;e=e.parentNode)if("false"===a.dom.getContentEditable(e))return e;return null}function o(e){var t=i.fromRangeStart(e),n=new r(a.getBody());if(t=n.next(t))return t.toRange()}var s,u,c;if(t){if(L.scrollIntoView(t),s=n(t))return M.remove(t),void L.select(s);k=M.createRng(),T=t.previousSibling,T&&3==T.nodeType?(k.setStart(T,T.nodeValue.length),e.ie||(R=t.nextSibling,R&&3==R.nodeType&&(T.appendData(R.data),R.parentNode.removeChild(R)))):(k.setStartBefore(t),k.setEndBefore(t)),u=M.getParent(t,M.isBlock),M.remove(t),u&&M.isEmpty(u)&&(a.$(u).empty(),k.setStart(u,0),k.setEnd(u,0),l(u)||v(u)||!(c=o(k))?M.add(u,M.create("br",{"data-mce-bogus":"1"})):(k=c,M.remove(u))),L.setRng(k)}}var C,x,w,E,N,_,S,k,T,R,A,B,D=a.schema.getTextInlineElements(),L=a.selection,M=a.dom;/^ | $/.test(c)&&(c=f(c)),C=a.parser,B=d.merge,x=new n({validate:a.settings.validate},a.schema),A='<span id="mce_marker" data-mce-type="bookmark">​</span>',_={content:c,format:"html",selection:!0},a.fire("BeforeSetContent",_),c=_.content,c.indexOf("{$caret}")==-1&&(c+="{$caret}"),c=c.replace(/\{\$caret\}/,A),k=L.getRng();var P=k.startContainer||(k.parentElement?k.parentElement():null),O=a.getBody();P===O&&L.isCollapsed()&&M.isBlock(O.firstChild)&&y(O.firstChild)&&M.isEmpty(O.firstChild)&&(k=M.createRng(),k.setStart(O.firstChild,0),k.setEnd(O.firstChild,0),L.setRng(k)),L.isCollapsed()||(a.selection.setRng(a.selection.getRng()),a.getDoc().execCommand("Delete",!1,null),p()),w=L.getNode();var H={context:w.nodeName.toLowerCase(),data:d.data};if(N=C.parse(c,H),d.paste===!0&&s.isListFragment(N)&&s.isParentBlockLi(M,w))return k=s.insertAtCaret(x,M,a.selection.getRng(!0),N),a.selection.setRng(k),void a.fire("SetContent",_);if(m(N),T=N.lastChild,"mce_marker"==T.attr("id"))for(S=T,T=T.prev;T;T=T.walk(!0))if(3==T.type||!M.isBlock(T.name)){a.schema.isValidChild(T.parent.name,"span")&&T.parent.insert(S,T,"br"===T.name);break}if(a._selectionOverrides.showBlockCaretContainer(w),H.invalid){for(L.setContent(A),w=L.getNode(),E=a.getBody(),9==w.nodeType?w=T=E:T=w;T!==E;)w=T,T=T.parentNode;c=w==E?E.innerHTML:M.getOuterHTML(w),c=x.serialize(C.parse(c.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return x.serialize(N)}))),w==E?M.setHTML(E,c):M.setOuterHTML(w,c)}else c=x.serialize(N),u(a,c,w);h(),b(M.get("mce_marker")),g(a.getBody()),a.fire("SetContent",_),a.addVisual()},d=function(e){var n;return"string"!=typeof e?(n=t.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:n}):{content:e,details:{}}},f=function(e,t){var n=d(t);c(e,n.content,n.details)};return{insertAtCaret:f}}),r(le,[d,m,T,y,se,_],function(e,n,r,i,o,a){var s=n.each,l=n.extend,u=n.map,c=n.inArray,d=n.explode,f=e.ie&&e.ie<11,p=!0,h=!1;return function(n){function m(e,t,r,i){var o,a,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||n.focus(),i=n.fire("BeforeExecCommand",{command:e,ui:t,value:r}),i.isDefaultPrevented())return!1;if(a=e.toLowerCase(),o=D.exec[a])return o(a,t,r),n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;if(s(n.plugins,function(i){if(i.execCommand&&i.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),l=!0,!1}),l)return l;if(n.theme&&n.theme.execCommand&&n.theme.execCommand(e,t,r))return n.fire("ExecCommand",{command:e,ui:t,value:r}),!0;try{l=n.getDoc().execCommand(e,t,r)}catch(u){}return!!l&&(n.fire("ExecCommand",{command:e,ui:t,value:r}),!0)}function g(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=D.state[e])return t(e);try{return n.getDoc().queryCommandState(e)}catch(r){}return!1}}function v(e){var t;if(!n.quirks.isHidden()){if(e=e.toLowerCase(),t=D.value[e])return t(e);try{return n.getDoc().queryCommandValue(e)}catch(r){}}}function y(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){D[t][n]=e})})}function b(e,t,r){e=e.toLowerCase(),D.exec[e]=function(e,i,o,a){return t.call(r||n,i,o,a)}}function C(e){if(e=e.toLowerCase(),D.exec[e])return!0;try{return n.getDoc().queryCommandSupported(e)}catch(t){}return!1}function x(e,t,r){e=e.toLowerCase(),D.state[e]=function(){return t.call(r||n)}}function w(e,t,r){e=e.toLowerCase(),D.value[e]=function(){return t.call(r||n)}}function E(e){return e=e.toLowerCase(),!!D.exec[e]}function N(e,r,i){return r===t&&(r=h),i===t&&(i=null),n.getDoc().execCommand(e,r,i)}function _(e){return B.match(e)}function S(e,r){B.toggle(e,r?{value:r}:t),n.nodeChanged()}function k(e){M=A.getBookmark(e)}function T(){A.moveToBookmark(M)}var R,A,B,D={state:{},exec:{},value:{}},L=n.settings,M;n.on("PreInit",function(){R=n.dom,A=n.selection,L=n.settings,B=n.formatter}),l(this,{execCommand:m,queryCommandState:g,queryCommandValue:v,queryCommandSupported:C,addCommands:y,addCommand:b,addQueryStateHandler:x,addQueryValueHandler:w,hasCustomCommand:E}),y({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(t){var r=n.getDoc(),i;try{N(t)}catch(o){i=p}if("paste"!==t||r.queryCommandEnabled(t)||(i=!0),i||!r.queryCommandSupported(t)){var a=n.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");e.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),n.notificationManager.open({text:a,type:"error"})}},unlink:function(){if(A.isCollapsed()){var e=n.dom.getParent(n.selection.getStart(),"a");return void(e&&n.dom.remove(e,!0))}B.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&B.remove("align"+e)}),"none"!=t&&S("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;N(e),t=R.getParent(A.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(k(),R.split(n,t),T()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){S(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){S(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&n<=7&&(i=d(L.font_size_style_values),r=d(L.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),S(e,n)},RemoveFormat:function(e){B.remove(e)},mceBlockQuote:function(){S("blockquote")},FormatBlock:function(e,t,n){return S(n||"p")},mceCleanup:function(){var e=A.getBookmark();n.setContent(n.getContent({cleanup:p}),{cleanup:p}),A.moveToBookmark(e)},mceRemoveNode:function(e,t,r){var i=r||A.getNode();i!=n.getBody()&&(k(),n.dom.remove(i,p),T())},mceSelectNodeDepth:function(e,t,r){var i=0;R.getParent(A.getNode(),function(e){if(1==e.nodeType&&i++==r)return A.select(e),h},n.getBody())},mceSelectNode:function(e,t,n){A.select(n)},mceInsertContent:function(e,t,r){o.insertAtCaret(n,r)},mceInsertRawHTML:function(e,t,r){A.setContent("tiny_mce_marker"),n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return r}))},mceToggleFormat:function(e,t,n){S(n)},mceSetContent:function(e,t,r){n.setContent(r)},"Indent,Outdent":function(e){var t,r,i;t=L.indentation,r=/[a-z%]+$/i.exec(t),t=parseInt(t,10),g("InsertUnorderedList")||g("InsertOrderedList")?N(e):(L.forced_root_block||R.getParent(A.getNode(),R.isBlock)||B.apply("div"),s(A.getSelectedBlocks(),function(o){if("false"!==R.getContentEditable(o)&&"LI"!==o.nodeName){var a=n.getParam("indent_use_margin",!1)?"margin":"padding";a="TABLE"===o.nodeName?"margin":a,a+="rtl"==R.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),R.setStyle(o,a,i?i+r:"")):(i=parseInt(o.style[a]||0,10)+t+r,R.setStyle(o,a,i))}}))},mceRepaint:function(){},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual,n.addVisual()},mceReplaceContent:function(e,t,r){n.execCommand("mceInsertContent",!1,r.replace(/\{\$selection\}/g,A.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=R.getParent(A.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||B.remove("link"),n.href&&B.apply("link",n,r)},selectAll:function(){var e=R.getRoot(),t;if(A.getRng().setStart){var n=R.getParent(A.getStart(),a.isContentEditableTrue);n&&(t=R.createRng(),t.selectNodeContents(n),A.setRng(t))}else t=A.getRng(),t.item||(t.moveToElementText(e),t.select())},"delete":function(){N("Delete");var e=n.getBody();R.isEmpty(e)&&(n.setContent(""),e.firstChild&&R.isBlock(e.firstChild)?n.selection.setCursorLocation(e.firstChild,0):n.selection.setCursorLocation(e,0))},mceNewDocument:function(){n.setContent("")},InsertLineBreak:function(e,t,o){function a(){for(var e=new i(m,v),t,r=n.schema.getNonEmptyElements();t=e.next();)if(r[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=o,l,u,c,d=A.getRng(!0);new r(R).normalize(d);var h=d.startOffset,m=d.startContainer;if(1==m.nodeType&&m.hasChildNodes()){var g=h>m.childNodes.length-1;m=m.childNodes[Math.min(h,m.childNodes.length-1)]||m,h=g&&3==m.nodeType?m.nodeValue.length:0}var v=R.getParent(m,R.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?R.getParent(v.parentNode,R.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),m&&3==m.nodeType&&h>=m.nodeValue.length&&(f||a()||(l=R.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),u=!0)),l=R.create("br"),d.insertNode(l);var w=R.doc.documentMode;return f&&"PRE"==y&&(!w||w<8)&&l.parentNode.insertBefore(R.doc.createTextNode("\r"),l),c=R.create("span",{}," "),l.parentNode.insertBefore(c,l),A.scrollIntoView(c),R.remove(c),u?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),A.setRng(d),n.undoManager.add(),p}}),y({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=A.isCollapsed()?[R.getParent(A.getNode(),R.isBlock)]:A.getSelectedBlocks(),r=u(n,function(e){return!!B.matchNode(e,t)});return c(r,p)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return _(e)},mceBlockQuote:function(){return _("blockquote")},Outdent:function(){var e;if(L.inline_styles){if((e=R.getParent(A.getStart(),R.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return p;if((e=R.getParent(A.getEnd(),R.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return p}return g("InsertUnorderedList")||g("InsertOrderedList")||!L.inline_styles&&!!R.getParent(A.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=R.getParent(A.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),y({"FontSize,FontName":function(e){var t=0,n;return(n=R.getParent(A.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),y({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}),r(ue,[m],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var u=0===e.indexOf("//");0!==e.indexOf("/")||u||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),u&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;o<a;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;o<a;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);o<a;o++)i+="../";for(o=r-1,a=n.length;o<a;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=r<=0?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},t}),r(ce,[m],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=u[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,u=l.prototype,c,d,f;o=!0,c=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){for(var n in t)"init"!==n&&(e[n]=t[n])}),u.Mixins&&(e.Mixins=u.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&u.Defaults&&(e.Defaults=r({},u.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&u[d]?c[d]=s(d,f):c[d]=f;return t.prototype=c,t.constructor=t,t.extend=i,t},t}),r(de,[m],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,u;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=c),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;s<l;s++){if(u=o[s],u.once&&a(e,u.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(u.func.call(c,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return u}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return u}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return u}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var u=this,c,d={},f;t=t||{},c=t.scope||u,f=t.toggleEvent||n,u.fire=i,u.on=o,u.off=a,u.once=s,u.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(fe,[],function(){function e(e){this.create=e.create}return e.create=function(t,n){return new e({create:function(e,r){function i(t){e.set(r,t.value)}function o(e){t.set(n,e.value)}var a;return e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(pe,[de],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(he,[fe,pe,ce,m],function(e,t,n,r){function i(e){return e.nodeType>0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(me,[ce],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}function o(e){if(e)return function(t){return t._name===e}}function a(e){if(e)return e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}}function s(e,t,n){if(e)return function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t&&i.substr(i.length-n.length)===n:!!n}}function l(e){var t;if(e)return e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=c(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:!!t[e]&&t[e]()})}function u(e,r,u){function c(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),c(t(d[1])),c(o(d[2])),c(a(d[3])),c(s(d[4],d[5],d[6])),c(l(d[7])),r.pseudo=!!d[7],r.direct=u,r}function c(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&c(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(u(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=c(e,[])},match:function(e,t){var n,r,i,o,a,s,l,u,c,d,f,p,h;for(t=t||this._selectors,n=0,r=t.length;n<r;n++){for(a=t[n],o=a.length,h=e,p=0,i=o-1;i>=0;i--)for(u=a[i];h;){if(u.pseudo)for(f=h.parent().items(),c=d=f.length;c--&&f[c]!==h;);for(s=0,l=u.length;s<l;s++)if(!u[s](h,c,d)){s=l+1;break}if(s===l){p++;break}if(i===o-1)break;h=h.parent()}if(p===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,u,c=t[i];for(o=0,a=e.length;o<a;o++){for(u=e[o],s=0,l=c.length;s<l;s++)if(!c[s](u,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(u):u.items&&n(u.items(),t,i+1);else if(c.direct)return;u.items&&n(u.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;i<s;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(ge,[m,me,ce],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;r<n;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;i<o;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return e===-1?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show hide append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(ve,[d,m,w],function(e,t,n){var r=0,i={id:function(){return"mceu_"+r++},create:function(e,r,i){var o=document.createElement(e);return n.DOM.setAttribs(o,r),"string"==typeof i?o.innerHTML=i:t.each(i,function(e){e.nodeType&&o.appendChild(e)}),o},createFragment:function(e){return n.DOM.createFragment(e)},getWindowSize:function(){return n.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return n.DOM.getPos(e,t||i.getContainer())},getContainer:function(){return e.container?e.container:document.body},getViewPort:function(e){return n.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return n.DOM.addClass(e,t)},removeClass:function(e,t){return n.DOM.removeClass(e,t)},hasClass:function(e,t){return n.DOM.hasClass(e,t)},toggleClass:function(e,t,r){return n.DOM.toggleClass(e,t,r)},css:function(e,t,r){return n.DOM.setStyle(e,t,r)},getRuntimeStyle:function(e,t){return n.DOM.getStyle(e,t,!0)},on:function(e,t,r,i){return n.DOM.bind(e,t,r,i)},off:function(e,t,r){ +return n.DOM.unbind(e,t,r)},fire:function(e,t,r){return n.DOM.fire(e,t,r)},innerHtml:function(e,t){n.DOM.setHTML(e,t)}};return i}),r(ye,[],function(){return{parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(be,[m],function(e){function t(){}function n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return e.extend(n.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),n.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)t>0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(Ce,[c],function(e){var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e.requestAnimationFrame(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(xe,[ce,m,de,he,ge,ve,g,ye,be,Ce],function(e,t,n,r,i,o,a,s,l,u){function c(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=u._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),u._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=u._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(u._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i<s.length&&a[i]===s[i];i++);for(o=s.length-1;o>=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;o<a.length;o++)n=a[o],n.fire("mouseenter",{target:n.getEl()})}}function i(t){t.preventDefault(),"mousewheel"==t.type?(t.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-.025*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=e.fire("wheel",t)}var o,s,l,u,c,d;if(c=e._nativeEvents){for(l=e.parents().toArray(),l.unshift(e),o=0,s=l.length;!u&&o<s;o++)u=l[o]._eventsRoot;for(u||(u=l[l.length-1]||e),e._eventsRoot=u,s=o,o=0;o<s;o++)l[o]._eventsRoot=u;var h=u._delegates;h||(h=u._delegates={});for(d in c){if(!c)return!1;"wheel"!==d||p?("mouseenter"===d||"mouseleave"===d?u._hasMouseEnter||(a(u.getEl()).on("mouseleave",n).on("mouseover",r),u._hasMouseEnter=1):h[d]||(a(u.getEl()).on(d,t),h[d]=!0),c[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var f="onmousewheel"in document,p=!1,h="mce-",m,g=0,v={Statics:{classPrefix:h},isRtl:function(){return m.rtl},classPrefix:h,init:function(e){function n(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}var i=this,o,u;i.settings=e=t.extend({},i.Defaults,e),i._id=e.id||"mceu_"+g++,i._aria={role:e.role},i._elmCache={},i.$=a,i.state=new r({visible:!0,active:!1,disabled:!1,value:""}),i.data=new r(e.data),i.classes=new l(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,o=e.classes,o&&(i.Defaults&&(u=i.Defaults.classes,u&&o!=u&&n(u)),n(o)),t.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[t])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=e,i.borderBox=s.parseBox(e.border),i.paddingBox=s.parseBox(e.padding),i.marginBox=s.parseBox(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){return o.getContainer()},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e=this,t=e.settings,n,r,i=e.getEl(),a,l,u,c,d,f,p,h;n=e.borderBox=e.borderBox||s.measureBox(i,"border"),e.paddingBox=e.paddingBox||s.measureBox(i,"padding"),e.marginBox=e.marginBox||s.measureBox(i,"margin"),h=o.getSize(i),f=t.minWidth,p=t.minHeight,u=f||h.width,c=p||h.height,a=t.width,l=t.height,d=t.autoResize,d="undefined"!=typeof d?d:!a&&!l,a=a||u,l=l||c;var m=n.left+n.right,g=n.top+n.bottom,v=t.maxWidth||65535,y=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:l,deltaW:m,deltaH:g,contentW:a-m,contentH:l-g,innerW:a-m,innerH:l-g,startMinWidth:f||0,startMinHeight:p||0,minW:Math.min(u,v),minH:Math.min(c,y),maxW:v,maxH:y,autoResize:d,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,l;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,r.x===n.x&&r.y===n.y&&r.w===n.w&&r.h===n.h||(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a,s,l,u,c;u=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=u(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=u(i.y)+"px",l.y=i.y),i.w!==l.w&&(c=u(i.w-a),t.width=(c>=0?c:0)+"px",l.w=i.w),i.h!==l.h&&(c=u(i.h-s),t.height=(c>=0?c:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(c=u(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(c>=0?c:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(c=u(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(c>=0?c:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,o.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;if(i&&(t=i[e]))return n=r,!1}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return c(r).on(e,n(t)),r},off:function(e,t){return c(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=c(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return c(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i;if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var c in e._aria)e.aria(c,e._aria[c]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),u.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,u,c=t(n,r);return i=c.x,o=c.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,u=r.clientHeight,"end"==e?(i-=l-a,o-=u-s):"center"==e&&(i-=l/2-a/2,o-=u/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){u.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(we,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(Ee,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||C,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||C;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=C;if(t(n))return n.getAttribute("aria-"+e)}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t||"SELECT"==t}function a(e){return!(!o(e)||e.hidden)||!!/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(n(e))}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display&&!e.disabled){a(e)&&n.push(e);for(var r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return t(e||b.getEl()),n}function l(e){var t,n;e=e||x,n=e.parents().toArray(),n.unshift(e);for(var r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return t}function u(e){var t=l(e),n=s(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?c(t.lastAriaIndex,n):c(0,n)}function c(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i<t.length;i++)t[i]===C&&(n=i);n+=e,r.lastAriaIndex=c(n,t)}function f(){var e=r();"tablist"==e?d(-1,s(C.parentNode)):x.parent().submenu?v():d(-1)}function p(){var e=n(),t=r();"tablist"==t?d(1,s(C.parentNode)):"menuitem"==e&&"menu"==t&&i("haspopup")?y():d(1)}function h(){d(-1)}function m(){var e=n(),t=r();"menuitem"==e&&"menubar"==t?y():"button"==e&&i("haspopup")?y({key:"down"}):d(1)}function g(e){var t=r();if("tablist"==t){var n=s(x.getEl("body"))[0];n&&n.focus()}else d(e.shiftKey?-1:1)}function v(){x.fire("cancel")}function y(e){e=e||{},x.fire("click",{target:C,aria:e})}var b=e.root,C,x;try{C=document.activeElement}catch(w){C=document.body}return x=b.getParentCtrl(C),b.on("keydown",function(e){function t(e,t){o(C)||"slider"!==n(C)&&t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,f);break;case 39:t(e,p);break;case 38:t(e,h);break;case 40:t(e,m);break;case 27:v();break;case 14:case 13:case 32:t(e,y);break;case 9:g(e)!==!1&&e.preventDefault()}}),b.on("focusin",function(e){C=e.target,x=e.control}),{focusFirst:u}}}),r(Ne,[xe,ge,me,we,Ee,m,g,be,Ce],function(e,t,n,r,i,o,a,s,l){var u={};return e.extend({init:function(e){var n=this;n._super(e),e=n.settings,e.fixed&&n.state.set("fixed",!0),n._items=new t,n.isRtl()&&n.classes.add("rtl"),n.bodyClasses=new s(function(){n.state.get("rendered")&&(n.getEl("body").className=this.toString())}),n.bodyClasses.prefix=n.classPrefix,n.classes.add("container"),n.bodyClasses.add("container-body"),e.containerCls&&n.classes.add(e.containerCls),n._layout=r.create((e.layout||"")+"layout"),n.settings.items?n.add(n.settings.items):n.add(n.render()),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=u[e]=u[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(e){var t=this,n,r,i;return e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!=t.w||n.h!=t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(_e,[g],function(e){function t(e){var t,n,r,i,o,a,s,l,u=Math.max;return t=e.documentElement,n=e.body,r=u(t.scrollWidth,n.scrollWidth),i=u(t.clientWidth,n.clientWidth),o=u(t.offsetWidth,n.offsetWidth),a=u(t.scrollHeight,n.scrollHeight),s=u(t.clientHeight,n.clientHeight),l=u(t.offsetHeight,n.offsetHeight),{width:r<o?i:r,height:a<l?s:a}}function n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}return function(r,i){function o(){return s.getElementById(i.handle||r)}var a,s=i.document||document,l,u,c,d,f,p;i=i||{},u=function(r){var u=t(s),h,m;n(r),r.preventDefault(),l=r.button,h=o(),f=r.screenX,p=r.screenY,m=window.getComputedStyle?window.getComputedStyle(h,null).getPropertyValue("cursor"):h.runtimeStyle.cursor,a=e("<div></div>").css({position:"absolute",top:0,left:0,width:u.width,height:u.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",c),i.start(r)},d=function(e){return n(e),e.button!==l?c(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-p,e.preventDefault(),void i.drag(e))},c=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",c),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",u)}}),r(Se,[g,_e],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,u,c){var d,f,p,h,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!u)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),p=i.getEl("scroll"+t+"t"),h=d["client"+s]-2*o,h-=n&&r?f["client"+c]:0,m=d["scroll"+s],g=h/m,v={},v[y]=d["offset"+a]+o,v[b]=h,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=h*g,e(p).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var u,c=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('<div id="'+c+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'"><div id="'+c+'t" class="'+d+'scrollbar-thumb"></div></div>'),i.draghelper=new t(c+"t",{start:function(){u=i.getEl("body")["scroll"+r],e("#"+c).addClass(d+"active")},drag:function(e){var t,c,d,f,p=i.layoutRect();c=p.contentW>p.innerW,d=p.contentH>p.innerH,f=i.getEl("body")["client"+a]-2*o,f-=c&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=u+e["delta"+s]/t},stop:function(){e("#"+c).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(ke,[Ne,Se],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(Te,[ve],function(e){function t(t,n,r){var i,o,a,s,l,u,c,d,f,p;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),p=e.getSize(i),l=p.width,u=p.height,p=e.getSize(n),c=p.width,d=p.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=c),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(c/2)),"b"===r[3]&&(s-=u),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(u/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:u}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this.state.get("fixed")){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return e<0?0:e+n>t?(e=t-n,e<0?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(Re,[ve],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(t<=1||n<=1){var r=e.getWindowSize();t=t<=1?t*r.w:t,n=n<=1?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(Ae,[ke,Te,Re,ve,g,c],function(e,t,n,r,i,o){function a(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function s(e){for(var t=v.length;t--;){var n=v[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(a(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function l(){h||(h=function(e){2!=e.button&&s(e)},i(document).on("click touchstart",h))}function u(){m||(m=function(){var e;for(e=v.length;e--;)d(v[e])},i(window).on("scroll",m))}function c(){if(!g){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;g=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,C.hideAll())},i(window).on("resize",g)}}function d(e){function t(t,n){for(var r,i=0;i<v.length;i++)if(v[i]!=e)for(r=v[i].parent();r&&(r=r.parent());)r==e&&v[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e.state.get("fixed")?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function f(e,t){var n,r=C.zIndex||65535,o;if(e)y.push(t);else for(n=y.length;n--;)y[n]===t&&y.splice(n,1);if(y.length)for(n=0;n<y.length;n++)y[n].modal&&(r++,o=y[n]),y[n].getEl().style.zIndex=r,y[n].zIndex=r,r++;var a=i("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];o?i(a).css("z-index",o.zIndex-1):a&&(a.parentNode.removeChild(a),b=!1),C.currentZIndex=r}function p(e){var t;for(t=v.length;t--;)v[t]===e&&v.splice(t,1);for(t=y.length;t--;)y[t]===e&&y.splice(t,1)}var h,m,g,v=[],y=[],b,C=e.extend({Mixins:[t,n],init:function(e){var t=this;t._super(e),t._eventsRoot=t,t.classes.add("floatpanel"),e.autohide&&(l(),c(),v.push(t)),e.autofix&&(u(),t.on("move",function(){d(this)})),t.on("postrender show",function(e){if(e.control==t){var n,r=t.classPrefix;t.modal&&!b&&(n=i("#"+r+"modal-block",t.getContainerElm()),n[0]||(n=i('<div id="'+r+'modal-block" class="'+r+"reset "+r+'fade"></div>').appendTo(t.getContainerElm())),o.setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")}),b=!0),f(!0,t)}}),t.on("show",function(){t.parents().each(function(e){if(e.state.get("fixed"))return t.fixed(!0),!1})}),e.popover&&(t._preBodyHtml='<div class="'+t.classPrefix+'arrow"></div>',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=v.length;t--&&v[t]!==e;);return t===-1&&v.push(e),n},hide:function(){return p(this),f(!1,this),this._super()},hideAll:function(){C.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),f(!1,e)),e},remove:function(){p(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return C.hideAll=function(){for(var e=v.length;e--;){var t=v[e];t&&t.settings.autohide&&(t.hide(),v.splice(e,1))}},C}),r(Be,[Ae,ke,ve,g,_e,ye,d,c],function(e,t,n,r,i,o,a,s){function l(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof p&&(p=i),n.setAttribute("content",e?t:p))}function u(e,t){c()&&t===!1&&r([document.documentElement,document.body]).removeClass(e+"fullscreen")}function c(){for(var e=0;e<f.length;e++)if(f[e]._fullscreen)return!0;return!1}function d(){function e(){var e,t=n.getWindowSize(),r;for(e=0;e<f.length;e++)r=f[e].layoutRect(),f[e].moveTo(f[e].settings.x||Math.max(0,t.w/2-r.w/2),f[e].settings.y||Math.max(0,t.h/2-r.h/2))}if(!a.desktop){var t={w:window.innerWidth,h:window.innerHeight};s.setInterval(function(){var e=window.innerWidth,n=window.innerHeight;t.w==e&&t.h==n||(t={w:e,h:n},r(window).trigger("resize"))},100)}r(window).on("resize",e)}var f=[],p="",h=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var r=this;r._super(e),r.isRtl()&&r.classes.add("rtl"),r.classes.add("window"),r.bodyClasses.add("window-body"),r.state.set("fixed",!0),e.buttons&&(r.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:r.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),r.statusbar.classes.add("foot"),r.statusbar.parent(r)),r.on("click",function(e){var t=r.classPrefix+"close";(n.hasClass(e.target,t)||n.hasClass(e.target.parentNode,t))&&r.close()}),r.on("cancel",function(){r.close()}),r.aria("describedby",r.describedBy||r._id+"-none"),r.aria("label",e.title),r._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head"><div id="'+n+'-title" class="'+r+'title">'+e.encode(i.title)+'</div><div id="'+n+'-dragh" class="'+r+'dragh"></div><button type="button" class="'+r+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var t=this,i=document.documentElement,a,l=t.classPrefix,u;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=s.setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),u=t.layoutRect(),t._fullscreen=e,e){t._initial={x:u.x,y:u.y,w:u.w,h:u.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",u.deltaH-=u.headerH+2,r([i,document.body]).addClass(l+"fullscreen"),t.classes.add("fullscreen");var c=n.getWindowSize();t.moveTo(0,0).resizeTo(c.w,c.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",u.deltaH+=u.headerH,r([i,document.body]).removeClass(l+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),f.push(e),l(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),u(e.classPrefix,!1),t=f.length;t--;)f[t]===e&&f.splice(t,1);l(f.length>0)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return d(),h}),r(De,[Be],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){ +case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(Le,[Be,De],function(e,t){return function(n){function r(){if(s.length)return s[s.length-1]}function i(e){n.fire("OpenWindow",{win:e})}function o(e){n.fire("CloseWindow",{win:e})}var a=this,s=[];a.windows=s,n.on("remove",function(){for(var e=s.length;e--;)s[e].close()}),a.open=function(t,r){var a;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){a.find("form")[0].submit()}},{text:"Cancel",onclick:function(){a.close()}}]),a=new e(t),s.push(a),a.on("close",function(){for(var e=s.length;e--;)s[e]===a&&s.splice(e,1);s.length||n.focus(),o(a)}),t.data&&a.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),a.features=t||{},a.params=r||{},1===s.length&&n.nodeChanged(),a=a.renderTo().reflow(),i(a),a},a.alert=function(e,r,a){var s;s=t.alert(e,function(){r?r.call(a||this):n.focus()}),s.on("close",function(){o(s)}),i(s)},a.confirm=function(e,n,r){var a;a=t.confirm(e,function(e){n.call(r||this,e)}),a.on("close",function(){o(a)}),i(a)},a.close=function(){r()&&r().close()},a.getParams=function(){return r()?r().params:null},a.setParams=function(e){r()&&(r().params=e)},a.getWindows=function(){return s}}}),r(Me,[xe,Te],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Pe,[xe,Me],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(Oe,[Pe],function(e){return e.extend({Defaults:{value:0},init:function(e){var t=this;t._super(e),t.classes.add("progress"),t.settings.filter||(t.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this,t=e._id,n=this.classPrefix;return'<div id="'+t+'" class="'+e.classes+'"><div class="'+n+'bar-container"><div class="'+n+'bar"></div></div><div class="'+n+'text">0%</div></div>'},postRender:function(){var e=this;return e._super(),e.value(e.settings.value),e},bindStates:function(){function e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}var t=this;return t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}})}),r(He,[xe,Te,Oe,c],function(e,t,n,r){return e.extend({Mixins:[t],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new n),t.on("click",function(e){e.target.className.indexOf(t.classPrefix+"close")!=-1&&t.close()})},renderHtml:function(){var e=this,t=e.classPrefix,n="",r="",i="",o="";return e.icon&&(n='<i class="'+t+"ico "+t+"i-"+e.icon+'"></i>'),e.color&&(o=' style="background-color: '+e.color+'"'),e.closeButton&&(r='<button type="button" class="'+t+'close" aria-hidden="true">\xd7</button>'),e.progressBar&&(i=e.progressBar.renderHtml()),'<div id="'+e._id+'" class="'+e.classes+'"'+o+' role="presentation">'+n+'<div class="'+t+'notification-inner">'+e.state.get("text")+"</div>"+i+r+"</div>"},postRender:function(){var e=this;return r.setTimeout(function(){e.$el.addClass(e.classPrefix+"in")}),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().childNodes[1].innerHTML=t.value}),e.progressBar&&e.progressBar.bindStates(),e._super()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||e.remove(),e},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=65534}})}),r(Ie,[He,c,m],function(e,t,n){return function(r){function i(){if(f.length)return f[f.length-1]}function o(){t.requestAnimationFrame(function(){a(),s()})}function a(){for(var e=0;e<f.length;e++)f[e].moveTo(0,0)}function s(){if(f.length>0){var e=f.slice(0,1)[0],t=r.inline?r.getElement():r.getContentAreaContainer();if(e.moveRel(t,"tc-tc"),f.length>1)for(var n=1;n<f.length;n++)f[n].moveRel(f[n-1].getEl(),"bc-tc")}}function l(e,t){if(!c(t))return null;var r=n.grep(e,function(e){return u(t,e)});return 0===r.length?null:r[0]}function u(e,t){return e.type===t.settings.type&&e.text===t.settings.text}function c(e){return!e.progressBar&&!e.timeout}var d=this,f=[];d.notifications=f,r.on("remove",function(){for(var e=f.length;e--;)f[e].close()}),r.on("ResizeEditor",s),r.on("ResizeWindow",o),d.open=function(t){if(!r.removed){var n;r.editorManager.setActive(r);var i=l(f,t);return null===i?(n=new e(t),f.push(n),t.timeout>0&&(n.timer=setTimeout(function(){n.close()},t.timeout)),n.on("close",function(){var e=f.length;for(n.timer&&r.getWin().clearTimeout(n.timer);e--;)f[e]===n&&f.splice(e,1);s()}),n.renderTo(),s()):n=i,n}},d.close=function(){i()&&i().close()},d.getNotifications=function(){return f},r.on("SkinLoaded",function(){var e=r.settings.service_message;e&&r.notificationManager.open({text:e,type:"warning",timeout:0,icon:""})})}}),r(Fe,[w],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(ze,[I,T,y,Fe,A,C,d,m,c,k,$,oe],function(e,t,n,r,i,o,a,s,l,u,c,d){return function(f){function p(e,t){try{f.getDoc().execCommand(e,!1,t)}catch(n){}}function h(){var e=f.getDoc().documentMode;return e?e:6}function m(e){return e.isDefaultPrevented()}function g(e){var t,n;e.dataTransfer&&(f.selection.isCollapsed()&&"IMG"==e.target.tagName&&re.select(e.target),t=f.selection.getContent(),t.length>0&&(n=ce+escape(f.id)+","+escape(t),e.dataTransfer.setData(de,n)))}function v(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(de),t&&t.indexOf(ce)>=0)?(t=t.substr(ce.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function y(e){f.queryCommandSupported("mceInsertClipboardContent")?f.execCommand("mceInsertClipboardContent",!1,{content:e}):f.execCommand("mceInsertContent",!1,e)}function b(){function i(e){var t=x.schema.getBlockElements(),n=f.getBody();if("BR"!=e.nodeName)return!1;for(;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==Z.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;if(x.isChildOf(e,f.getBody()))for(s=x.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function u(e){var n,r,i,o,s;if(!e.collapsed&&(n=x.getParent(t.getNode(e.startContainer,e.startOffset),x.isBlock),r=x.getParent(t.getNode(e.endContainer,e.endOffset),x.isBlock),s=f.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==x.getContentEditable(n)&&"false"!==x.getContentEditable(r)))return e.deleteContents(),i=a(n,!1),o=a(r,!0),x.isEmpty(r)||Z(n).append(r.childNodes),Z(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),w.setRng(e),!0}function c(e,n){var r,i,s,l,u,c;if(!e.collapsed)return e;if(u=e.startContainer,c=e.startOffset,3==u.nodeType)if(n){if(c<u.data.length)return e}else if(c>0)return e;r=t.getNode(u,c),s=x.getParent(r,x.isBlock),i=a(f.getBody(),n,r),l=x.getParent(i,x.isBlock);var d=1===u.nodeType&&c>u.childNodes.length-1;if(!r||!i)return e;if(l&&s!=l)if(n){if(!o(s,l))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(l,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType&&d?e.setEndAfter(r):e.setEndBefore(r)}return e}function d(e){var t=w.getRng();if(t=c(t,e),u(t))return!0}function p(e,t){function n(e,n){return m=Z(n).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),l=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),l.hasChildNodes()?(e.appendChild(l.firstChild),l.appendChild(e)):l.appendChild(e),l.appendChild(e),e}),m.length?(h=x.create("br"),m[0].appendChild(h),x.replace(l,e),t.setStartBefore(h),t.setEndBefore(h),f.selection.setRng(t),h):null}function i(e){return e&&f.schema.getTextBlockElements()[e.tagName]}var o,a,l,u,c,d,p,h,m;if(t.collapsed&&(d=t.startContainer,p=t.startOffset,a=x.getParent(d,x.isBlock),i(a)))if(1==d.nodeType){if(d=d.childNodes[p],d&&"BR"!=d.tagName)return;if(c=e?a.nextSibling:a.previousSibling,x.isEmpty(a)&&i(c)&&x.isEmpty(c)&&n(a,d))return x.remove(c),!0}else if(3==d.nodeType){if(o=r.create(a,d),u=a.cloneNode(!0),d=r.resolve(u,o),e){if(p>=d.data.length)return;d.deleteData(p,1)}else{if(p<=0)return;d.deleteData(p-1,1)}if(x.isEmpty(u))return n(a,d)}}function h(e){var t,n,r;d(e)||(s.each(f.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&f.dom.setAttrib(e,"style",f.dom.getAttrib(e,"style"))}),t=new E(function(){}),t.observe(f.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),f.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=f.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(x.isChildOf(e.target,f.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),x.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),f.selection.setRng(n))}})}}),t.disconnect(),s.each(f.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}function b(e){f.undoManager.transact(function(){h(e)})}var C=f.getDoc(),x=f.dom,w=f.selection,E=window.MutationObserver,N,_;E||(N=!0,E=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),f.on("keydown",function(e){var t=e.keyCode==te,n=e.ctrlKey||e.metaKey;if(!m(e)&&(t||e.keyCode==ee)){var r=f.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(p(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o<i.data.length:o>0))return;e.preventDefault(),n&&f.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),h(t)}}),f.on("keypress",function(t){if(!m(t)&&!w.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=f.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=Z(n.startContainer).parents().filter(function(e,t){return!!f.schema.getTextInlineElements()[t.nodeName]}),h(!0),r=r.filter(function(e,t){return!Z.contains(f.getBody(),t)}),r.length?(i=x.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(f.getDoc().createTextNode(s)),o=x.getParent(n.startContainer,x.isBlock),x.isEmpty(o)?Z(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),f.selection.setRng(n)):f.selection.setContent(s)}}),f.addCommand("Delete",function(){h()}),f.addCommand("ForwardDelete",function(){h(!0)}),N||(f.on("dragstart",function(e){_=w.getRng(),g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);n&&(e.preventDefault(),l.setEditorTimeout(f,function(){var r=t.getCaretRangeFromPoint(e.x,e.y,C);_&&(w.setRng(_),_=null,b()),w.setRng(r),y(n.html)}))}}),f.on("cut",function(e){m(e)||!e.clipboardData||f.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",f.selection.getContent()),e.clipboardData.setData("text/plain",f.selection.getContent({format:"text"})),l.setEditorTimeout(f,function(){b(!0)}))}))}function C(){function e(e){var t=ne.create("body"),n=e.cloneContents();return t.appendChild(n),re.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(f.getBody()),t.compareRanges(n,r)}var i=e(n),o=ne.createRng();o.selectNode(f.getBody());var a=e(o);return i===a}f.on("keydown",function(e){var t=e.keyCode,r,i;if(!m(e)&&(t==te||t==ee)){if(r=f.selection.isCollapsed(),i=f.getBody(),r&&!ne.isEmpty(i))return;if(!r&&!n(f.selection.getRng()))return;e.preventDefault(),f.setContent(""),i.firstChild&&ne.isBlock(i.firstChild)?f.selection.setCursorLocation(i.firstChild,0):f.selection.setCursorLocation(i,0),f.nodeChanged()}})}function x(){f.shortcuts.add("meta+a",null,"SelectAll")}function w(){f.settings.content_editable||ne.bind(f.getDoc(),"mousedown mouseup",function(e){var t;if(e.target==f.getDoc().documentElement)if(t=re.getRng(),f.getBody().focus(),"mousedown"==e.type){if(u.isCaretContainer(t.startContainer))return;re.placeCaretAt(e.clientX,e.clientY)}else re.setRng(t)})}function E(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee){if(!f.getBody().getElementsByTagName("hr").length)return;if(re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return ne.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(ne.remove(n),e.preventDefault())}}})}function N(){window.Range.prototype.getClientRects||f.on("mousedown",function(e){if(!m(e)&&"HTML"===e.target.nodeName){var t=f.getBody();t.blur(),l.setEditorTimeout(f,function(){t.focus()})}})}function _(){f.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==ne.getContentEditableParent(t)&&(e.preventDefault(),re.select(t),f.nodeChanged()),"A"==t.nodeName&&ne.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),re.select(t))})}function S(){function e(){var e=ne.getAttribs(re.getStart().cloneNode(!1));return function(){var t=re.getStart();t!==f.getBody()&&(ne.setAttrib(t,"style",null),Q(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!re.isCollapsed()&&ne.getParent(re.getStart(),ne.isBlock)!=ne.getParent(re.getEnd(),ne.isBlock)}f.on("keypress",function(n){var r;if(!m(n)&&(8==n.keyCode||46==n.keyCode)&&t())return r=e(),f.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1}),ne.bind(f.getDoc(),"cut",function(n){var r;!m(n)&&t()&&(r=e(),l.setEditorTimeout(f,function(){r()}))})}function k(){document.body.setAttribute("role","application")}function T(){f.on("keydown",function(e){if(!m(e)&&e.keyCode===ee&&re.isCollapsed()&&0===re.getRng(!0).startOffset){var t=re.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function R(){h()>7||(p("RespectVisibilityInDesign",!0),f.contentStyles.push(".mceHideBrInPre pre br {display: none}"),ne.addClass(f.getBody(),"mceHideBrInPre"),oe.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ae.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function A(){ne.bind(f.getBody(),"mouseup",function(){var e,t=re.getNode();"IMG"==t.nodeName&&((e=ne.getStyle(t,"width"))&&(ne.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"width","")),(e=ne.getStyle(t,"height"))&&(ne.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),ne.setStyle(t,"height","")))})}function B(){f.on("keydown",function(t){var n,r,i,o,a;if(!m(t)&&t.keyCode==e.BACKSPACE&&(n=re.getRng(),r=n.startContainer,i=n.startOffset,o=ne.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(f.formatter.toggle("blockquote",null,a),n=ne.createRng(),n.setStart(r,0),n.setEnd(r,0),re.setRng(n))}})}function D(){function e(){K(),p("StyleWithCSS",!1),p("enableInlineTableEditing",!1),ie.object_resizing||p("enableObjectResizing",!1)}ie.readonly||f.on("BeforeExecCommand MouseDown",e)}function L(){function e(){Q(ne.select("a"),function(e){var t=e.parentNode,n=ne.getRoot();if(t.lastChild===e){for(;t&&!ne.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}ne.add(t,"br",{"data-mce-bogus":1})}})}f.on("SetContent ExecCommand",function(t){"setcontent"!=t.type&&"mceInsertLink"!==t.command||e()})}function M(){ie.forced_root_block&&f.on("init",function(){p("DefaultParagraphSeparator",ie.forced_root_block)})}function P(){f.on("keydown",function(e){var t;m(e)||e.keyCode!=ee||(t=f.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),f.undoManager.beforeChange(),ne.remove(t.item(0)),f.undoManager.add()))})}function O(){var e;h()>=10&&(e="",Q("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),f.contentStyles.push(e+"{padding-right: 1px !important}"))}function H(){h()<9&&(oe.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ae.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function I(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),ne.unbind(r,"mouseup",n),ne.unbind(r,"mousemove",t),a=o=0}var r=ne.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,ne.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(ne.bind(r,"mouseup",n),ne.bind(r,"mousemove",t),ne.getRoot().focus(),a.select())}})}function F(){f.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||re.normalize()},!0)}function z(){f.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function U(){f.inline||f.on("keydown",function(){document.activeElement==document.body&&f.getWin().focus()})}function W(){f.inline||(f.contentStyles.push("body {min-height: 150px}"),f.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void f.getBody().focus();t=f.selection.getRng(),f.getBody().focus(),f.selection.setRng(t),f.selection.normalize(),f.nodeChanged()}}))}function V(){a.mac&&f.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),f.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function $(){p("AutoUrlDetect",!1)}function q(){f.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),f.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function j(){f.on("init",function(){f.dom.bind(f.getBody(),"submit",function(e){e.preventDefault()})})}function Y(){oe.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function X(){f.on("dragstart",function(e){g(e)}),f.on("drop",function(e){if(!m(e)){var n=v(e);if(n&&n.id!=f.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,f.getDoc());re.setRng(r),y(n.html)}}})}function K(){}function G(){var e;return se?(e=f.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}function J(){function t(e){var t=new d(e.getBody()),n=e.selection.getRng(),r=c.fromRangeStart(n),i=c.fromRangeEnd(n),o=t.prev(r),a=t.next(i);return!e.selection.isCollapsed()&&(!o||o.isAtStart()&&r.isEqual(o))&&(!a||a.isAtEnd()&&r.isEqual(a))}f.on("keypress",function(n){!m(n)&&!re.isCollapsed()&&n.charCode>31&&!e.metaKeyPressed(n)&&t(f)&&(n.preventDefault(),f.setContent(String.fromCharCode(n.charCode)),f.selection.select(f.getBody(),!0),f.selection.collapse(!1),f.nodeChanged())}),f.on("keydown",function(e){var n=e.keyCode;m(e)||n!=te&&n!=ee||t(f)&&(e.preventDefault(),f.setContent(""),f.nodeChanged())})}var Q=s.each,Z=f.$,ee=e.BACKSPACE,te=e.DELETE,ne=f.dom,re=f.selection,ie=f.settings,oe=f.parser,ae=f.serializer,se=a.gecko,le=a.ie,ue=a.webkit,ce="data:text/mce-internal,",de=le?"Text":"URL";return B(),C(),a.windowsPhone||F(),ue&&(J(),b(),w(),_(),M(),j(),T(),Y(),a.iOS?(U(),W(),q()):x()),le&&a.ie<11&&(E(),k(),R(),A(),P(),O(),H(),I()),a.ie>=11&&(W(),T()),a.ie&&(x(),$(),X()),se&&(J(),E(),N(),S(),D(),L(),z(),V(),T()),{refreshContentEditable:K,isHidden:G}}}),r(Ue,[pe,w,m],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){function n(e){return!e.hidden&&!e.readonly}var i=r(e,t),s;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;s=function(r){for(var i=r.target,a=e.editorManager.editors,s=a.length;s--;){var l=a[s].getBody();(l===i||o.isChildOf(i,l))&&n(a[s])&&a[s].fire(t,r)}},a[t]=s,o.bind(i,t,s)}else s=function(r){n(e)&&e.fire(t,r)},o.bind(i,t,s),e.delegates[t]=s}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(We,[],function(){function e(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function t(e){var t,n;return t=e.getBody(),n=function(t){e.dom.getParents(t.target,"a").length>0&&t.preventDefault()},e.dom.bind(t,"click",n),{unbind:function(){e.dom.unbind(t,"click",n)}}}function n(n,r){n._clickBlocker&&(n._clickBlocker.unbind(),n._clickBlocker=null),r?(n._clickBlocker=t(n),n.selection.controlSelection.hideResizeRect(),n.readonly=!0,n.getBody().contentEditable=!1):(n.readonly=!1,n.getBody().contentEditable=!0,e(n,"StyleWithCSS",!1),e(n,"enableInlineTableEditing",!1),e(n,"enableObjectResizing",!1),n.focus(),n.nodeChanged())}function r(e,t){var r=e.readonly?"readonly":"design";t!=r&&(e.initialized?n(e,"readonly"==t):e.on("init",function(){n(e,"readonly"==t)}),e.fire("SwitchMode",{mode:t}))}return{setMode:r}}),r(Ve,[m,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e){var a,s,l={};n(r(e,"+"),function(e){e in o?l[e]=!0:/^[0-9]{2,}$/.test(e)?l.keyCode=parseInt(e,10):(l.charCode=e.charCodeAt(0),l.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),a=[l.keyCode];for(s in o)l[s]?a.push(s):l[s]=!1;return l.id=a.join(","),l.access&&(l.alt=!0,t.mac?l.ctrl=!0:l.shift=!0),l.meta&&(t.mac?l.meta=!0:(l.ctrl=!0,l.meta=!1)),l}function l(t,n,i,o){var l;return l=e.map(r(t,">"),s),l[l.length-1]=e.extend(l[l.length-1],{func:i,scope:o||a}),e.extend(l[0],{desc:a.translate(n),subpatterns:l.slice(1)})}function u(e){return e.altKey||e.ctrlKey||e.metaKey}function c(e){return"keydown"===e.type&&e.keyCode>=112&&e.keyCode<=123}function d(e,t){return!!t&&(t.ctrl==e.ctrlKey&&t.meta==e.metaKey&&(t.alt==e.altKey&&t.shift==e.shiftKey&&(!!(e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode)&&(e.preventDefault(),!0))))}function f(e){return e.func?e.func.call(e.scope):null}var p=this,h={},m=[];a.on("keyup keypress keydown",function(e){!u(e)&&!c(e)||e.isDefaultPrevented()||(n(h,function(t){if(d(e,t))return m=t.subpatterns.slice(0),"keydown"==e.type&&f(t),!0}),d(e,m[0])&&(1===m.length&&"keydown"==e.type&&f(m[0]),m.shift()))}),p.add=function(t,i,o,s){var u;return u=o,"string"==typeof o?o=function(){a.execCommand(u,!1,null)}:e.isArray(u)&&(o=function(){a.execCommand(u[0],u[1],u[2])}),n(r(e.trim(t.toLowerCase())),function(e){var t=l(e,i,o,s);h[t.id]=t}),!0},p.remove=function(e){var t=l(e);return!!h[t.id]&&(delete h[t.id],!0)}}}),r($e,[u,m,z],function(e,t,n){return function(r,i){function o(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.filename()+"."+t}function a(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function s(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(o(e))}}function l(e,t,n,r){var o,s;o=new XMLHttpRequest,o.open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){r(e.loaded/e.total*100)},o.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e;return 200!=o.status?void n("HTTP Error: "+o.status):(e=JSON.parse(o.responseText),e&&"string"==typeof e.location?void t(a(i.basePath,e.location)):void n("Invalid JSON: "+o.responseText))},s=new FormData,s.append("file",e.blob(),e.filename()),o.send(s)}function u(){return new e(function(e){e([])})}function c(e,t){return{url:t,blobInfo:e,status:!0}}function d(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,n){t.each(y[e],function(e){e(n)}),delete y[e]}function p(t,n,i){return r.markPending(t.blobUri()),new e(function(e){var o,a,l=function(){};try{var u=function(){o&&(o.close(),a=l)},p=function(n){u(),r.markUploaded(t.blobUri(),n),f(t.blobUri(),c(t,n)),e(c(t,n))},h=function(n){u(),r.removeFailed(t.blobUri()),f(t.blobUri(),d(t,n)),e(d(t,n))};a=function(e){e<0||e>100||(o||(o=i()),o.progressBar.value(e))},n(s(t),p,h,a)}catch(m){e(d(t,m.message))}})}function h(e){return e===l}function m(t){var n=t.blobUri();return new e(function(e){y[n]=y[n]||[],y[n].push(e)})}function g(n,o){return n=t.grep(n,function(e){return!r.isUploaded(e.blobUri())}),e.all(t.map(n,function(e){return r.isPending(e.blobUri())?m(e):p(e,i.handler,o)}))}function v(e,t){return!i.url&&h(i.handler)?u():g(e,t)}var y={};return i=t.extend({credentials:!1,handler:l},i),{upload:v}}}),r(qe,[u],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o<i.length;o++)i[o]=r.charCodeAt(o);e(new Blob([i],{type:t.type}))})}function i(e){return 0===e.indexOf("blob:")?t(e):0===e.indexOf("data:")?r(e):null}function o(t){return new e(function(e){var n=new FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}return{uriToBlob:i,blobToDataUri:o,parseDataUri:n}}),r(je,[u,h,z,qe,d],function(e,t,n,r,i){var o=0,a=function(e){return(e||"blobid")+o++};return function(o,s){function l(l,c){function d(e,t){var n,i;return 0===e.src.indexOf("blob:")?(i=s.getByUri(e.src),void(i?t({image:e,blobInfo:i}):r.uriToBlob(e.src).then(function(o){r.blobToDataUri(o).then(function(l){n=r.parseDataUri(l).data,i=s.create(a(),o,n),s.add(i),t({image:e,blobInfo:i})})}))):(n=r.parseDataUri(e.src).data,i=s.findFirst(function(e){return e.base64()===n}),void(i?t({image:e,blobInfo:i}):r.uriToBlob(e.src).then(function(r){i=s.create(a(),r,n),s.add(i),t({image:e,blobInfo:i})})))}var f,p;return c||(c=n.constant(!0)),f=t.filter(l.getElementsByTagName("img"),function(e){var t=e.src;return!!i.fileApi&&(!e.hasAttribute("data-mce-bogus")&&(!e.hasAttribute("data-mce-placeholder")&&(!(!t||t==i.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t):0===t.indexOf("data:")&&c(e)))))}),p=t.map(f,function(t){var n;return u[t.src]?new e(function(e){u[t.src].then(function(n){e({image:t,blobInfo:n.blobInfo})})}):(n=new e(function(e){d(t,e)}).then(function(e){return delete u[e.image.src],e})["catch"](function(e){return delete u[t.src],e}),u[t.src]=n, +n)}),e.all(p)}var u={};return{findAll:l}}}),r(Ye,[h,z],function(e,t){return function(){function n(e,t,n,r){return{id:c(e),filename:c(r||e),blob:c(t),base64:c(n),blobUri:c(URL.createObjectURL(t))}}function r(e){i(e.id())||u.push(e)}function i(e){return o(function(t){return t.id()===e})}function o(t){return e.filter(u,t)[0]}function a(e){return o(function(t){return t.blobUri()==e})}function s(t){u=e.filter(u,function(e){return e.blobUri()!==t||(URL.revokeObjectURL(e.blobUri()),!1)})}function l(){e.each(u,function(e){URL.revokeObjectURL(e.blobUri())}),u=[]}var u=[],c=t.constant;return{create:n,add:r,get:i,getByUri:a,findFirst:o,removeByUri:s,destroy:l}}}),r(Xe,[],function(){return function(){function e(e,t){return{status:e,resultUri:t}}function t(e){return e in d}function n(e){var t=d[e];return t?t.resultUri:null}function r(e){return!!t(e)&&d[e].status===u}function i(e){return!!t(e)&&d[e].status===c}function o(t){d[t]=e(u,null)}function a(t,n){d[t]=e(c,n)}function s(e){delete d[e]}function l(){d={}}var u=1,c=2,d={};return{hasBlobUri:t,getResultUri:n,isPending:r,isUploaded:i,markPending:o,markUploaded:a,removeFailed:s,destroy:l}}}),r(Ke,[N],function(e){var t=e.PluginManager,n=function(e,n){for(var r in t.urls){var i=t.urls[r]+"/plugin"+n+".js";if(i===e)return r}return null},r=function(e,t){var r=n(t,e.suffix);return r?"Failed to load plugin: "+r+" from url "+t:"Failed to load plugin url: "+t},i=function(e,t){e.notificationManager.open({type:"error",text:t})},o=function(e,t){e._skinLoaded?i(e,t):e.on("SkinLoaded",function(){i(e,t)})},a=function(e,t){o(e,"Failed to upload image: "+t)},s=function(e,t){o(e,r(e,t))};return{pluginLoadError:s,uploadError:a}}),r(Ge,[h,$e,je,Ye,Xe,Ke],function(e,t,n,r,i,o){return function(a){function s(e){return function(t){return a.selection?e(t):[]}}function l(){return"?"+(new Date).getTime()}function u(e,t,n){var r=0;do r=e.indexOf(t,r),r!==-1&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1);while(r!==-1);return e}function c(e,t,n){return e=u(e,'src="'+t+'"','src="'+n+'"'),e=u(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function d(t,n){e.each(a.undoManager.data,function(r){"fragmented"===r.type?r.fragments=e.map(r.fragments,function(e){return c(e,t,n)}):r.content=c(r.content,t,n)})}function f(){return a.notificationManager.open({text:a.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}function p(e,t){C.removeByUri(e.src),d(e.src,t),a.$(e).attr({src:E.images_reuse_filename?t+l():t,"data-mce-src":a.convertURL(t,"src")})}function h(n){return x||(x=new t(N,{url:E.images_upload_url,basePath:E.images_upload_base_path,credentials:E.images_upload_credentials,handler:E.images_upload_handler})),v().then(s(function(t){var r;return r=e.map(t,function(e){return e.blobInfo}),x.upload(r,f).then(s(function(r){return r=e.map(r,function(e,n){var r=t[n].image;return e.status&&a.settings.images_replace_blob_uris!==!1?p(r,e.url):e.error&&o.uploadError(a,e.error),{element:r,status:e.status}}),n&&n(r),r}))}))}function m(e){if(E.automatic_uploads!==!1)return h(e)}function g(e){return!E.images_dataimg_filter||E.images_dataimg_filter(e)}function v(){return w||(w=new n(N,C)),w.findAll(a.getBody(),g).then(s(function(t){return e.each(t,function(e){d(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),t}))}function y(){C.destroy(),N.destroy(),w=x=null}function b(t){return t.replace(/src="(blob:[^"]+)"/g,function(t,n){var r=N.getResultUri(n);if(r)return'src="'+r+'"';var i=C.getByUri(n);return i||(i=e.reduce(a.editorManager.editors,function(e,t){return e||t.editorUpload.blobCache.getByUri(n)},null)),i?'src="data:'+i.blob().type+";base64,"+i.base64()+'"':t})}var C=new r,x,w,E=a.settings,N=new i;return a.on("setContent",function(){a.settings.automatic_uploads!==!1?m():v()}),a.on("RawSaveContent",function(e){e.content=b(e.content)}),a.on("getContent",function(e){e.source_view||"raw"==e.format||(e.content=b(e.content))}),a.on("PostRender",function(){a.parser.addNodeFilter("img",function(t){e.each(t,function(e){var t=e.attr("src");if(!C.getByUri(t)){var n=N.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:C,uploadImages:h,uploadImagesAuto:m,scanForImages:v,destroy:y}}}),r(Je,[k,$,_,T,g,W,c],function(e,t,n,r,i,o,a){var s=n.isContentEditableFalse;return function(t,n){function r(e,n){var r=o.collapse(e.getBoundingClientRect(),n),i,a,s,l,u;return"BODY"==t.tagName?(i=t.ownerDocument.documentElement,a=t.scrollLeft||i.scrollLeft,s=t.scrollTop||i.scrollTop):(u=t.getBoundingClientRect(),a=t.scrollLeft-u.left,s=t.scrollTop-u.top),r.left+=a,r.right+=a,r.top+=s,r.bottom+=s,r.width=1,l=e.offsetWidth-e.clientWidth,l>0&&(n&&(l*=-1),r.left+=l,r.right+=l),r}function l(){var n,r,o,a,s;for(n=i("*[contentEditable=false]",t),a=0;a<n.length;a++)r=n[a],o=r.previousSibling,e.endsWithCaretContainer(o)&&(s=o.data,1==s.length?o.parentNode.removeChild(o):o.deleteData(s.length-1,1)),o=r.nextSibling,e.startsWithCaretContainer(o)&&(s=o.data,1==s.length?o.parentNode.removeChild(o):o.deleteData(0,1));return null}function u(o,a){var l,u;return c(),n(a)?(g=e.insertBlock("p",a,o),l=r(a,o),i(g).css("top",l.top),m=i('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(l).appendTo(t),o&&m.addClass("mce-visual-caret-before"),d(),u=a.ownerDocument.createRange(),u.setStart(g,0),u.setEnd(g,0),u):(g=e.insertInline(a,o),u=a.ownerDocument.createRange(),s(g.nextSibling)?(u.setStart(g,0),u.setEnd(g,0)):(u.setStart(g,1),u.setEnd(g,1)),u)}function c(){l(),g&&(e.remove(g),g=null),m&&(m.remove(),m=null),clearInterval(h)}function d(){h=a.setInterval(function(){i("div.mce-visual-caret",t).toggleClass("mce-visual-caret-hidden")},500)}function f(){a.clearInterval(h)}function p(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"}var h,m,g;return{show:u,hide:c,getCss:p,destroy:f}}}),r(Qe,[h,_,W],function(e,t,n){function r(i){function o(t){return e.map(t,function(e){return e=n.clone(e),e.node=i,e})}if(e.isArray(i))return e.reduce(i,function(e,t){return e.concat(r(t))},[]);if(t.isElement(i))return o(i.getClientRects());if(t.isText(i)){var a=i.ownerDocument.createRange();return a.setStart(i,0),a.setEnd(i,i.data.length),o(a.getClientRects())}}return{getClientRects:r}}),r(Ze,[z,h,Qe,U,ie,oe,$,W],function(e,t,n,r,i,o,a,s){function l(e,t,n,o){for(;o=i.findNode(o,e,r.isEditableCaretCandidate,t);)if(n(o))return}function u(e,r,i,o,a,s){function u(o){var s,l,u;for(u=n.getClientRects(o),e==-1&&(u=u.reverse()),s=0;s<u.length;s++)if(l=u[s],!i(l,p)){if(f.length>0&&r(l,t.last(f))&&c++,l.line=c,a(l))return!0;f.push(l)}}var c=0,d,f=[],p;return(p=t.last(s.getClientRects()))?(d=s.getNode(),u(d),l(e,o,u,d),f):f}function c(e,t){return t.line>e}function d(e,t){return t.line===e}function f(e,n,r,i){function l(n){return 1==e?t.last(n.getClientRects()):t.last(n.getClientRects())}var u=new o(n),c,d,f,p,h=[],m=0,g,v;1==e?(c=u.next,d=s.isBelow,f=s.isAbove,p=a.after(i)):(c=u.prev,d=s.isAbove,f=s.isBelow,p=a.before(i)),v=l(p);do if(p.isVisible()&&(g=l(p),!f(g,v))){if(h.length>0&&d(g,t.last(h))&&m++,g=s.clone(g),g.position=p,g.line=m,r(g))return h;h.push(g)}while(p=c(p));return h}var p=e.curry,h=p(u,-1,s.isAbove,s.isBelow),m=p(u,1,s.isBelow,s.isAbove);return{upUntil:h,downUntil:m,positionsUntil:f,isAboveLine:p(c),isLine:p(d)}}),r(et,[z,h,_,Qe,W,ie,U],function(e,t,n,r,i,o,a){function s(e,t){return Math.abs(e.left-t)}function l(e,t){return Math.abs(e.right-t)}function u(e,n){function r(e,t){return e>=t.left&&e<=t.right}return t.reduce(e,function(e,t){var i,o;return i=Math.min(s(e,n),l(e,n)),o=Math.min(s(t,n),l(t,n)),r(n,t)?t:r(n,e)?e:o==i&&m(t.node)?t:o<i?t:e})}function c(e,t,n,r){for(;r=g(r,e,a.isEditableCaretCandidate,t);)if(n(r))return}function d(e,n){function o(e,i){var o;return o=t.filter(r.getClientRects(i),function(t){return!e(t,n)}),a=a.concat(o),0===o.length}var a=[];return a.push(n),c(-1,e,v(o,i.isAbove),n.node),c(1,e,v(o,i.isBelow),n.node),a}function f(e){return t.filter(t.toArray(e.getElementsByTagName("*")),m)}function p(e,t){return{node:e.node,before:s(e,t)<l(e,t)}}function h(e,n,i){var o,a;return o=r.getClientRects(f(e)),o=t.filter(o,function(e){return i>=e.top&&i<=e.bottom}),a=u(o,n),a&&(a=u(d(e,a),n),a&&m(a.node))?p(a,n):null}var m=n.isContentEditableFalse,g=o.findNode,v=e.curry;return{findClosestClientRect:u,findLineNodeRects:d,closestCaret:h}}),r(tt,[],function(){var e=function(e){var t,n,r,i;return i=e.getBoundingClientRect(),t=e.ownerDocument,n=t.documentElement,r=t.defaultView,{top:i.top+r.pageYOffset-n.clientTop,left:i.left+r.pageXOffset-n.clientLeft}},t=function(t){return t.inline?e(t.getBody()):{left:0,top:0}},n=function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}},r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},i={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:i},i=function(t,n){if(n.target.ownerDocument!==t.getDoc()){var i=e(t.getContentAreaContainer()),o=r(t);return{left:n.pageX-i.left+o.left,top:n.pageY-i.top+o.top}}return{left:n.pageX,top:n.pageY}},o=function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}},a=function(e,r){return o(t(e),n(e),i(e,r))};return{calc:a}}),r(nt,[_,h,z,c,w,tt],function(e,t,n,r,i,o){var a=e.isContentEditableFalse,s=e.isContentEditableTrue,l=function(e,t){return a(t)&&t!==e},u=function(e,t,n){return t!==n&&!e.dom.isChildOf(t,n)&&!a(t)},c=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t},d=function(e,t,n,r){var i=t.cloneNode(!0);e.dom.setStyles(i,{width:n,height:r}),e.dom.setAttrib(i,"data-mce-selected",null);var o=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(o,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(i,{margin:0,boxSizing:"border-box"}),o.appendChild(i),o},f=function(e,t){e.parentNode!==t&&t.appendChild(e)},p=function(e,t,n,r,i,o){var a=0,s=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>i&&(a=t.pageX+n-i),t.pageY+r>o&&(s=t.pageY+r-o),e.style.width=n-a+"px",e.style.height=r-s+"px"},h=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},m=function(e){return 0===e.button},g=function(e){return e.element},v=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}},y=function(e,r){return function(i){if(m(i)){var o=t.find(r.dom.getParents(i.target),n.or(a,s));if(l(r.getBody(),o)){var u=r.dom.getPos(o),c=r.getBody(),f=r.getDoc().documentElement;e.element=o,e.screenX=i.screenX,e.screenY=i.screenY,e.maxX=(r.inline?c.scrollWidth:f.offsetWidth)-2,e.maxY=(r.inline?c.scrollHeight:f.offsetHeight)-2,e.relX=i.pageX-u.x,e.relY=i.pageY-u.y,e.width=o.offsetWidth,e.height=o.offsetHeight,e.ghost=d(r,o,e.width,e.height)}}}},b=function(e,t){var n=r.throttle(function(e,n){t._selectionOverrides.hideFakeCaret(),t.selection.placeCaretAt(e,n)},0);return function(r){var i=Math.max(Math.abs(r.screenX-e.screenX),Math.abs(r.screenY-e.screenY));if(g(e)&&!e.dragging&&i>10){var a=t.fire("dragstart",{target:e.element});if(a.isDefaultPrevented())return;e.dragging=!0,t.focus()}if(e.dragging){var s=v(e,o.calc(t,r));f(e.ghost,t.getBody()),p(e.ghost,s,e.width,e.height,e.maxX,e.maxY),n(r.clientX,r.clientY)}}},C=function(e){var t=e.getSel().getRangeAt(0),n=t.startContainer;return 3===n.nodeType?n.parentNode:n},x=function(e,t){return function(n){if(e.dragging&&u(t,C(t.selection),e.element)){var r=c(e.element),i=t.fire("drop",{targetClone:r,clientX:n.clientX,clientY:n.clientY});i.isDefaultPrevented()||(r=i.targetClone,t.undoManager.transact(function(){h(e.element),t.insertContent(t.dom.getOuterHTML(r)),t._selectionOverrides.hideFakeCaret()}))}E(e)}},w=function(e,t){return function(){E(e),e.dragging&&t.fire("dragend")}},E=function(e){e.dragging=!1,e.element=null,h(e.ghost)},N=function(e){var t={},n,r,o,a,s,l;n=i.DOM,l=document,r=y(t,e),o=b(t,e),a=x(t,e),s=w(t,e),e.on("mousedown",r),e.on("mousemove",o),e.on("mouseup",a),n.bind(l,"mousemove",o),n.bind(l,"mouseup",s),e.on("remove",function(){n.unbind(l,"mousemove",o),n.unbind(l,"mouseup",s)})},_=function(e){e.on("drop",function(t){var n="undefined"!=typeof t.clientX?e.getDoc().elementFromPoint(t.clientX,t.clientY):null;(a(n)||a(e.dom.getContentEditableParent(n)))&&t.preventDefault()})},S=function(e){N(e),_(e)};return{init:S}}),r(rt,[d,oe,$,k,ie,Je,Ze,et,_,T,W,I,z,h,c,nt],function(e,t,n,r,i,o,a,s,l,u,c,d,f,p,h,m){function g(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function v(u){function v(e){return u.dom.hasClass(e,"mce-offscreen-selection")}function _(){var e=u.dom.get(le);return e?e.getElementsByTagName("*")[0]:e}function S(e){return u.dom.isBlock(e)}function k(e){e&&u.selection.setRng(e)}function T(){return u.selection.getRng()}function R(e,t){u.selection.scrollIntoView(e,t)}function A(e,t,n){var r;return r=u.fire("ShowCaret",{target:t,direction:e,before:n}),r.isDefaultPrevented()?null:(R(t,e===-1),se.show(n,t))}function B(e){var t;return t=u.fire("BeforeObjectSelected",{target:e}),t.isDefaultPrevented()?null:D(e)}function D(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}function L(e,t){var n=i.isInSameBlock(e,t);return!(n||!l.isBr(e.getNode()))||n}function M(e,t){return t=i.normalizeRange(e,re,t),e==-1?n.fromRangeStart(t):n.fromRangeEnd(t)}function P(e){return r.isCaretContainerBlock(e.startContainer)}function O(e,t,n,r){var i,o,a,s;return!r.collapsed&&(i=N(r),C(i))?A(e,i,e==-1):(s=P(r),o=M(e,r),n(o)?B(o.getNode(e==-1)):(o=t(o))?n(o)?A(e,o.getNode(e==-1),1==e):(a=t(o),n(a)&&L(o,a)?A(e,a.getNode(e==-1),1==e):s?$(o.toRange()):null):s?r:null)}function H(e,t,n){var r,i,o,l,u,c,d,f,h;if(h=N(n),r=M(e,n),i=t(re,a.isAboveLine(1),r),o=p.filter(i,a.isLine(1)),u=p.last(r.getClientRects()),E(r)&&(h=r.getNode()),w(r)&&(h=r.getNode(!0)),!u)return null;if(c=u.left,l=s.findClosestClientRect(o,c),l&&C(l.node))return d=Math.abs(c-l.left),f=Math.abs(c-l.right),A(e,l.node,d<f);if(h){var m=a.positionsUntil(e,re,a.isAboveLine(1),h);if(l=s.findClosestClientRect(p.filter(m,a.isLine(1)),c))return $(l.position.toRange());if(l=p.last(p.filter(m,a.isLine(0))))return $(l.position.toRange())}}function I(t,r){function i(){var t=u.dom.create(u.settings.forced_root_block);return(!e.ie||e.ie>=11)&&(t.innerHTML='<br data-mce-bogus="1">'),t}var o,a,s;if(r.collapsed&&u.settings.forced_root_block){if(o=u.dom.getParent(r.startContainer,"PRE"),!o)return;a=1==t?oe(n.fromRangeStart(r)):ae(n.fromRangeStart(r)),a||(s=i(),1==t?u.$(o).after(s):u.$(o).before(s),u.selection.select(s,!0),u.selection.collapse())}}function F(e,t,n,r){var i;return(i=O(e,t,n,r))?i:(i=I(e,r),i?i:null)}function z(e,t,n){var r;return(r=H(e,t,n))?r:(r=I(e,n),r?r:null)}function U(){return ce("*[data-mce-caret]")[0]}function W(e){e.hasAttribute("data-mce-caret")&&(r.showCaretContainerBlock(e),k(T()),R(e[0]))}function V(e){var t,r;return e=i.normalizeRange(1,re,e),t=n.fromRangeStart(e),C(t.getNode())?A(1,t.getNode(),!t.isAtEnd()):C(t.getNode(!0))?A(1,t.getNode(!0),!1):(r=u.dom.getParent(t.getNode(),f.or(C,b)),C(r)?A(1,r,!1):null)}function $(e){var t;return e&&e.collapsed?(t=V(e),t?t:e):e}function q(e){var t,i,o,a;return C(e)?(C(e.previousSibling)&&(o=e.previousSibling),i=ae(n.before(e)),i||(t=oe(n.after(e))),t&&x(t.getNode())&&(a=t.getNode()),r.remove(e.previousSibling),r.remove(e.nextSibling),u.dom.remove(e),u.dom.isEmpty(u.getBody())?(u.setContent(""),void u.focus()):o?n.after(o).toRange():a?n.before(a).toRange():i?i.toRange():t?t.toRange():null):null}function j(e){var t=u.schema.getTextBlockElements();return e.nodeName in t}function Y(e){return u.dom.isEmpty(e)}function X(e,t,r){var i=u.dom,o,a,s,l;if(o=i.getParent(t.getNode(),i.isBlock),a=i.getParent(r.getNode(),i.isBlock),e===-1){if(l=r.getNode(!0),w(r)&&S(l))return j(o)?(Y(o)&&i.remove(o),n.after(l).toRange()):q(r.getNode(!0))}else if(l=t.getNode(),E(t)&&S(l))return j(a)?(Y(a)&&i.remove(a),n.before(l).toRange()):q(t.getNode());if(o===a||!j(o)||!j(a))return null;for(;s=o.firstChild;)a.appendChild(s);return u.dom.remove(o),r.toRange()}function K(e,t,n,i){var o,a,s,l;return!i.collapsed&&(o=N(i),C(o))?$(q(o)):(a=M(e,i),n(a)&&r.isCaretContainerBlock(i.startContainer)?(l=e==-1?ie.prev(a):ie.next(a),l?$(l.toRange()):i):t(a)?$(q(a.getNode(e==-1))):(s=e==-1?ie.prev(a):ie.next(a),t(s)?e===-1?X(e,a,s):X(e,s,a):void 0))}function G(){function i(e,t){var n=t(T());n&&!e.isDefaultPrevented()&&(e.preventDefault(),k(n))}function o(e){for(var t=u.getBody();e&&e!=t;){if(b(e)||C(e))return e;e=e.parentNode}return null}function l(e,t,n){return!n.collapsed&&p.reduce(n.getClientRects(),function(n,r){return n||c.containsXY(r,e,t)},!1)}function f(e){var t=!1;e.on("touchstart",function(){t=!1}),e.on("touchmove",function(){t=!0}),e.on("touchend",function(e){var n=o(e.target);C(n)&&(t||(e.preventDefault(),Z(B(n))))})}function g(){var e,t=o(u.selection.getNode());b(t)&&S(t)&&u.dom.isEmpty(t)&&(e=u.dom.create("br",{"data-mce-bogus":"1"}),u.$(t).empty().append(e),u.selection.setRng(n.before(e).toRange()))}function x(e){var t=U();if(t)return"compositionstart"==e.type?(e.preventDefault(),e.stopPropagation(),void W(t)):void(r.hasContent(t)&&W(t))}function N(e){var t;switch(e.keyCode){case d.DELETE:t=g();break;case d.BACKSPACE:t=g()}t&&e.preventDefault()}var R=y(F,1,oe,E),D=y(F,-1,ae,w),L=y(K,1,E,w),M=y(K,-1,w,E),P=y(z,-1,a.upUntil),O=y(z,1,a.downUntil);u.on("mouseup",function(){var e=T();e.collapsed&&k(V(e))}),u.on("click",function(e){var t;t=o(e.target),t&&(C(t)&&(e.preventDefault(),u.focus()),b(t)&&u.dom.isChildOf(t,u.selection.getNode())&&ee())}),u.on("blur NewBlock",function(){ee(),ne()});var H=function(e){var r=new t(e);if(!e.firstChild)return!1;var i=n.before(e.firstChild),o=r.next(i);return o&&!E(o)&&!w(o)},I=function(e,t){var n=u.dom.getParent(e,u.dom.isBlock),r=u.dom.getParent(t,u.dom.isBlock);return n===r},j=function(e){return!(e.keyCode>=112&&e.keyCode<=123)},Y=function(e,t){var n=u.dom.getParent(e,u.dom.isBlock),r=u.dom.getParent(t,u.dom.isBlock);return n&&!I(n,r)&&H(n)};f(u),u.on("mousedown",function(e){var t;if(t=o(e.target))C(t)?(e.preventDefault(),Z(B(t))):l(e.clientX,e.clientY,u.selection.getRng())||u.selection.placeCaretAt(e.clientX,e.clientY);else{ee(),ne();var n=s.closestCaret(re,e.clientX,e.clientY);n&&(Y(e.target,n.node)||(e.preventDefault(),u.getBody().focus(),k(A(1,n.node,n.before))))}}),u.on("keydown",function(e){if(!d.modifierPressed(e))switch(e.keyCode){case d.RIGHT:i(e,R);break;case d.DOWN:i(e,O);break;case d.LEFT:i(e,D);break;case d.UP:i(e,P);break;case d.DELETE:i(e,L);break;case d.BACKSPACE:i(e,M);break;default:C(u.selection.getNode())&&j(e)&&e.preventDefault()}}),u.on("keyup compositionstart",function(e){x(e),N(e)},!0),u.on("cut",function(){var e=u.selection.getNode();C(e)&&h.setEditorTimeout(u,function(){k($(q(e)))})}),u.on("getSelectionRange",function(e){var t=e.range;if(ue){if(!ue.parentNode)return void(ue=null);t=t.cloneRange(),t.selectNode(ue),e.range=t}}),u.on("setSelectionRange",function(e){var t;t=Z(e.range),t&&(e.range=t)}),u.on("AfterSetSelectionRange",function(e){var t=e.range;Q(t)||ne(),v(t.startContainer.parentNode)||ee()}),u.on("focus",function(){h.setEditorTimeout(u,function(){u.selection.setRng($(u.selection.getRng()))},0)}),u.on("copy",function(t){var n=t.clipboardData;if(!t.isDefaultPrevented()&&t.clipboardData&&!e.ie){var r=_();r&&(t.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),m.init(u)}function J(){var e=u.contentStyles,t=".mce-content-body";e.push(se.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")}function Q(e){return r.isCaretContainer(e.startContainer)||r.isCaretContainer(e.endContainer)}function Z(t){var n,r=u.$,i=u.dom,o,a,s,l,c,d,f,p,h;if(!t)return null;if(t.collapsed){if(!Q(t)){if(f=M(1,t),C(f.getNode()))return A(1,f.getNode(),!f.isAtEnd());if(C(f.getNode(!0)))return A(1,f.getNode(!0),!1)}return null}return s=t.startContainer,l=t.startOffset,c=t.endOffset,3==s.nodeType&&0==l&&C(s.parentNode)&&(s=s.parentNode,l=i.nodeIndex(s),s=s.parentNode),1!=s.nodeType?null:(c==l+1&&(n=s.childNodes[l]),C(n)?(p=h=n.cloneNode(!0),d=u.fire("ObjectSelected",{target:n,targetClone:p}),d.isDefaultPrevented()?null:(p=d.targetClone,o=r("#"+le),0===o.length&&(o=r('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",le),o.appendTo(u.getBody())),t=u.dom.createRng(),p===h&&e.ie?(o.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(p),t.setStartAfter(o[0].firstChild.firstChild),t.setEndAfter(p)):(o.empty().append("\xa0").append(p).append("\xa0"),t.setStart(o[0].firstChild,1),t.setEnd(o[0].lastChild,0)),o.css({top:i.getPos(n,u.getBody()).y}),o[0].focus(),a=u.selection.getSel(),a.removeAllRanges(),a.addRange(t),u.$("*[data-mce-selected]").removeAttr("data-mce-selected"),n.setAttribute("data-mce-selected",1),ue=n,ne(),t)):null)}function ee(){ue&&(ue.removeAttribute("data-mce-selected"),u.$("#"+le).remove(),ue=null)}function te(){se.destroy(),ue=null}function ne(){se.hide()}var re=u.getBody(),ie=new t(re),oe=y(g,ie.next),ae=y(g,ie.prev),se=new o(u.getBody(),S),le="sel-"+u.dom.uniqueId(),ue,ce=u.$;return e.ceFalse&&(G(),J()),{showBlockCaretContainer:W,hideFakeCaret:ne,destroy:te}}var y=f.curry,b=l.isContentEditableTrue,C=l.isContentEditableFalse,x=l.isElement,w=i.isAfterContentEditableFalse,E=i.isBeforeContentEditableFalse,N=u.getSelectedNode;return v}),r(it,[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)},t=(new Date).getTime();return"s"+t.toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),r(ot,[],function(){var e=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r};return{add:e}}),r(at,[w,g,N,R,A,O,P,Y,J,te,ne,re,le,ue,E,f,Le,Ie,B,L,ze,d,m,c,Ue,We,Ve,Ge,rt,it,ot,Ke],function(e,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C,x,w,E,N,_,S,k,T,R,A,B,D){function L(e,t,i){var o=this,a,s,l;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,l=i.defaultSettings,t=H({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},l,t),l&&l.external_plugins&&t.external_plugins&&(t.external_plugins=H({},l.external_plugins,t.external_plugins)),o.settings=t,r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.setDirty(!1),o.plugins={},o.documentBaseURI=new h(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new k(o),o.loadedCSS={},o.editorCommands=new p(o),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,o.settings.content_editable=o.inline,t.cache_suffix&&(w.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(w.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var M=e.DOM,P=r.ThemeManager,O=r.PluginManager,H=E.extend,I=E.each,F=E.explode,z=E.inArray,U=E.trim,W=E.resolve,V=g.Event,$=w.gecko,q=w.ie;return L.prototype={render:function(){function e(){M.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!P.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",P.load(r.theme,t)}E.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),I(r.external_plugins,function(e,t){O.load(t,e),r.plugins+=" "+t}),I(r.plugins.split(/[ ,]/),function(e){if(e=U(e),e&&!O.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=O.dependencies(e);I(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=O.createUrl(t,e),O.load(e.resource,e)})}else O.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()},n,function(e){D.pluginLoadError(n,e[0]),n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!V.domLoaded)return void M.bind(window,"ready",e);if(n.getElement()&&w.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||M.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(M.insertAfter(M.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},M.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.setDirty(!1),a._mceOldSubmit(a)})),n.windowManager=new v(n),n.notificationManager=new y(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=M.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),n.editorManager.add(n),t()}},init:function(){function e(n){var r=O.get(n),i,o;if(i=O.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=U(n),r&&z(m,n)===-1){if(I(O.dependencies(n),function(t){e(t)}),t.plugins[n])return;o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n))}}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,u,c,d,f,p,h,m=[];if(t.rtl=n.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(n.language),n.aria_label=n.aria_label||M.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),u=P.get(n.theme),t.theme=new u(t,P.urls[n.theme]),t.theme.init&&t.theme.init(t,P.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),I(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,p=/^[0-9\.]+(|px)$/i,p.test(""+i)&&(i=Math.max(parseInt(i,10),100)),p.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),o<a&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&I(F(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();if(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!w.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',!/#$/.test(document.location.href))for(h=0;h<t.contentCSS.length;h++){var g=t.contentCSS[h];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+E._addCacheSuffix(g)+'" />',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",d.indexOf("=")!=-1&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",f.indexOf("=")!=-1&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+n.content_security_policy+'" />'),t.iframeHTML+='</head><body id="'+d+'" class="mce-content-body '+f+'" data-id="'+t.id+'"><br></body></html>';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&w.ie&&w.ie<12&&(c=v);var y=M.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},M.setAttrib(y,"src",c||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=M.add(l.iframeContainer,y),q)try{t.getDoc()}catch(b){s.src=c=v}l.editorContainer&&(M.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=M.isHidden(l.editorContainer)),t.getElement().style.display="none",M.setAttrib(t.id,"aria-hidden",!0),c||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),p=n.getDoc(),h,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(p.open(),p.write(n.iframeHTML),p.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();M.removeClass(e,"mce-content-body"),M.removeClass(e,"mce-edit-focus"),M.setAttrib(e,"contentEditable",null)}),M.addClass(s,"mce-content-body"),n.contentDocument=p=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),h=n.getBody(),h.disabled=!0,n.readonly=r.readonly,n.readonly||(n.inline&&"static"==M.getStyle(h,"position",!0)&&(h.style.position="relative"),h.contentEditable=n.getParam("content_editable_state",!0)),h.disabled=!1,n.editorUpload=new T(n),n.schema=new b(r),n.dom=new e(p,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new C(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type", +0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&0===r.getAll("br").length&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new u(n),n.undoManager=new c(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n._selectionOverrides=new R(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(p.body.spellcheck=!1,M.setAttrib(h,"spellcheck","false")),n.quirks=new x(n),n.fire("PostRender"),r.directionality&&(h.dir=r.directionality),r.nowrap&&(h.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){I(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>( | |\s|\u00a0|<br \/>|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.on("compositionstart compositionend",function(e){n.composing="compositionstart"===e.type}),n.contentStyles.length>0&&(m="",I(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),I(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&N.setEditorTimeout(n,function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=p=h=null},focus:function(e){function t(e){return n.dom.getParent(e,function(e){return"true"===n.dom.getContentEditable(e)})}var n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l=n.getBody(),u;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n.quirks.refreshContentEditable(),u=t(r.getNode()),n.$.contains(l,u))return u.focus(),r.normalize(),void n.editorManager.setActive(n);if(i||(w.opera||n.getBody().focus(),n.getWin().focus()),$||i){if(l.setActive)try{l.setActive()}catch(c){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.setActive(n)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?W(r):0,n=W(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?(e=n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}),this.editorManager.translate(e)):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?I(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[U(e[0])]=U(e[1]):i[U(e[0])]=U(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return B.add(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({id:A.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(M.show(e.getContainer()),M.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(q&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(M.hide(e.getContainer()),M.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;if(r)return e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=M.getParent(t.id,"form"))&&I(i.elements,function(e){if(e.name==t.id)return e.value=r,!1})),e.element=n=null,e.set_dirty!==!1&&t.setDirty(!1),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=q&&q<11?"":'<br data-mce-bogus="1">',"TABLE"==r.nodeName?e="<tr><td>"+o+"</td></tr>":/^(UL|OL)$/.test(r.nodeName)&&(e="<li>"+o+"</li>"),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):q||e||(e='<br data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=U(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?E.trim(t.serializer.getTrimmedContent()):"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=U(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=H({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!=t&&this.fire("dirty")},setMode:function(e){S.setMode(this,e)},getContainer:function(){var e=this;return e.container||(e.container=M.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=M.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),I(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&M.remove(e.getElement().nextSibling),e.inline||(q&&q<10&&e.getDoc().execCommand("SelectAll",!1,null),M.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),M.remove(e.getContainer()),e._selectionOverrides.destroy(),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),M.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},H(L.prototype,_),L}),r(st,[m],function(e){var t={},n="en";return{setCode:function(e){e&&(n=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return n},rtl:!1,add:function(e,n){var r=t[e];r||(t[e]=r={});for(var i in n)r[i]=n[i];this.setCode(e)},translate:function(r){function i(t){return e.is(t,"function")?Object.prototype.toString.call(t):o(t)?"":""+t}function o(t){return""===t||null===t||e.is(t,"undefined")}function a(t){return t=i(t),e.hasOwn(s,t)?i(s[t]):t}var s=t[n]||{};if(o(r))return"";if(e.is(r,"object")&&e.hasOwn(r,"raw"))return i(r.raw);if(e.is(r,"array")){var l=r.slice(1);r=a(r[0]).replace(/\{([0-9]+)\}/g,function(t,n){return e.hasOwn(l,n)?i(l[n]):t})}return a(r).replace(/{context:\w+}$/,"")},data:t}}),r(lt,[w,c,d],function(e,t,n){function r(e){function r(){try{return document.activeElement}catch(e){return document.body}}function u(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function c(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function d(d){var f=d.editor;f.on("init",function(){(f.inline||n.ie)&&("onbeforedeactivate"in document&&n.ie<9?f.dom.bind(f.getBody(),"beforedeactivate",function(e){if(e.target==f.getBody())try{f.lastRng=f.selection.getRng()}catch(t){}}):f.on("nodechange mouseup keyup",function(e){var t=r();"nodechange"==e.type&&e.selectionChange||(t&&t.id==f.id+"_ifr"&&(t=f.getBody()),f.dom.isChildOf(t,f.getBody())&&(f.lastRng=f.selection.getRng()))}),n.webkit&&!i&&(i=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(f.lastRng=n)}},s.bind(document,"selectionchange",i)))}),f.on("setcontent",function(){f.lastRng=null}),f.on("mousedown",function(){f.selection.lastFocusBookmark=null}),f.on("focusin",function(){var t=e.focusedEditor,n;f.selection.lastFocusBookmark&&(n=c(f,f.selection.lastFocusBookmark),f.selection.lastFocusBookmark=null,f.selection.setRng(n)),t!=f&&(t&&t.fire("blur",{focusedEditor:f}),e.setActive(f),e.focusedEditor=f,f.fire("focus",{blurredEditor:t}),f.focus(!0)),f.lastRng=null}),f.on("focusout",function(){t.setEditorTimeout(f,function(){var t=e.focusedEditor;l(f,r())||t!=f||(f.fire("blur",{focusedEditor:null}),e.focusedEditor=null,f.selection&&(f.selection.lastFocusBookmark=null))})}),o||(o=function(t){var n=e.activeEditor,r;r=t.target,n&&r.ownerDocument==document&&(n.selection&&r!=n.getBody()&&(n.selection.lastFocusBookmark=u(n.dom,n.lastRng)),r==document.body||l(n,r)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},s.bind(document,"focusin",o)),f.inline&&!a&&(a=function(t){var n=e.activeEditor,r=n.dom;if(n.inline&&r&&!r.isChildOf(t.target,n.getBody())){var i=n.selection.getRng();i.collapsed||(n.lastRng=i)}},s.bind(document,"mouseup",a))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(s.unbind(document,"selectionchange",i),s.unbind(document,"focusin",o),s.unbind(document,"mouseup",a),i=o=a=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var i,o,a,s=e.DOM,l=function(e,t){var n=e?e.settings.custom_ui_selector:"",i=s.getParent(t,function(t){return r.isEditorUIElement(t)||!!n&&e.dom.is(t,n)});return null!==i};return r.isEditorUIElement=function(e){return e.className.toString().indexOf("mce-")!==-1},r._isUIElement=l,r}),r(ut,[at,g,w,ue,d,m,u,pe,st,lt,N],function(e,t,n,r,i,o,a,s,l,u,c){function d(e){v(x.editors,function(t){"scroll"===e.type?t.fire("ScrollWindow",e):t.fire("ResizeWindow",e)})}function f(e,n){n!==w&&(n?t(window).on("resize scroll",d):t(window).off("resize scroll",d),w=n)}function p(e){var t=x.editors,n;delete t[e.id];for(var r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return x.activeEditor==e&&(x.activeEditor=t[0]),x.focusedEditor==e&&(x.focusedEditor=null),n}function h(e){return e&&e.initialized&&!(e.getContainer()||e.getBody()).parentNode&&(p(e),e.unbindAllNativeEvents(),e.destroy(!0),e.removed=!0,e=null),e}var m=n.DOM,g=o.explode,v=o.each,y=o.extend,b=0,C,x,w=!1;return x={$:t,majorVersion:"4",minorVersion:"5.5",releaseDate:"2017-03-07",editors:[],i18n:l,activeEditor:null,setup:function(){var e=this,t,n,i="",o,a;if(n=r.getDocumentBaseUrl(document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var s=document.getElementsByTagName("script"),l=0;l<s.length;l++){a=s[l].src;var c=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){c.indexOf(".min")!=-1&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}}!t&&document.currentScript&&(a=document.currentScript.src,a.indexOf(".min")!=-1&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new u(e)},overrideDefaults:function(e){var t,n;t=e.base_url,t&&(this.baseURL=new r(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new r(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n),this.defaultSettings=e;var i=e.plugin_base_urls;for(var o in i)c.PluginManager.urls[o]=i[o]},init:function(n){function r(e,t){return e.inline&&t.tagName.toLowerCase()in C}function i(e,t){window.console&&!window.test&&window.console.log(e,t)}function s(e){var t=e.id;return t||(t=e.name,t=t&&!m.get(t)?e.name:m.uniqueId(),e.setAttribute("id",t)),t}function l(e){var t=n[e];if(t)return t.apply(f,Array.prototype.slice.call(arguments,2))}function u(e,t){return t.constructor===RegExp?t.test(e.className):m.hasClass(e,t)}function c(e){var t,n=[];if(e.types)return v(e.types,function(e){n=n.concat(m.select(e.selector))}),n;if(e.selector)return m.select(e.selector);if(e.target)return[e.target];switch(e.mode){case"exact":t=e.elements||"",t.length>0&&v(g(t),function(e){var t;(t=m.get(e))?n.push(t):v(document.forms,function(t){v(t.elements,function(t){t.name===e&&(e="mce_editor_"+b++,m.setAttrib(t,"id",e),n.push(t))})})});break;case"textareas":case"specific_textareas":v(m.select("textarea"),function(t){e.editor_deselector&&u(t,e.editor_deselector)||e.editor_selector&&!u(t,e.editor_selector)||n.push(t)})}return n}function d(){function a(t,n,r){var i=new e(t,n,f);p.push(i),i.on("init",function(){++u===g.length&&x(p)}),i.targetElm=i.targetElm||r,i.render()}var u=0,p=[],g;return m.unbind(window,"ready",d),l("onpageload"),g=t.unique(c(n)),n.types?void v(n.types,function(e){o.each(g,function(t){return!m.is(t,e.selector)||(a(s(t),y({},n,e),t),!1)})}):(o.each(g,function(e){h(f.get(e.id))}),g=o.grep(g,function(e){return!f.get(e.id)}),void v(g,function(e){r(n,e)?i("Could not initialize inline editor on invalid inline target element",e):a(s(e),n,e)}))}var f=this,p,C;C=o.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var x=function(e){p=e};return f.settings=n,m.bind(window,"ready",d),new a(function(e){p?e(p):x=function(t){e(t)}})},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),f(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),C||(C=function(){t.fire("BeforeUnload")},m.bind(window,"beforeunload",C)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void v(m.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(p(i)&&t.fire("RemoveEditor",{editor:i}),r.length||m.unbind(window,"beforeunload",C),i.remove(),f(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return!!i.activeEditor&&i.activeEditor.execCommand(t,n,r)},triggerSave:function(){v(this.editors,function(e){e.save()})},addI18n:function(e,t){l.add(e,t)},translate:function(e){return l.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},y(x,s),x.setup(),window.tinymce=window.tinyMCE=x,x}),r(ct,[ut,m],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(dt,[pe,m],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&o<1e4&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async!==!1,e.data=e.data||"",n.fire("beforeInitialize",{settings:e}),i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(ft,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb\tt\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(pt,[ft,dt,m],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(ht,[w],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(mt,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?c+e:i.indexOf(",",c),r===-1||r>i.length?null:(n=i.substring(c,r),c=r+1,n)}var r,i,s,c=0;if(a={},u){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(u){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,u;try{if(window.localStorage)return localStorage}catch(c){}return l="tinymce",o=document.documentElement,u=!!o.addBehavior,u&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(gt,[w,f,E,N,m,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each("trim isArray is toArray makeMap each map grep inArray extend create walk createNS resolve explode _addCacheSuffix".split(" "),function(e){a[e]=i[e]}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(vt,[ce,m],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(yt,[vt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(bt,[Pe],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text"),a="";return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&(e.classes.add("btn-has-text"),a='<span class="'+n+'txt">'+e.encode(o)+"</span>"),r=r?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+a+"</button></div>"},bindStates:function(){function e(e){var i=n("span."+r,t.getEl());e?(i[0]||(n("button:first",t.getEl()).append('<span class="'+r+'"></span>'),i=n("span."+r,t.getEl())),i.html(t.encode(e))):i.remove(),t.classes.toggle("btn-has-text",!!e)}var t=this,n=t.$,r=t.classPrefix+"txt";return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(Ct,[Ne],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(xt,[Pe],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(wt,[Pe,we,ve,g,I,m],function(e,t,n,r,i,o){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&i.id.indexOf("-open")!=-1&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){var n;13==e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){if("INPUT"==e.target.nodeName){var n=t.state.get("value"),r=e.target.value;r!==n&&(t.state.set("value",r),t.fire("autocomplete",e))}}),t.on("mouseover",function(e){var n=t.tooltip().moveTo(-65535);if(t.statusLevel()&&e.target.className.indexOf(t.classPrefix+"status")!==-1){var r=t.statusMessage()||"Ok",i=n.text(r).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);n.classes.toggle("tooltip-n","bc-tc"==i),n.classes.toggle("tooltip-nw","bc-tl"==i),n.classes.toggle("tooltip-ne","bc-tr"==i),n.moveRel(e.target,i)}})},statusLevel:function(e){return arguments.length>0&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return arguments.length>0&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s,l=0,u=t.firstChild;e.statusLevel()&&"none"!==e.statusLevel()&&(l=parseInt(n.getRuntimeStyle(u,"padding-right"),10)-parseInt(n.getRuntimeStyle(u,"padding-left"),10)),a=i?o.w-n.getSize(i).width-10:o.w-10;var c=document;return c.all&&(!c.documentMode||c.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(u).css({width:a-l,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="",u="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),u='<i id="'+t+'-status" class="mce-status mce-ico" style="display: none"></i>',e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1" role="button"><button id="'+t+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!=o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button></div>",e.classes.add("has-open")),'<div id="'+t+'" class="'+e.classes+'"><input id="'+t+'-inp" class="'+r+'textbox" value="'+e.encode(i,!1)+'" hidefocus="1"'+l+' placeholder="'+e.encode(n.placeholder)+'" />'+u+s+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value), +this.state.get("value"))},showAutoComplete:function(e,n){var r=this;if(0===e.length)return void r.hideMenu();var i=function(e,t){return function(){r.fire("selectitem",{title:t,value:e})}};r.menu?r.menu.items().remove():r.menu=t.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(r).renderTo(),o.each(e,function(e){r.menu.add({text:e.title,url:e.previewUrl,match:n,classes:"menu-item-ellipsis",onclick:i(e.value,e.title)})}),r.menu.renderNew(),r.hideMenu(),r.menu.on("cancel",function(e){e.control.parent()===r.menu&&(e.stopPropagation(),r.focus(),r.hideMenu())}),r.menu.on("select",function(){r.focus()});var a=r.layoutRect().w;r.menu.layoutRect({w:a,minW:0,maxW:a}),r.menu.reflow(),r.menu.show(),r.menu.moveRel(r.getEl(),r.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var e=this;e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e.state.on("change:statusLevel",function(t){var r=e.getEl("status"),i=e.classPrefix,o=t.value;n.css(r,"display","none"===o?"none":""),n.toggleClass(r,i+"i-checkmark","ok"===o),n.toggleClass(r,i+"i-warning","warn"===o),n.toggleClass(r,i+"i-error","error"===o),e.classes.toggle("has-status","none"!==o),e.repaint()}),n.on(e.getEl("status"),"mouseleave",function(){e.tooltip().hide()}),e.on("cancel",function(t){e.menu&&e.menu.visible()&&(t.stopPropagation(),e.hideMenu())});var t=function(e,t){t&&t.items().length>0&&t.items().eq(e)[0].focus()};return e.on("keydown",function(n){var r=n.keyCode;"INPUT"===n.target.nodeName&&(r===i.DOWN?(n.preventDefault(),e.fire("autocomplete"),t(0,e.menu)):r===i.UP&&(n.preventDefault(),t(-1,e.menu)))}),e._super()},remove:function(){r(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}})}),r(Et,[wt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(r){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}})}),r(Nt,[bt,Ae],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(_t,[Nt,w],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",a="";return r&&(e.classes.add("btn-has-text"),a='<span class="'+n+'txt">'+e.encode(r)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+a+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(St,[],function(){function e(e){function i(e,i,o){var a,s,l,u,c,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,c=t(e,t(i,o)),d=n(e,n(i,o)),c==d?(l=c,{h:0,s:0,v:100*l}):(u=e==c?i-o:o==c?e-i:o-e,a=e==c?3:o==c?1:5,a=60*(a-u/(d-c)),s=(d-c)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,u;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=p=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),u=o-s,Math.floor(a)){case 0:d=s,f=l,p=0;break;case 1:d=l,f=s,p=0;break;case 2:d=0,f=s,p=l;break;case 3:d=0,f=l,p=s;break;case 4:d=l,f=0,p=s;break;case 5:d=s,f=0,p=l;break;default:d=f=p=0}d=r(255*(d+u)),f=r(255*(f+u)),p=r(255*(p+u))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(p)}function s(){return{r:d,g:f,b:p}}function l(){return i(d,f,p)}function u(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,p=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),p=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),p=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),p=parseInt(t[3]+t[3],16)),d=d<0?0:d>255?255:d,f=f<0?0:f>255?255:f,p=p<0?0:p>255?255:p,c}var c=this,d=0,f=0,p=0;e&&u(e),c.toRgb=s,c.toHsv=l,c.toHex=a,c.parse=u}var t=Math.min,n=Math.max,r=Math.round;return e}),r(kt,[Pe,_e,ve,St],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(p,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),u.s=100*n.x,u.v=100*(1-n.y),i(u),s.fire("change")}function a(t){var n;n=e(c,t),u=l.toHsv(),u.h=360*(1-n.y),i(u,!0),s.fire("change")}var s=this,l=s.color(),u,c,d,f,p;c=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),p=s.getEl("svp"),s._repaint=function(){u=l.toHsv(),i(u)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;e<t;e++)n+='<div class="'+r+'colorpicker-h-chunk" style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='<div id="'+n+'-h" class="'+r+'colorpicker-h" style="'+a+'">'+e()+'<div id="'+n+'-hp" class="'+r+'colorpicker-h-marker"></div></div>','<div id="'+n+'" class="'+t.classes+'"><div id="'+n+'-sv" class="'+r+'colorpicker-sv"><div class="'+r+'colorpicker-overlay1"><div class="'+r+'colorpicker-overlay2"><div id="'+n+'-svp" class="'+r+'colorpicker-selector1"><div class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(Tt,[Pe],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classes+'">'+e._getDataPathHtml(e.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;r<i;r++)o+=(r>0?'<div class="'+a+'divider" aria-hidden="true"> '+t.settings.delimiter+" </div>":"")+'<div role="button" class="'+a+"path-item"+(r==i-1?" "+a+"last":"")+'" data-index="'+r+'" tabindex="-1" id="'+t._id+"-"+r+'" aria-level="'+(r+1)+'">'+n[r].name+"</div>";return o||(o='<div class="'+a+'path-item">\xa0</div>'),o}})}),r(Rt,[Tt],function(e){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var t=this,n=t.settings.editor;return n.settings.elementpath!==!1&&(t.on("select",function(e){n.focus(),n.selection.select(this.row()[e.index].element),n.nodeChanged()}),n.on("nodeChange",function(r){for(var i=[],o=r.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=n.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}t.row(i)})),t._super()}})}),r(At,[Ne],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Bt,[Ne,At,m],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(Dt,[Bt],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(Lt,[w,z,h,it,m,_],function(e,t,n,r,i,o){var a=i.trim,s=function(e,t,n,r,i){return{type:e,title:t,url:n,level:r,attach:i}},l=function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return o.isContentEditableTrue(e)}return!1},u=function(t,n){return e.DOM.select(t,n)},c=function(e){return e.innerText||e.textContent},d=function(e){return e.id?e.id:r.uuid("h")},f=function(e){return e&&"A"===e.nodeName&&(e.id||e.name)},p=function(e){return f(e)&&m(e)},h=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},m=function(e){return l(e)&&!o.isContentEditableFalse(e)},g=function(e){return h(e)&&m(e)},v=function(e){return h(e)?parseInt(e.nodeName.substr(1),10):0},y=function(e){var t=d(e),n=function(){e.id=t};return s("header",c(e),"#"+t,v(e),n)},b=function(e){var n=e.id||e.name,r=c(e);return s("anchor",r?r:"#"+n,"#"+n,0,t.noop)},C=function(e){return n.map(n.filter(e,g),y)},x=function(e){return n.map(n.filter(e,p),b)},w=function(e){var t=u("h1,h2,h3,h4,h5,h6,a:not([href])",e);return t},E=function(e){return a(e.title).length>0},N=function(e){var t=w(e);return n.filter(C(t).concat(x(t)),E)};return{find:N}}),r(Mt,[wt,m,h,z,I,Lt],function(e,t,n,r,i,o){var a={},s=5,l=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},u=function(e){return t.map(e,l)},c=function(e,t){return{title:e,value:{title:e,url:t,attach:r.noop}}},d=function(e,t){var r=n.find(t,function(t){return t.url===e});return!r},f=function(e,t,n){var r=t in e?e[t]:n;return r===!1?null:r},p=function(e,i,o,s){var l={title:"-"},p=function(e){var a=n.filter(e[o],function(e){return d(e,i)});return t.map(a,function(e){return{title:e,value:{title:e,url:e,attach:r.noop}}})},h=function(e){var t=n.filter(i,function(t){return t.type==e});return u(t)},g=function(){var e=h("anchor"),t=f(s,"anchor_top","#top"),n=f(s,"anchor_bottom","#bottom");return null!==t&&e.unshift(c("<top>",t)),null!==n&&e.push(c("<bottom>",n)),e},v=function(e){return n.reduce(e,function(e,t){var n=0===e.length||0===t.length;return n?e.concat(t):e.concat(l,t)},[])};return s.typeahead_urls===!1?[]:"file"===o?v([m(e,p(a)),m(e,h("header")),m(e,g())]):m(e,p(a))},h=function(e,t){var r=a[t];/^https?/.test(e)&&(r?n.indexOf(r,e)===-1&&(a[t]=r.slice(0,s).concat(e)):a[t]=[e])},m=function(e,n){var r=e.toLowerCase(),i=t.grep(n,function(e){return e.title.toLowerCase().indexOf(r)!==-1});return 1===i.length&&i[0].title===e?[]:i},g=function(e){var t=e.title;return t.raw?t.raw:t},v=function(e,t,n,r){var i=function(i){var a=o.find(n),s=p(i,a,r,t);e.showAutoComplete(s,i)};e.on("autocomplete",function(){i(e.value())}),e.on("selectitem",function(t){var n=t.value;e.value(n.url);var i=g(n);"image"===r?e.fire("change",{meta:{alt:i,attach:n.attach}}):e.fire("change",{meta:{text:i,attach:n.attach}}),e.focus()}),e.on("click",function(t){0===e.value().length&&"INPUT"===t.target.nodeName&&i("")}),e.on("PostRender",function(){e.getRoot().on("submit",function(t){t.isDefaultPrevented()||h(e.value(),r)})})},y=function(e){var t=e.status,n=e.message;return"valid"===t?{status:"ok",message:n}:"unknown"===t?{status:"warn",message:n}:"invalid"===t?{status:"warn",message:n}:{status:"none",message:""}},b=function(e,t,n){var r=t.filepicker_validator_handler;if(r){var i=function(t){return 0===t.length?void e.statusLevel("none"):void r({url:t,type:n},function(t){var n=y(t);e.statusMessage(n.message),e.statusLevel(n.status)})};e.state.on("change:value",function(e){i(e.value)})}};return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s,l=e.filetype;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),s&&!s[l]||(a=i.file_picker_callback,!a||s&&!s[l]?(a=i.file_browser_callback,!a||s&&!s[l]||(o=function(){a(n.getEl("inp").id,n.value(),l,window)})):o=function(){var e=n.fire("beforecall").meta;e=t.extend({filetype:l},e),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),e)}),o&&(e.icon="browse",e.onaction=o),n._super(e),v(n,i,r.getBody(),l),b(n,i,l)}})}),r(Pt,[yt],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Ot,[yt],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v=[],y,b,C,x,w,E,N,_,S,k,T,R,A,B,D,L,M,P,O,H,I,F,z=Math.max,U=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,u=a.spacing||0,"row-reversed"!=f&&"column-reverse"!=f||(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",N="h",_="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",O="left",M="w",D="x",L="innerW",P="minW",H="right",I="deltaW",F="contentW"):(S="x",N="w",_="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",O="top",M="h",D="y",L="innerH",P="minH",H="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],E=c=0,t=0,n=r.length;t<n;t++)p=r[t],h=p.layoutRect(),m=p.settings,g=m.flex,d-=t<n-1?u:0,g>0&&(c+=g,h[k]&&v.push(p),h.flex=g),d-=h[_],y=o[O]+h[P]+o[H],y>E&&(E=y);if(x={},d<0?x[_]=i[_]-d+i[A]:x[_]=i[R]-d+i[A],x[P]=E+i[I],x[B]=i[R]-d,x[F]=E,x.minW=U(x.minW,i.maxW),x.minH=U(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/c,t=0,n=v.length;t<n;t++)p=v[t],h=p.layoutRect(),b=h[k],y=h[_]+h.flex*C,y>b?(d-=h[k]-h[_],c-=h.flex,h.flex=0,h.maxFlexSize=b):h.maxFlexSize=0;for(C=d/c,w=o[T],x={},0===c&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],w<0&&(w=o[T])):"justify"==l&&(w=o[T],u=Math.floor(d/(r.length-1)))),x[D]=o[O],t=0,n=r.length;t<n;t++)p=r[t],h=p.layoutRect(),y=h.maxFlexSize||h[_],"center"===s?x[D]=Math.round(i[L]/2-h[M]/2):"stretch"===s?(x[M]=z(h[P]||0,i[L]-o[O]-o[H]),x[D]=o[O]):"end"===s&&(x[D]=i[L]-h[M]-o.top),h.flex>0&&(y+=h.flex*C),x[N]=y,x[S]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+u}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var W=e.parent();W&&(W._lastRect=null,W.recalc())}}})}),r(Ht,[vt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(It,[w],function(e){var n=function(e,t,n){for(;n!==t;){if(n.style[e])return n.style[e];n=n.parentNode}return""},r=function(e){return/[0-9.]+px$/.test(e)?Math.round(72*parseInt(e,10)/96)+"pt":e},i=function(e){return e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")},o=function(t,n){return e.DOM.getStyle(n,t,!0)},a=function(e,t){var r=n("fontSize",e,t);return""!==r?r:o("fontSize",t)},s=function(e,r){var a=n("fontFamily",e,r),s=""!==a?a:o("fontFamily",r);return s!==t?i(s):""};return{getFontSize:a,getFontFamily:s,toPt:r}}),r(Ft,[xe,Pe,Ae,m,h,w,ut,d,It],function(e,t,n,r,i,o,a,s,l){function u(e){e.settings.ui_container&&(s.container=o.DOM.select(e.settings.ui_container)[0])}function c(t){t.on("ScriptsLoaded",function(){t.rtl&&(e.rtl=!0)})}function d(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;f(i.parents,function(e){if(f(t,function(t){if(n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a)return!1}),a)return!1}),r.value(a)})}}function i(t){return function(){var n=this,r=function(e){return e?e.split(",")[0]:""};e.on("nodeChange",function(i){var o,a=null;o=l.getFontFamily(e.getBody(),i.element),f(t,function(e){e.value.toLowerCase()===o.toLowerCase()&&(a=e.value)}),f(t,function(e){a||r(e.value).toLowerCase()!==r(o).toLowerCase()||(a=e.value)}),n.value(a),!a&&o&&n.text(r(o))})}}function o(t){return function(){var n=this;e.on("nodeChange",function(r){var i,o,a=null;i=l.getFontSize(e.getBody(),r.element),o=l.toPt(i),f(t,function(e){e.value===i?a=i:e.value===o&&(a=o)}),n.value(a),a||n.text(o)})}}function a(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function s(){function t(e){var n=[];if(e)return f(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){f(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return e.formatter.getCssText(this.settings.format)},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&h(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function u(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function c(t){return function(){function n(){var n="redo"==t?"hasRedo":"hasUndo";return!!e.undoManager&&e.undoManager[n]()}var r=this;r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){r.disabled(e.readonly||!n())})}}function d(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function h(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}function m(t){var n=t.length;return r.each(t,function(t){t.menu&&(t.hidden=0===m(t.menu));var r=t.format;r&&(t.hidden=!e.formatter.canApply(r)),t.hidden&&n--}),n}function g(t){var n=t.items().length;return t.items().each(function(t){t.menu&&t.visible(g(t.menu)>0),!t.menu&&t.settings.menu&&t.visible(m(t.settings.menu)>0);var r=t.settings.format;r&&t.visible(e.formatter.canApply(r)),t.visible()||n--}),n}var v;v=s(),f({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:u(n),onclick:function(){h(n)}})}),f({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),f({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:u(n)})});var y=function(e){var t=e;return t.length>0&&"-"===t[0].text&&(t=t.slice(1)),t.length>0&&"-"===t[t.length-1].text&&(t=t.slice(0,t.length-1)),t},b=function(t){var n,i;if("string"==typeof t)i=t.split(" ");else if(r.isArray(t))return p(r.map(t,b));return n=r.grep(i,function(t){return"|"===t||t in e.menuItems}),r.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},C=function(t){var n=[{text:"-"}],i=r.grep(e.menuItems,function(e){return e.context===t});return r.each(i,function(e){"before"==e.separator&&n.push({text:"|"}),e.prependToContext?n.unshift(e):n.push(e),"after"==e.separator&&n.push({text:"|"})}),n},x=function(e){return y(e.insert_button_items?b(e.insert_button_items):C("insert"))};e.addButton("undo",{tooltip:"Undo",onPostRender:c("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:c("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:c("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:c("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:d,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),e.addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(x(e.settings)),this.menu.renderNew()}}),f({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:v,onShowMenu:function(){e.settings.style_formats_autohide&&g(this.menu)}}),e.addButton("formatselect",function(){var n=[],r=a(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return f(r,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:r[0][0],values:n,fixedWidth:!0,onselect:h,onPostRender:t(n)}}),e.addButton("fontselect",function(){var t="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",n=[],r=a(e.settings.font_formats||t);return f(r,function(e){n.push({text:{raw:e[0]},value:e[1],textStyle:e[1].indexOf("dings")==-1?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:n,fixedWidth:!0,onPostRender:i(n),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var t=[],n="8pt 10pt 12pt 14pt 18pt 24pt 36pt",r=e.settings.fontsize_formats||n;return f(r.split(" "),function(e){var n=e,r=e,i=e.split("=");i.length>1&&(n=i[0],r=i[1]),t.push({text:n,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:t,fixedWidth:!0,onPostRender:o(t),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:v})}var f=r.each,p=function(e){return i.reduce(e,function(e,t){return e.concat(t)},[])};a.on("AddEditor",function(e){var t=e.editor;c(t),d(t),u(t)}),e.translate=function(e){return a.translate(e)},t.tooltips=!s.iOS}),r(zt,[yt],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C,x,w,E,N=[],_=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;d<r;d++)N.push(0);for(f=0;f<n;f++)_.push(0);for(f=0;f<n;f++)for(d=0;d<r&&(c=i[f*r+d],c);d++)u=c.layoutRect(),S=u.minW,k=u.minH,N[d]=S>N[d]?S:N[d],_[f]=k>_[f]?k:_[f];for(T=o.innerW-g.left-g.right,w=0,d=0;d<r;d++)w+=N[d]+(d>0?y:0),T-=(d>0?y:0)+N[d];for(R=o.innerH-g.top-g.bottom,E=0,f=0;f<n;f++)E+=_[f]+(f>0?b:0),R-=(f>0?b:0)+_[f];if(w+=g.left+g.right,E+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=E+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;d<M.length;d++)L+=M[d];else L=r;var P=T/L;for(d=0;d<r;d++)N[d]+=M?M[d]*P:P;for(h=g.top,f=0;f<n;f++){for(p=g.left,s=_[f]+D,d=0;d<r&&(B=A?f*r+r-1-d:f*r+d,c=i[B],c);d++)m=c.settings,u=c.layoutRect(),a=Math.max(N[d],u.startMinWidth),u.x=p,u.y=h,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?u.x=p+a/2-u.w/2:"right"==v?u.x=p+a-u.w:"stretch"==v&&(u.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?u.y=h+s/2-u.h/2:"bottom"==v?u.y=h+s-u.h:"stretch"==v&&(u.h=s),c.layoutRect(u),p+=a+y,c.recalc&&c.recalc();h+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var O=e.parent();O&&(O._lastRect=null,O.recalc())}}})}),r(Ut,[Pe,c],function(e,t){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,n){var r=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,n&&n()):t.setTimeout(function(){r.html(e)}),this}})}),r(Wt,[Pe],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("infobox"),t.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+t+"ico "+t+'i-help"></i></button></div></div>'},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){ +e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r(Vt,[Pe,ve],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e=this,t,n,r=e.settings.forId;return!r&&(n=e.settings.forName)&&(t=e.getRoot().find("#"+n)[0],t&&(r=t._id)),r?'<label id="'+e._id+'" class="'+e.classes+'"'+(r?' for="'+r+'"':"")+">"+e.encode(e.state.get("text"))+"</label>":'<span id="'+e._id+'" class="'+e.classes+'">'+e.encode(e.state.get("text"))+"</span>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}})}),r($t,[Ne],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(qt,[$t],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(jt,[bt,we,qt],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(e){var n=this,r;return n.menu&&n.menu.visible()&&e!==!1?n.hideMenu():(n.menu||(r=n.state.get("menu")||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",r.renderTo?n.menu=r.parent(n).show().renderTo():n.menu=t.create(r).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(e){e.control==n.menu&&n.activeMenu("show"==e.type),n.aria("expanded","show"==e.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]),void n.fire("showmenu"))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text"),s="";return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",a&&(e.classes.add("btn-has-text"),s='<span class="'+r+'txt">'+e.encode(a)+"</span>"),i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+s+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.focus(),e.showMenu(!t.aria),t.aria&&e.menu.items().filter(":visible")[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(Yt,[Pe,we,d,c],function(e,t,n,r){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),"-"!==n&&"|"!==n||(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)r=i[e[t].toLowerCase()],r&&(e[t]=r);return e.join("+")}function t(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function r(e){var n=s.match||"";return n?e.replace(new RegExp(t(n),"gi"),function(e){return"!mce~match["+e+"]mce~match!"}):e}function i(e){return e.replace(new RegExp(t("!mce~match["),"g"),"<b>").replace(new RegExp(t("]mce~match!"),"g"),"</b>")}var o=this,a=o._id,s=o.settings,l=o.classPrefix,u=o.state.get("text"),c=o.settings.icon,d="",f=s.shortcut,p=o.encode(s.url),h="";return c&&o.parent().classes.add("menu-has-icons"),s.image&&(d=" style=\"background-image: url('"+s.image+"')\""),f&&(f=e(f)),c=l+"ico "+l+"i-"+(o.settings.icon||"none"),h="-"!==u?'<i class="'+c+'"'+d+"></i>\xa0":"",u=i(o.encode(r(u))),p=i(o.encode(r(p))),'<div id="'+a+'" class="'+o.classes+'" tabindex="-1">'+h+("-"!==u?'<span id="'+a+'-text" class="'+l+'text">'+u+"</span>":"")+(f?'<div id="'+a+'-shortcut" class="'+l+'menu-shortcut">'+f+"</div>":"")+(s.menu?'<div class="'+l+'caret"></div>':"")+(p?'<div class="'+l+'menu-item-link">'+p+"</div>":"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=e.getEl("text");i&&i.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),r.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){var e=this;return e.parent().items().each(function(e){e.classes.remove("selected")}),e.classes.toggle("selected",!0),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Xt,[g,xe,c],function(e,t,n){return function(r,i){var o=this,a,s=t.classPrefix,l;o.show=function(t,u){function c(){a&&(e(r).append('<div class="'+s+"throbber"+(i?" "+s+"throbber-inline":"")+'"></div>'),u&&u())}return o.hide(),a=!0,t?l=n.setTimeout(c,t):c(),o},o.hide=function(){var e=r.lastChild;return n.clearTimeout(l),e&&e.className.indexOf("throbber")!=-1&&e.parentNode.removeChild(e),a=!1,o}}}),r(Kt,[Ae,Yt,Xt,m],function(e,t,n,r){return e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var n=e.items,i=n.length;i--;)n[i]=r.extend({},e.itemDefaults,n[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},load:function(){function e(){t.throbber&&(t.throbber.hide(),t.throbber=null)}var t=this,r,i;i=t.settings.itemsFactory,i&&(t.throbber||(t.throbber=new n(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide close",e)),t.requestTime=r=(new Date).getTime(),t.settings.itemsFactory(function(n){return 0===n.length?void t.hide():void(t.requestTime===r&&(t.getEl().style.width="",t.getEl("body").style.width="",e(),t.items().remove(),t.getEl("body").innerHTML="",t.add(n),t.renderNew(),t.fire("loaded")))}))},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;if(n.icon||n.image||n.selectable)return e._hasIcons=!0,!1}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e._super()}})}),r(Gt,[jt,Kt],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value)return o=o||r[a].text,n.state.set("value",r[a].value),!0;if(r[a].menu&&t(r[a].menu))return!0}}var n=this,r,i,o,a;n._super(e),e=n.settings,n._values=r=e.values,r&&("undefined"!=typeof e.value&&t(r),!i&&r.length>0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i<e.length;i++){if(e[i].value===t)return e[i];if(e[i].menu&&(r=n(e[i].menu,t)))return r}}var r=this;return r.on("show",function(t){e(t.control,r.value())}),r.state.on("change:value",function(e){var t=n(r.state.get("menu"),e.value);t?r.text(t.text):r.text(r.settings.text)}),r._super()}})}),r(Jt,[xt],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(Qt,[Pe,_e],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"==e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(Zt,[Pe],function(e){function t(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}return e.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e=this,n,r="";return n=t(e._options),e.size&&(r=' size = "'+e.size+'"'),'<select id="'+e._id+'" class="'+e.classes+'"'+r+">"+n+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(n){e.getEl().innerHTML=t(n.value)}),e._super()}})}),r(en,[Pe,_e,ve],function(e,t,n){function r(e,t,n){return e<t&&(e=t),e>n&&(e=n),e}function i(e,t,n){e.setAttribute("aria-"+t,n)}function o(e,t){var r,o,a,s,l,u;"v"==e.settings.orientation?(s="top",a="height",o="h"):(s="left",a="width",o="w"),u=e.getEl("handle"),r=(e.layoutRect()[o]||100)-n.getSize(u)[a],l=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",u.style[s]=l,u.style.height=e.layoutRect().h+"px",i(u,"valuenow",t),i(u,"valuetext",""+e.settings.previewFilter(t)),i(u,"valuemin",e._minValue),i(u,"valuemax",e._maxValue)}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'"><div id="'+t+'-handle" class="'+n+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){function e(e,t,n){return(n+e)/(t-e)}function i(e,t,n){return n*(t-e)-e}function o(t,n){function o(o){var a;a=s.value(),a=i(t,n,e(t,n,a)+.05*o),a=r(a,t,n),s.value(a),s.fire("dragstart",{value:a}),s.fire("drag",{value:a}),s.fire("dragend",{value:a})}s.on("keydown",function(e){switch(e.keyCode){case 37:case 38:o(-1);break;case 39:case 40:o(1)}})}function a(e,i,o){var a,l,u,h,m;s._dragHelper=new t(s._id,{handle:s._id+"-handle",start:function(e){a=e[c],l=parseInt(s.getEl("handle").style[d],10),u=(s.layoutRect()[p]||100)-n.getSize(o)[f],s.fire("dragstart",{value:m})},drag:function(t){var n=t[c]-a;h=r(l+n,0,u),o.style[d]=h+"px",m=e+h/u*(i-e),s.value(m),s.tooltip().text(""+s.settings.previewFilter(m)).show().moveRel(o,"bc tc"),s.fire("drag",{value:m})},stop:function(){s.tooltip().hide(),s.fire("dragend",{value:m})}})}var s=this,l,u,c,d,f,p;l=s._minValue,u=s._maxValue,"v"==s.settings.orientation?(c="screenY",d="top",f="height",p="h"):(c="screenX",d="left",f="width",p="w"),s._super(),o(l,u,s.getEl("handle")),a(l,u,s.getEl("handle"))},repaint:function(){this._super(),o(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){o(e,t.value)}),e._super()}})}),r(tn,[Pe],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"></div>'}})}),r(nn,[jt,ve,g],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text"),a="";return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",o&&(e.classes.add("btn-has-text"),a='<span class="'+n+'txt">'+e.encode(o)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(i?'<i class="'+i+'"'+r+"></i>":"")+a+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1">'+(e._menuBtnText?(i?"\xa0":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&n.className.indexOf("open")==-1)return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(rn,[Ht],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(on,[ke,g,ve],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+r+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+r+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(n&&n.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=r<0?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(an,[Pe,m,ve],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,r=e.settings,i,o;return i={id:e._id,hidefocus:"1"},t.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){i[e]=r[e]}),e.disabled()&&(i.disabled="disabled"),r.subtype&&(i.type=r.subtype),o=n.create(r.multiline?"textarea":"input",i),o.value=e.state.get("value"),o.className=e.classes,o.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(sn,[],function(){var e=this||window,t=function(){return e.tinymce};return"function"==typeof e.define&&(e.define.amd||e.define("ephox/tinymce",[],t)),"object"==typeof module&&(module.exports=window.tinymce),{}}),a([l,u,c,d,f,p,m,g,v,y,C,w,E,N,T,A,B,D,L,M,P,O,I,F,j,Y,J,te,le,ue,ce,de,pe,me,ge,Ce,xe,we,Ee,Ne,_e,Se,ke,Te,Re,Ae,Be,De,Le,Me,Pe,Oe,He,Ie,Ue,Ve,at,st,lt,ut,dt,ft,pt,ht,mt,gt,vt,yt,bt,Ct,xt,wt,Et,Nt,_t,St,kt,Tt,Rt,At,Bt,Dt,Mt,Pt,Ot,Ht,Ft,zt,Ut,Wt,Vt,$t,qt,jt,Yt,Xt,Kt,Gt,Jt,Qt,Zt,en,tn,nn,rn,on,an])}(window);!function(){var e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new Array(a),l=0;l<a;++l)s[l]=r(i[l]);var u=o.apply(null,s);if(void 0===u)throw"module ["+t+"] returned undefined";n.instance=u},n=function(t,n,r){if("string"!=typeof t)throw"module id must be a string";if(void 0===n)throw"no dependencies for "+t;if(void 0===r)throw"no definition function for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var r=e[n];if(void 0===r)throw"module ["+n+"] was undefined";return void 0===r.instance&&t(n),r.instance},i=function(e,t){for(var n=e.length,i=new Array(n),o=0;o<n;++o)i.push(r(e[o]));t.apply(null,t)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var a=n,s=function(e,t){a(e,[],function(){return t})};s("1",tinymce.PluginManager),s("2",tinymce.util.Delay),a("4",[],function(){var e={aletter:"[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]",midnumlet:"['\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",midletter:"[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",midnum:"[,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",numeric:"[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",cr:"\\r",lf:"\\n",newline:"[\x0B\f\x85\u2028\u2029]",extend:"[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",format:"[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",katakana:"[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",extendnumlet:"[_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f]",punctuation:"[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]"},t={ALETTER:0,MIDNUMLET:1,MIDLETTER:2,MIDNUM:3,NUMERIC:4,CR:5,LF:6,NEWLINE:7,EXTEND:8,FORMAT:9,KATAKANA:10,EXTENDNUMLET:11,AT:12,OTHER:13},n=[new RegExp(e.aletter),new RegExp(e.midnumlet),new RegExp(e.midletter),new RegExp(e.midnum),new RegExp(e.numeric),new RegExp(e.cr),new RegExp(e.lf),new RegExp(e.newline),new RegExp(e.extend),new RegExp(e.format),new RegExp(e.katakana),new RegExp(e.extendnumlet),new RegExp("@")],r="",i=new RegExp("^"+e.punctuation+"$"),o=/\s/;return{characterIndices:t,SETS:n,EMPTY_STRING:r,PUNCTUATION:i,WHITESPACE:o}}),a("7",[],function(){var e=function(e,t,n){var r,i;if(!e)return 0;if(n=n||e,void 0!==e.length){for(r=0,i=e.length;r<i;r++)if(t.call(n,e[r],r,e)===!1)return 0}else for(r in e)if(e.hasOwnProperty(r)&&t.call(n,e[r],r,e)===!1)return 0;return 1},t=function(t,n){var r=[];return e(t,function(e,i){r.push(n(e,i,t))}),r};return{each:e,map:t}}),a("5",["4","7"],function(e,t){var n=e.SETS,r=e.characterIndices.OTHER,i=function(e){var t,i,o=r,a=n.length;for(t=0;t<a;++t)if(i=n[t],i&&i.test(e)){o=t;break}return o},o=function(e){var t={};return function(n){if(t[n])return t[n];var r=e(n);return t[n]=r,r}},a=function(e){var n=o(i);return t.map(e.split(""),n)};return{classify:a}}),a("6",["4"],function(e){var t=e.characterIndices,n=function(e,n){var r,i,o=e[n],a=e[n+1];return!(n<0||n>e.length-1&&0!==n)&&((o!==t.ALETTER||a!==t.ALETTER)&&(i=e[n+2],(o!==t.ALETTER||a!==t.MIDLETTER&&a!==t.MIDNUMLET&&a!==t.AT||i!==t.ALETTER)&&(r=e[n-1],(o!==t.MIDLETTER&&o!==t.MIDNUMLET&&a!==t.AT||a!==t.ALETTER||r!==t.ALETTER)&&((o!==t.NUMERIC&&o!==t.ALETTER||a!==t.NUMERIC&&a!==t.ALETTER)&&((o!==t.MIDNUM&&o!==t.MIDNUMLET||a!==t.NUMERIC||r!==t.NUMERIC)&&((o!==t.NUMERIC||a!==t.MIDNUM&&a!==t.MIDNUMLET||i!==t.NUMERIC)&&(o!==t.EXTEND&&o!==t.FORMAT&&r!==t.EXTEND&&r!==t.FORMAT&&a!==t.EXTEND&&a!==t.FORMAT&&((o!==t.CR||a!==t.LF)&&(o===t.NEWLINE||o===t.CR||o===t.LF||(a===t.NEWLINE||a===t.CR||a===t.LF||(o!==t.KATAKANA||a!==t.KATAKANA)&&((a!==t.EXTENDNUMLET||o!==t.ALETTER&&o!==t.NUMERIC&&o!==t.KATAKANA&&o!==t.EXTENDNUMLET)&&((o!==t.EXTENDNUMLET||a!==t.ALETTER&&a!==t.NUMERIC&&a!==t.KATAKANA)&&o!==t.AT))))))))))))};return{isWordBoundary:n}}),a("3",["4","5","6"],function(e,t,n){var r=e.EMPTY_STRING,i=e.WHITESPACE,o=e.PUNCTUATION,a=function(e){return"http"===e||"https"===e},s=function(e,t){var n;for(n=t;n<e.length;++n){var r=e.charAt(n);if(i.test(r))break}return n},l=function(e,t,n){var r=s(t,n+1),i=t.substring(n+1,r);return"://"===i.substr(0,3)?{word:e+i,index:r}:{word:e,index:n}},u=function(e,s){var u,c,d,f=0,p=t.classify(e),h=p.length,m=[],g=[];for(s||(s={}),s.ignoreCase&&(e=e.toLowerCase()),c=s.includePunctuation,d=s.includeWhitespace;f<h;++f)if(u=e.charAt(f),m.push(u),n.isWordBoundary(p,f)){if(m=m.join(r),m&&(d||!i.test(m))&&(c||!o.test(m)))if(a(m)){var v=l(m,e,f);g.push(v.word),f=v.index}else g.push(m);m=[]}return g};return{getWords:u}}),a("0",["1","2","3"],function(e,t,n){return e.add("wordcount",function(e){var r=function(e){return e.removed?"":e.getBody().innerText},i=function(){return n.getWords(r(e)).length},o=function(){e.theme.panel.find("#wordcount").text(["Words: {0}",i()])};return e.on("init",function(){var n=e.theme.panel&&e.theme.panel.find("#statusbar")[0],r=t.debounce(o,300);n&&t.setEditorTimeout(e,function(){n.insert({type:"label",name:"wordcount",text:["Words: {0}",i()],classes:"wordcount",disabled:e.settings.readonly},0),e.on("setcontent beforeaddundo undo redo keyup",r)},0)}),{getCount:i}}),function(){}}),r("0")()}();tinymce.PluginManager.add("textcolor",function(e){function t(t){var n;return e.dom.getParents(e.selection.getStart(),function(e){var r;(r=e.style["forecolor"==t?"color":"background-color"])&&(n=r)}),n}function n(t){var n,r,i=[];for(r=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],r=e.settings.textcolor_map||r,r=e.settings[t+"_map"]||r,n=0;n<r.length;n+=2)i.push({text:r[n+1],color:"#"+r[n]});return i}function r(){function t(e,t){var n="transparent"==e;return'<td class="mce-grid-cell'+(n?" mce-colorbtn-trans":"")+'"><div id="'+h+"-"+m++ +'" data-mce-color="'+(e?e:"")+'" role="option" tabIndex="-1" style="'+(e?"background-color: "+e:"")+'" title="'+tinymce.translate(t)+'">'+(n?"×":"")+"</div></td>"}var r,i,o,a,s,c,d,f,p=this,h=p._id,m=0;for(f=p.settings.origin,r=n(f),r.push({text:tinymce.translate("No color"),color:"transparent"}),o='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',a=r.length-1,c=0;c<u[f];c++){for(o+="<tr>",s=0;s<l[f];s++)d=c*l[f]+s,d>a?o+="<td></td>":(i=r[d],o+=t(i.color,i.text));o+="</tr>"}if(e.settings.color_picker_callback){for(o+='<tr><td colspan="'+l[f]+'" class="mce-custom-color-btn"><div id="'+h+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+h+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",o+="<tr>",s=0;s<l[f];s++)o+=t("","Custom color");o+="</tr>"}return o+="</tbody></table>"}function i(t,n){e.undoManager.transact(function(){e.focus(),e.formatter.apply(t,{value:n}),e.nodeChanged()})}function o(t){e.undoManager.transact(function(){e.focus(),e.formatter.remove(t,{value:null},null,!0),e.nodeChanged()})}function a(n){function r(e){d.hidePanel(),d.color(e),i(d.settings.format,e)}function a(){d.hidePanel(),d.resetColor(),o(d.settings.format)}function s(e,t){e.style.background=t,e.setAttribute("data-mce-color",t)}var u,c,d=this.parent();c=d.settings.origin,tinymce.DOM.getParent(n.target,".mce-custom-color-btn")&&(d.hidePanel(),e.settings.color_picker_callback.call(e,function(e){var t,n,i,o=d.panel.getEl().getElementsByTagName("table")[0];for(t=tinymce.map(o.rows[o.rows.length-1].childNodes,function(e){return e.firstChild}),i=0;i<t.length&&(n=t[i],n.getAttribute("data-mce-color"));i++);if(i==l[c])for(i=0;i<l[c]-1;i++)s(t[i],t[i+1].getAttribute("data-mce-color"));s(n,e),r(e)},t(d.settings.format))),u=n.target.getAttribute("data-mce-color"),u?(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),n.target.setAttribute("aria-selected",!0),this.lastId=n.target.id,"transparent"==u?a():r(u)):null!==u&&d.hidePanel()}function s(){var e=this;e._color?i(e.settings.format,e._color):o(e.settings.format)}var l,u;u={forecolor:e.settings.forecolor_rows||e.settings.textcolor_rows||5,backcolor:e.settings.backcolor_rows||e.settings.textcolor_rows||5},l={forecolor:e.settings.forecolor_cols||e.settings.textcolor_cols||8,backcolor:e.settings.backcolor_cols||e.settings.textcolor_cols||8},e.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{origin:"forecolor",role:"application",ariaRemember:!0,html:r,onclick:a},onclick:s}),e.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{origin:"backcolor",role:"application",ariaRemember:!0,html:r,onclick:a},onclick:s})});!function(e,t){"use strict";function n(e,t){for(var n,r=[],o=0;o<e.length;++o){if(n=a[e[o]]||i(e[o]),!n)throw"module definition dependecy not found: "+e[o];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){a[e]=i.apply(null,arguments)})}function i(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function o(n){var r,i,o,s,l;for(r=0;r<n.length;r++){i=e,o=n[r],s=o.split(/[.\/]/);for(var u=0;u<s.length-1;++u)i[s[u]]===t&&(i[s[u]]={}),i=i[s[u]];i[s[s.length-1]]=a[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o in a)l[o]=a[o];for(r=0;r<n.length;r++)delete l[n[r]];e.privateModules=l}}var a={};r("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(e,t,n){function r(t,n){return e.each(n,function(e){t=e.constructor==RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}function i(i){function o(e){var t=e.name,n=e;if("br"===t)return void(l+="\n");if(u[t]&&(l+=" "),c[t])return void(l+=" ");if(3==e.type&&(l+=e.value),!e.shortEnded&&(e=e.firstChild))do o(e);while(e=e.next);d[t]&&n.next&&(l+="\n","p"==t&&(l+="\n"))}var a=new n,s=new t({},a),l="",u=a.getShortEndedElements(),c=e.makeMap("script noscript style textarea video audio iframe object"," "),d=a.getBlockElements();return i=r(i,[/<!\[[^\]]+\]>/g]),o(s.parse(i)),l}function o(e){function t(e,t,n){return t||n?"\xa0":" "}return e=r(e,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,t],/<br class="Apple-interchange-newline">/g,/<br>$/i])}function a(e){var t=0;return function(){return e+t++}}return{filter:r,innerText:i,trimHtml:o,createIdGenerator:a}}),r("tinymce/pasteplugin/SmartPaste",["tinymce/util/Tools"],function(e){var t=function(e){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(e)},n=function(e){return t(e)&&/.(gif|jpe?g|png)$/.test(e)},r=function(e,t,n){return e.undoManager.extra(function(){n(e,t)},function(){e.insertContent('<img src="'+t+'">')}),!0},i=function(e,t,n){return e.undoManager.extra(function(){n(e,t)},function(){e.execCommand("mceInsertLink",!1,t)}),!0},o=function(e,n,r){return!(e.selection.isCollapsed()!==!1||!t(n))&&i(e,n,r)},a=function(e,t,i){return!!n(t)&&r(e,t,i)},s=function(e,t){return e.insertContent(t,{merge:e.settings.paste_merge_formats!==!1,paste:!0}),!0},l=function(t,n){e.each([o,a,s],function(e){return e(t,n,s)!==!0})},u=function(e,t){e.settings.smart_paste===!1?s(e,t):l(e,t)};return{isImageUrl:n,isAbsoluteUrl:t,insertContent:u}}),r("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils","tinymce/pasteplugin/SmartPaste","tinymce/util/Delay"],function(e,t,n,r,i,o){return function(a){function s(e){var t,n=a.dom;if(t=a.fire("BeforePastePreProcess",{content:e}),t=a.fire("PastePreProcess",t),e=t.content,!t.isDefaultPrevented()){if(a.hasEventListeners("PastePostProcess")&&!t.isDefaultPrevented()){var r=n.add(a.getBody(),"div",{style:"display:none"},e);t=a.fire("PastePostProcess",{node:r}),n.remove(r),e=t.node.innerHTML}t.isDefaultPrevented()||i.insertContent(a,e)}}function l(e){e=a.dom.encode(e).replace(/\r\n/g,"\n");var t,n=a.dom.getParent(a.selection.getStart(),a.dom.isBlock),i=a.settings.forced_root_block;i&&(t=a.dom.createHTML(i,a.settings.forced_root_block_attrs),t=t.substr(0,t.length-3)+">"),n&&/^(PRE|DIV)$/.test(n.nodeName)||!i?e=r.filter(e,[[/\n/g,"<br>"]]):(e=r.filter(e,[[/\n\n/g,"</p>"+t],[/^(.*<\/p>)(<p>)$/,t+"$1"],[/\n/g,"<br />"]]),e.indexOf("<p>")!=-1&&(e=t+e)),s(e)}function u(){function t(e){var t,n,i,o=e.startContainer;if(t=e.getClientRects(),t.length)return t[0];if(e.collapsed&&1==o.nodeType){for(i=o.childNodes[_.startOffset];i&&3==i.nodeType&&!i.data.length;)i=i.nextSibling;if(i)return"BR"==i.tagName&&(n=r.doc.createTextNode("\ufeff"),i.parentNode.insertBefore(n,i),e=r.createRng(),e.setStartBefore(n),e.setEndAfter(n),t=e.getClientRects(),r.remove(n)),t.length?t[0]:void 0}}var n,r=a.dom,i=a.getBody(),o=a.dom.getViewPort(a.getWin()),s=o.y,l=20;if(_=a.selection.getRng(),a.inline&&(n=a.selection.getScrollContainer(),n&&n.scrollTop>0&&(s=n.scrollTop)),_.getClientRects){var u=t(_);if(u)l=s+(u.top-r.getPos(i).y);else{l=s;var c=_.startContainer;c&&(3==c.nodeType&&c.parentNode!=i&&(c=c.parentNode),1==c.nodeType&&(l=r.getPos(c,n||i).y))}}N=r.add(a.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+l+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},A),(e.ie||e.gecko)&&r.setStyle(N,"left","rtl"==r.getStyle(i,"direction",!0)?65535:-65535),r.bind(N,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),N.focus(),a.selection.select(N,!0)}function c(){if(N){for(var e;e=a.dom.get("mcepastebin");)a.dom.remove(e),a.dom.unbind(e);_&&a.selection.setRng(_)}N=_=null}function d(){var e,t,n,r,i="";for(e=a.dom.select("div[id=mcepastebin]"),t=0;t<e.length;t++)n=e[t],n.firstChild&&"mcepastebin"==n.firstChild.id&&(n=n.firstChild),r=n.innerHTML,i!=A&&(i+=r);return i}function f(e){var t={};if(e){if(e.getData){var n=e.getData("Text");n&&n.length>0&&n.indexOf(B)==-1&&(t["text/plain"]=n)}if(e.types)for(var r=0;r<e.types.length;r++){var i=e.types[r];t[i]=e.getData(i)}}return t}function p(e){return f(e.clipboardData||a.getDoc().dataTransfer)}function h(e){return x(e,"text/html")||x(e,"text/plain")}function m(e){var t;return t=e.indexOf(","),t!==-1?e.substr(t+1):null}function g(e,t){return!e.images_dataimg_filter||e.images_dataimg_filter(t)}function v(e,t,n){e&&(a.selection.setRng(e),e=null);var r=t.result,i=m(r),o=new Image;if(o.src=r,g(a.settings,o)){var l,u,c=a.editorUpload.blobCache;u=c.findFirst(function(e){return e.base64()===i}),u?l=u:(l=c.create(D(),n,i),c.add(l)),s('<img src="'+l.blobUri()+'">')}else s('<img src="'+r+'">')}function y(e,t){function n(n){var r,i,o,a=!1;if(n)for(r=0;r<n.length;r++)if(i=n[r],/^image\/(jpeg|png|gif|bmp)$/.test(i.type)){var s=i.getAsFile?i.getAsFile():i;o=new FileReader,o.onload=v.bind(null,t,o,s),o.readAsDataURL(s),e.preventDefault(),a=!0}return a}var r=e.clipboardData||e.dataTransfer;if(a.settings.paste_data_images&&r)return n(r.items)||n(r.files)}function b(e){var t=e.clipboardData;return navigator.userAgent.indexOf("Android")!=-1&&t&&t.items&&0===t.items.length}function C(e){return t.getCaretRangeFromPoint(e.clientX,e.clientY,a.getDoc())}function x(e,t){return t in e&&e[t].length>0}function w(e){return n.metaKeyPressed(e)&&86==e.keyCode||e.shiftKey&&45==e.keyCode}function E(){function t(e,t,n){var i;return x(e,"text/html")?i=e["text/html"]:(i=d(),i==A&&(n=!0)),i=r.trimHtml(i),N&&N.firstChild&&"mcepastebin"===N.firstChild.id&&(n=!0),c(),i.length||(n=!0),n&&(i=x(e,"text/plain")&&i.indexOf("</p>")==-1?e["text/plain"]:r.innerText(i)),i==A?void(t||a.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(n?l(i):s(i))}function n(e){var t=e["text/plain"];return!!t&&0===t.indexOf("file://")}a.on("keydown",function(t){function n(e){w(e)&&!e.isDefaultPrevented()&&c()}if(w(t)&&!t.isDefaultPrevented()){if(S=t.shiftKey&&86==t.keyCode,S&&e.webkit&&navigator.userAgent.indexOf("Version/")!=-1)return;if(t.stopImmediatePropagation(),T=(new Date).getTime(),e.ie&&S)return t.preventDefault(),void a.fire("paste",{ieFake:!0});c(),u(),a.once("keyup",n),a.once("paste",function(){a.off("keyup",n)})}});var i=function(){return _||a.selection.getRng()};a.on("paste",function(n){var r=(new Date).getTime(),s=p(n),l=(new Date).getTime()-r,f=(new Date).getTime()-T-l<1e3,m="text"==k.pasteFormat||S;return S=!1,n.isDefaultPrevented()||b(n)?void c():!h(s)&&y(n,i())?void c():(f||n.preventDefault(),!e.ie||f&&!n.ieFake||(u(),a.dom.bind(N,"paste",function(e){e.stopPropagation()}),a.getDoc().execCommand("Paste",!1,null),s["text/html"]=d()),void(x(s,"text/html")?(n.preventDefault(),t(s,f,m)):o.setEditorTimeout(a,function(){t(s,f,m)},0)))}),a.on("dragstart dragend",function(e){R="dragstart"==e.type}),a.on("drop",function(e){var t,i;if(i=C(e),!e.isDefaultPrevented()&&!R&&(t=f(e.dataTransfer),(h(t)&&!n(t)||!y(e,i))&&i&&a.settings.paste_filter_drop!==!1)){var u=t["mce-internal"]||t["text/html"]||t["text/plain"];u&&(e.preventDefault(),o.setEditorTimeout(a,function(){a.undoManager.transact(function(){t["mce-internal"]&&a.execCommand("Delete"),a.selection.setRng(i),u=r.trimHtml(u),t["text/html"]?s(u):l(u)})}))}}),a.on("dragover dragend",function(e){a.settings.paste_data_images&&e.preventDefault()})}var N,_,S,k=this,T=0,R=!1,A="%MCEPASTEBIN%",B="data:text/mce-internal,",D=r.createIdGenerator("mceclip");k.pasteHtml=s,k.pasteText=l,k.pasteImageData=y,a.on("preInit",function(){E(),a.parser.addNodeFilter("img",function(t,n,r){function i(e){return e.data&&e.data.paste===!0}function o(t){t.attr("data-mce-object")||c===e.transparentSrc||t.remove()}function s(e){return 0===e.indexOf("webkit-fake-url")}function l(e){return 0===e.indexOf("data:")}if(!a.settings.paste_data_images&&i(r))for(var u=t.length;u--;){var c=t[u].attributes.map.src;c&&(s(c)?o(t[u]):!a.settings.allow_html_data_urls&&l(c)&&o(t[u]))}})})}}),r("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(e,t,n,r,i,o){function a(e){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(e)||/class="OutlineElement/.test(e)||/id="?docs\-internal\-guid\-/.test(e)}function s(t){var n,r;return r=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],t=t.replace(/^[\u00a0 ]+/,""),e.each(r,function(e){if(e.test(t))return n=!0,!1}),n}function l(e){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(e)}function u(u){var c=u.settings;u.on("BeforePastePreProcess",function(d){function f(e){function t(e){var n="";if(3===e.type)return e.value;if(e=e.firstChild)do n+=t(e);while(e=e.next);return n}function n(e,t){if(3===e.type&&t.test(e.value))return e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do if(!n(e,t))return!1;while(e=e.next);return!0}function r(e){if(e._listIgnore)return void e.remove();if(e=e.firstChild)do r(e);while(e=e.next)}function o(e,t,o){var s=e._listLevel||c;s!=c&&(s<c?a&&(a=a.parent.parent):(u=a,a=null)),a&&a.name==t?a.append(e):(u=u||a,a=new i(t,1),o>1&&a.attr("start",""+o),e.wrap(a)),e.name="li",s>c&&u&&u.lastChild.append(a),c=s,r(e),n(e,/^\u00a0+/),n(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),n(e,/^\u00a0+/)}for(var a,u,c=1,d=[],f=e.firstChild;"undefined"!=typeof f&&null!==f;)if(d.push(f),f=f.walk(),null!==f)for(;"undefined"!=typeof f&&f.parent!==e;)f=f.walk();for(var p=0;p<d.length;p++)if(e=d[p],"p"==e.name&&e.firstChild){var h=t(e);if(l(h)){o(e,"ul");continue}if(s(h)){var m=/([0-9]+)\./.exec(h),g=1;m&&(g=parseInt(m[1],10)),o(e,"ol",g);continue}if(e._listLevel){o(e,"ul",1);continue}a=null}else u=a,a=null}function p(t,n){var r,o={},a=u.dom.parseStyle(n);return e.each(a,function(e,i){switch(i){case"mso-list":r=/\w+ \w+([0-9]+)/i.exec(n),r&&(t._listLevel=parseInt(r[1],10)),/Ignore/i.test(e)&&t.firstChild&&(t._listIgnore=!0,t.firstChild._listIgnore=!0);break;case"horiz-align":i="text-align";break;case"vert-align":i="vertical-align";break;case"font-color":case"mso-foreground":i="color";break;case"mso-background":case"mso-highlight":i="background";break;case"font-weight":case"font-style":return void("normal"!=e&&(o[i]=e));case"mso-element":if(/^(comment|comment-list)$/i.test(e))return void t.remove()}return 0===i.indexOf("mso-comment")?void t.remove():void(0!==i.indexOf("mso-")&&("all"==h||m&&m[i])&&(o[i]=e))}),/(bold)/i.test(o["font-weight"])&&(delete o["font-weight"],t.wrap(new i("b",1))),/(italic)/i.test(o["font-style"])&&(delete o["font-style"],t.wrap(new i("i",1))),o=u.dom.serializeStyle(o,t.name),o?o:null}var h,m,g=d.content;if(g=g.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),g=g.replace(/<br class="?Apple-interchange-newline"?>/gi,""),h=c.paste_retain_style_properties,h&&(m=e.makeMap(h.split(/[, ]/))),c.paste_enable_default_filters!==!1&&a(d.content)){d.wordContent=!0,g=o.filter(g,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return t.length>0?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var v=c.paste_word_valid_elements;v||(v="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var y=new n({valid_elements:v,valid_children:"-li[p]"});e.each(y.elements,function(e){e.attributes["class"]||(e.attributes["class"]={},e.attributesOrder.push("class")),e.attributes.style||(e.attributes.style={},e.attributesOrder.push("style"))});var b=new t({},y);b.addAttributeFilter("style",function(e){for(var t,n=e.length;n--;)t=e[n],t.attr("style",p(t,t.attr("style"))),"span"==t.name&&t.parent&&!t.attributes.length&&t.unwrap()}),b.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)t=e[r],n=t.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&t.remove(),t.attr("class",null)}),b.addNodeFilter("del",function(e){for(var t=e.length;t--;)e[t].remove()}),b.addNodeFilter("a",function(e){for(var t,n,r,i=e.length;i--;)if(t=e[i],n=t.attr("href"),r=t.attr("name"),n&&n.indexOf("#_msocom_")!=-1)t.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1],n&&(n="#"+n)),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){t.unwrap();continue}t.attr({href:n,name:r})}else t.unwrap()});var C=b.parse(g);c.paste_convert_word_fake_lists!==!1&&f(C),d.content=new r({validate:c.validate},y).serialize(C)}})}return u.isWordContent=a,u}),r("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(e,t,n,r){return function(i){function o(e){i.on("BeforePastePreProcess",function(t){t.content=e(t.content)})}function a(e){i.on("PastePostProcess",function(t){e(t.node)})}function s(e){if(!n.isWordContent(e))return e;var o=[];t.each(i.schema.getBlockElements(),function(e,t){o.push(t)});var a=new RegExp("(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?("+o.join("|")+")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*","g");return e=r.filter(e,[[a,"$1"]]),e=r.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function l(e){if(n.isWordContent(e))return e;var t=i.settings.paste_webkit_styles;if(i.settings.paste_remove_styles_if_webkit===!1||"all"==t)return e;if(t&&(t=t.split(/[, ]/)),t){var r=i.dom,o=i.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(e,n,i,a){var s=r.parseStyle(i,"span"),l={};if("none"===t)return n+a;for(var u=0;u<t.length;u++){var c=s[t[u]],d=r.getStyle(o,t[u],!0);/color/.test(t[u])&&(c=r.toHex(c),d=r.toHex(d)),d!=c&&(l[t[u]]=c)}return l=r.serializeStyle(l,"span"),l?n+' style="'+l+'"'+a:n+a})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(e,t,n,r){return t+' style="'+n+'"'+r})}function u(e){i.$("a",e).find("font,u").each(function(e,t){i.dom.remove(t,!0)})}e.webkit&&o(l),e.ie&&(o(s),a(u))}}),r("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(e,t,n,r){var i;e.add("paste",function(o){function a(){return i||o.settings.paste_plaintext_inform===!1}function s(){if("text"==u.pasteFormat)u.pasteFormat="html",o.fire("PastePlainTextToggle",{state:!1});else if(u.pasteFormat="text",o.fire("PastePlainTextToggle",{state:!0}),!a()){var e=o.translate("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.");o.notificationManager.open({text:e,type:"info"}),i=!0}o.focus()}function l(){var e=this;e.active("text"===u.pasteFormat),o.on("PastePlainTextToggle",function(t){e.active(t.state)})}var u,c=this,d=o.settings;return/(^|[ ,])powerpaste([, ]|$)/.test(d.plugins)&&e.get("powerpaste")?void("undefined"!=typeof console&&console.log&&console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option.")):(c.clipboard=u=new t(o),c.quirks=new r(o),c.wordFilter=new n(o),o.settings.paste_as_text&&(c.clipboard.pasteFormat="text"),d.paste_preprocess&&o.on("PastePreProcess",function(e){d.paste_preprocess.call(c,c,e)}),d.paste_postprocess&&o.on("PastePostProcess",function(e){d.paste_postprocess.call(c,c,e)}),o.addCommand("mceInsertClipboardContent",function(e,t){t.content&&c.clipboard.pasteHtml(t.content),t.text&&c.clipboard.pasteText(t.text)}),o.settings.paste_block_drop&&o.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),o.settings.paste_data_images||o.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&t.files.length>0&&e.preventDefault()}),o.addCommand("mceTogglePlainTextPaste",s),o.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:s,onPostRender:l}),void o.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:u.pasteFormat,onclick:s,onPostRender:l}))})}),o(["tinymce/pasteplugin/Utils"])}(window);!function(){var e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new Array(a),l=0;l<a;++l)s[l]=r(i[l]);var u=o.apply(null,s);if(void 0===u)throw"module ["+t+"] returned undefined";n.instance=u},n=function(t,n,r){if("string"!=typeof t)throw"module id must be a string";if(void 0===n)throw"no dependencies for "+t;if(void 0===r)throw"no definition function for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var r=e[n];if(void 0===r)throw"module ["+n+"] was undefined";return void 0===r.instance&&t(n),r.instance},i=function(e,t){for(var n=e.length,i=new Array(n),o=0;o<n;++o)i.push(r(e[o]));t.apply(null,t)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var a=n,s=function(e,t){a(e,[],function(){return t})};s("1",tinymce.PluginManager),s("6",tinymce.util.Delay),s("e",tinymce.util.Tools),s("9",tinymce.html.SaxParser),s("a",tinymce.html.Schema),s("b",tinymce.dom.DOMUtils.DOM),a("h",[],function(){var e=function(e,t){if(e)for(var n=0;n<e.length;n++)if(t.indexOf(e[n].filter)!==-1)return e[n]};return{getVideoScriptMatch:e}}),a("c",[],function(){var e=function(e){return e.replace(/px$/,"")},t=function(e){return/^[0-9.]+$/.test(e)?e+"px":e},n=function(t){return function(n){return n?e(n.style[t]):""}},r=function(e){return function(n,r){n&&(n.style[e]=t(r))}};return{getMaxWidth:n("maxWidth"),getMaxHeight:n("maxHeight"),setMaxWidth:r("maxWidth"),setMaxHeight:r("maxHeight")}}),a("7",["e","9","a","b","h","c"],function(e,t,n,r,i,o){var a=function(e){return r.getAttrib(e,"data-ephox-embed-iri")},s=function(e){var t=r.createFragment(e);return""!==a(t.firstChild)},l=function(n,r){var o={};return new t({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(t,r){if(o.source1||"param"!==t||(o.source1=r.map.movie),"iframe"!==t&&"object"!==t&&"embed"!==t&&"video"!==t&&"audio"!==t||(o.type||(o.type=t),o=e.extend(r.map,o)),"script"===t){var a=i.getVideoScriptMatch(n,r.map.src);if(!a)return;o={type:"script",source1:r.map.src,width:a.width,height:a.height}}"source"===t&&(o.source1?o.source2||(o.source2=r.map.src):o.source1=r.map.src),"img"!==t||o.poster||(o.poster=r.map.src)}}).parse(r),o.source1=o.source1||o.src||o.data,o.source2=o.source2||"",o.poster=o.poster||"",o},u=function(e){var t=r.createFragment(e),n=t.firstChild;return{type:"ephox-embed-iri",source1:a(n),source2:"",poster:"",width:o.getMaxWidth(n),height:o.getMaxHeight(n)}},c=function(e,t){return s(t)?u(t):l(e,t)};return{htmlToData:c}}),s("8",tinymce.html.Writer),a("4",["8","9","a","b","c"],function(e,t,n,r,i){var o=function(e,t){var n,r,i,o;for(n in t)if(i=""+t[n],e.map[n])for(r=e.length;r--;)o=e[r],o.name===n&&(i?(e.map[n]=i,o.value=i):(delete e.map[n],e.splice(r,1)));else i&&(e.push({name:n,value:i}),e.map[n]=i)},a=function(n){var r=new e,i=new t(r);return i.parse(n),r.getContent()},s=function(r,i,a){var s,l=new e,u=0;return new t({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(e){l.comment(e)},cdata:function(e){l.cdata(e)},text:function(e,t){l.text(e,t)},start:function(e,t,n){switch(e){case"video":case"object":case"embed":case"img":case"iframe":o(t,{width:i.width,height:i.height})}if(a)switch(e){case"video":o(t,{poster:i.poster,src:""}),i.source2&&o(t,{src:""});break;case"iframe":o(t,{src:i.source1});break;case"source":if(u++,u<=2&&(o(t,{src:i["source"+u],type:i["source"+u+"mime"]}),!i["source"+u]))return;break;case"img":if(!i.poster)return;s=!0}l.start(e,t,n)},end:function(e){if("video"===e&&a)for(var t=1;t<=2;t++)if(i["source"+t]){var n=[];n.map={},u<t&&(o(n,{src:i["source"+t],type:i["source"+t+"mime"]}),l.start("source",n,!0))}if(i.poster&&"object"===e&&a&&!s){var r=[];r.map={},o(r,{src:i.poster,width:i.width,height:i.height}),l.start("img",r,!0)}l.end(e)}},new n({})).parse(r),l.getContent()},l=function(e){var t=r.createFragment(e);return""!==r.getAttrib(t.firstChild,"data-ephox-embed-iri")},u=function(e,t){var n=r.createFragment(e),o=n.firstChild;return i.setMaxWidth(o,t.width),i.setMaxHeight(o,t.height),a(o.outerHTML)},c=function(e,t,n){return l(e)?u(e,t):s(e,t,n)};return{updateHtml:c}}),a("l",[],function(){var e=function(e){var t={mp3:"audio/mpeg",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"},n=e.toLowerCase().split(".").pop(),r=t[n];return r?r:""};return{guess:e}}),a("m",[],function(){var e=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\-_]+(?:\?.+)?)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowfullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&byline=0",allowfullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}];return{urlPatterns:e}}),a("j",["l","7","m","h","4","e"],function(e,t,n,r,i,o){var a=function(a,s){var l="",u=o.extend({},s);if(!u.source1&&(o.extend(u,t.htmlToData(a.settings.media_scripts,u.embed)),!u.source1))return"";if(u.source2||(u.source2=""),u.poster||(u.poster=""),u.source1=a.convertURL(u.source1,"source"),u.source2=a.convertURL(u.source2,"source"),u.source1mime=e.guess(u.source1),u.source2mime=e.guess(u.source2),u.poster=a.convertURL(u.poster,"poster"),o.each(n.urlPatterns,function(e){var t,n,r=e.regex.exec(u.source1);if(r){for(n=e.url,t=0;r[t];t++)n=n.replace("$"+t,function(){return r[t]});u.source1=n,u.type=e.type,u.allowFullscreen=e.allowFullscreen,u.width=u.width||e.w,u.height=u.height||e.h}}),u.embed)l=i.updateHtml(u.embed,u,!0);else{var c=r.getVideoScriptMatch(a.settings.media_scripts,u.source1);if(c&&(u.type="script",u.width=c.width,u.height=c.height),u.width=u.width||300,u.height=u.height||150,o.each(u,function(e,t){u[t]=a.dom.encode(e)}),"iframe"===u.type){var d=u.allowFullscreen?' allowFullscreen="1"':"";l+='<iframe src="'+u.source1+'" width="'+u.width+'" height="'+u.height+'"'+d+"></iframe>"}else"application/x-shockwave-flash"===u.source1mime?(l+='<object data="'+u.source1+'" width="'+u.width+'" height="'+u.height+'" type="application/x-shockwave-flash">',u.poster&&(l+='<img src="'+u.poster+'" width="'+u.width+'" height="'+u.height+'" />'),l+="</object>"):u.source1mime.indexOf("audio")!==-1?a.settings.audio_template_callback?l=a.settings.audio_template_callback(u):l+='<audio controls="controls" src="'+u.source1+'">'+(u.source2?'\n<source src="'+u.source2+'"'+(u.source2mime?' type="'+u.source2mime+'"':"")+" />\n":"")+"</audio>":"script"===u.type?l+='<script src="'+u.source1+'"></script>':l=a.settings.video_template_callback?a.settings.video_template_callback(u):'<video width="'+u.width+'" height="'+u.height+'"'+(u.poster?' poster="'+u.poster+'"':"")+' controls="controls">\n<source src="'+u.source1+'"'+(u.source1mime?' type="'+u.source1mime+'"':"")+" />\n"+(u.source2?'<source src="'+u.source2+'"'+(u.source2mime?' type="'+u.source2mime+'"':"")+" />\n":"")+"</video>"}return l};return{dataToHtml:a}}),s("k",tinymce.util.Promise),a("d",["j","k"],function(e,t){var n=function(e,n,r){var i={};return new t(function(t,o){var a=function(r){return r.html&&(i[e.source1]=r),t({url:e.source1,html:r.html?r.html:n(e)})};i[e.source1]?a(i[e.source1]):r({url:e.source1},a,o)})},r=function(e,n){return new t(function(t){t({html:n(e),url:e.source1})})},i=function(t){return function(n){return e.dataToHtml(t,n)}},o=function(e,t){var o=e.settings.media_url_resolver;return o?n(t,i(e),o):r(t,i(e))};return{getEmbedHtml:o}}),s("f",tinymce.Env),a("g",[],function(){var e=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},t=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],i=e.find("#constrain")[0];n&&r&&i&&t(n,r,i.checked())},n=function(t,n,r){var i=t.state.get("oldVal"),o=n.state.get("oldVal"),a=t.value(),s=n.value();r&&i&&o&&a&&s&&(a!==i?(s=Math.round(a/i*s),isNaN(s)||n.value(s)):(a=Math.round(s/o*a),isNaN(a)||t.value(a))),e(t,n)},r=function(n){t(n,e)},i=function(e){t(e,n)},o=function(e){var t=function(){e(function(e){i(e)})};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}};return{createUi:o,syncSize:r,updateSize:i}}),a("2",["6","7","4","d","c","e","f","g"],function(e,t,n,r,i,o,a,s){var l=a.ie&&a.ie<=8?"onChange":"onInput",u=function(e){return function(t){var n=t&&t.msg?"Media embed handler error: "+t.msg:"Media embed handler threw unknown error.";e.notificationManager.open({type:"error",text:n})}},c=function(e){var n=e.selection.getNode(),r=n.getAttribute("data-ephox-embed-iri");return r?{source1:r,"data-ephox-embed-iri":r,width:i.getMaxWidth(n),height:i.getMaxHeight(n)}:n.getAttribute("data-mce-object")?t.htmlToData(e.settings.media_scripts,e.serializer.serialize(n,{selection:!0})):{}},d=function(e){var t=e.selection.getNode();if(t.getAttribute("data-mce-object")||t.getAttribute("data-ephox-embed-iri"))return e.selection.getContent()},f=function(e,n){return function(r){var i=r.html,a=e.find("#embed")[0],l=o.extend(t.htmlToData(n.settings.media_scripts,i),{source1:r.url});e.fromJSON(l),a&&(a.value(i),s.updateSize(e))}},p=function(e,t){var n,r,i=e.dom.select("img[data-mce-object]");for(n=0;n<t.length;n++)for(r=i.length-1;r>=0;r--)t[n]===i[r]&&i.splice(r,1);e.selection.select(i[0])},h=function(e,t){var n=e.dom.select("img[data-mce-object]");e.insertContent(t),p(e,n),e.nodeChanged()},m=function(e,t){var i=e.toJSON();i.embed=n.updateHtml(i.embed,i),i.embed?h(t,i.embed):r.getEmbedHtml(t,i).then(function(e){h(t,e.html)})["catch"](u(t))},g=function(e,t){o.each(t,function(t,n){e.find("#"+n).value(t)})},v=function(e){var i,a,p=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onpaste:function(){setTimeout(function(){r.getEmbedHtml(e,i.toJSON()).then(f(i,e))["catch"](u(e))},1)},onchange:function(t){r.getEmbedHtml(e,i.toJSON()).then(f(i,e))["catch"](u(e)),g(i,t.meta)},onbeforecall:function(e){e.meta=i.toJSON()}}],h=[],v=function(e){e(i),a=i.toJSON(),i.find("#embed").value(n.updateHtml(a.embed,a))};if(e.settings.media_alt_source!==!1&&h.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),e.settings.media_poster!==!1&&h.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),e.settings.media_dimensions!==!1){var y=s.createUi(v);p.push(y)}a=c(e);var b={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:d(e),multiline:!0,rows:5,label:"Source"},C=function(){a=o.extend({},t.htmlToData(e.settings.media_scripts,this.value())),this.parent().parent().fromJSON(a)};b[l]=C,i=e.windowManager.open({title:"Insert/edit media",data:a,bodyType:"tabpanel",body:[{title:"General",type:"form",items:p},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},b]},{title:"Advanced",type:"form",items:h}],onSubmit:function(){s.updateSize(i),m(i,e)}}),s.syncSize(i)};return{showDialog:v}}),a("3",["e","8","9","a"],function(e,t,n,r){var i=function(e,i){if(e.settings.media_filter_html===!1)return i;var o,a=new t;return new n({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(t,n,r){if(o=!0,"script"!==t&&"noscript"!==t){for(var i=0;i<n.length;i++){if(0===n[i].name.indexOf("on"))return;"style"===n[i].name&&(n[i].value=e.dom.serializeStyle(e.dom.parseStyle(n[i].value),t))}a.start(t,n,r),o=!1}},end:function(e){o||a.end(e)}},new r({})).parse(i),a.getContent()};return{sanitize:i}}),s("i",tinymce.html.Node),a("5",["3","h","i","f"],function(e,t,n,r){var i=function(e,t){var i,o=t.name;return i=new n("img",1),i.shortEnded=!0,a(e,t,i),i.attr({width:t.attr("width")||"300",height:t.attr("height")||("audio"===o?"30":"150"),style:t.attr("style"),src:r.transparentSrc,"data-mce-object":o,"class":"mce-object mce-object-"+o}),i},o=function(e,t){var r,i,o,s=t.name;return r=new n("span",1),r.attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":s,"class":"mce-preview-object mce-object-"+s}),a(e,t,r),i=new n(s,1),i.attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),width:t.attr("width")||"300",height:t.attr("height")||("audio"===s?"30":"150"),frameborder:"0"}),o=new n("span",1),o.attr("class","mce-shim"),r.append(i),r.append(o),r},a=function(t,n,r){var i,o,a,s,l;for(a=n.attributes,s=a.length;s--;)i=a[s].name,o=a[s].value,"width"!==i&&"height"!==i&&"style"!==i&&("data"!==i&&"src"!==i||(o=t.convertURL(o,i)),r.attr("data-mce-p-"+i,o));l=n.firstChild&&n.firstChild.value,l&&(r.attr("data-mce-html",escape(e.sanitize(t,l))),r.firstChild=null)},s=function(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri"))return!0;return!1},l=function(e){return function(n){for(var a,l,u=n.length;u--;)a=n[u],a.parent&&(a.parent.attr("data-mce-object")||("script"!==a.name||(l=t.getVideoScriptMatch(e.settings.media_scripts,a.attr("src"))))&&(l&&(l.width&&a.attr("width",l.width.toString()),l.height&&a.attr("height",l.height.toString())),"iframe"===a.name&&e.settings.media_live_embeds!==!1&&r.ceFalse?s(a)||a.replace(o(e,a)):s(a)||a.replace(i(e,a))))}};return{createPreviewIframeNode:o,createPlaceholderNode:i,placeHolderConverter:l}}),a("0",["1","2","3","4","5"],function(e,t,n,r,i){var o=function(e){e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),e.on("preInit",function(){var t=e.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var r=e.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),e.parser.addNodeFilter("iframe,video,audio,object,embed,script",i.placeHolderConverter(e)),e.serializer.addAttributeFilter("data-mce-object",function(t,r){for(var i,o,a,s,l,u,c,d,f=t.length;f--;)if(i=t[f],i.parent){for(c=i.attr(r),o=new tinymce.html.Node(c,1),"audio"!==c&&"script"!==c&&(d=i.attr("class"),d&&d.indexOf("mce-preview-object")!==-1?o.attr({width:i.firstChild.attr("width"),height:i.firstChild.attr("height")}):o.attr({width:i.attr("width"),height:i.attr("height")})),o.attr({style:i.attr("style")}),s=i.attributes,a=s.length;a--;){var p=s[a].name;0===p.indexOf("data-mce-p-")&&o.attr(p.substr(11),s[a].value)}"script"===c&&o.attr("type","text/javascript"),l=i.attr("data-mce-html"),l&&(u=new tinymce.html.Node("#text",3),u.raw=!0,u.value=n.sanitize(e,unescape(l)),o.append(u)),i.replace(o)}})}),e.on("click keyup",function(){var t=e.selection.getNode();t&&e.dom.hasClass(t,"mce-preview-object")&&e.dom.getAttrib(t,"data-mce-selected")&&t.setAttribute("data-mce-selected","2")}),e.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),e.on("objectResized",function(e){var t,n=e.target;n.getAttribute("data-mce-object")&&(t=n.getAttribute("data-mce-html"),t&&(t=unescape(t),n.setAttribute("data-mce-html",escape(r.updateHtml(t,{width:e.width,height:e.height})))))}),this.showDialog=function(){t.showDialog(e)},e.addButton("media",{tooltip:"Insert/edit media",onclick:this.showDialog,stateSelector:["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"]}),e.addMenuItem("media",{icon:"media",text:"Media",onclick:this.showDialog,context:"insert",prependToContext:!0}),e.on("setContent",function(){e.$("span.mce-preview-object").each(function(t,n){var r=e.$(n);0===r.find("span.mce-shim",n).length&&r.append('<span class="mce-shim"></span>')})}),e.addCommand("mceMedia",this.showDialog)};return e.add("media",o),function(){}}),r("0")()}();!function(){var e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new Array(a),l=0;l<a;++l)s[l]=r(i[l]);var u=o.apply(null,s);if(void 0===u)throw"module ["+t+"] returned undefined";n.instance=u},n=function(t,n,r){if("string"!=typeof t)throw"module id must be a string";if(void 0===n)throw"no dependencies for "+t;if(void 0===r)throw"no definition function for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var r=e[n];if(void 0===r)throw"module ["+n+"] was undefined";return void 0===r.instance&&t(n),r.instance},i=function(e,t){for(var n=e.length,i=new Array(n),o=0;o<n;++o)i.push(r(e[o]));t.apply(null,t)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var a=n,s=function(e,t){a(e,[],function(){return t})};s("1",tinymce.PluginManager),s("2",tinymce.util.Tools),s("3",tinymce.util.VK),a("4",[],function(){var e=function(e){return e&&3===e.nodeType},t=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},n=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},r=function(e){return e&&"BR"===e.nodeName},i=function(e){return e.parentNode.firstChild===e},o=function(e){return e.parentNode.lastChild===e},a=function(e,t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]},s=function(e,t){return!!r(t)&&!(!e.isBlock(t.nextSibling)||r(t.previousSibling))},l=function(e,t,n){var r=e.isEmpty(t);return!(n&&e.select("span[data-mce-type=bookmark]",t).length>0)&&r},u=function(e,t){return e.isChildOf(t,e.getRoot())};return{isTextNode:e,isListNode:t,isListItemNode:n,isBr:r,isFirstChild:i,isLastChild:o,isTextBlock:a,isBogusBr:s,isEmpty:l,isChildOfBody:u}}),s("9",tinymce.dom.TreeWalker),s("a",tinymce.dom.RangeUtils),a("b",["2","4"],function(e,t){var n=function(n){return e.grep(n.selection.getSelectedBlocks(),function(e){return t.isListItemNode(e)})};return{getSelectedListItems:n}}),s("h",tinymce.dom.DOMUtils.DOM),a("d",["a","4"],function(e,t){var n=function(n,r){var i=e.getNode(n,r);if(t.isListItemNode(n)&&t.isTextNode(i)){var o=r>=n.childNodes.length?i.data.length:0;return{container:i,offset:o}}return{container:n,offset:r}},r=function(e){var t=e.cloneRange(),r=n(e.startContainer,e.startOffset);t.setStart(r.container,r.offset);var i=n(e.endContainer,e.endOffset);return t.setEnd(i.container,i.offset),t};return{getNormalizedEndPoint:n,normalizeRange:r}}),a("c",["h","4","d"],function(e,t,n){var r=function(t){var n={},r=function(r){var i,o,a;o=t[r?"startContainer":"endContainer"],a=t[r?"startOffset":"endOffset"],1===o.nodeType&&(i=e.create("span",{"data-mce-type":"bookmark"}),o.hasChildNodes()?(a=Math.min(a,o.childNodes.length-1),r?o.insertBefore(i,o.childNodes[a]):e.insertAfter(i,o.childNodes[a])):o.appendChild(i),o=i,a=0),n[r?"startContainer":"endContainer"]=o,n[r?"startOffset":"endOffset"]=a};return r(!0),t.collapsed||r(),n},i=function(t){function r(n){var r,i,o,a=function(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t===e)return n;1===t.nodeType&&"bookmark"===t.getAttribute("data-mce-type")||n++,t=t.nextSibling}return-1};r=o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],r&&(1===r.nodeType&&(i=a(r),r=r.parentNode,e.remove(o)),t[n?"startContainer":"endContainer"]=r,t[n?"startOffset":"endOffset"]=i)}r(!0),r();var i=e.createRng();return i.setStart(t.startContainer,t.startOffset),t.endContainer&&i.setEnd(t.endContainer,t.endOffset),n.normalizeRange(i)};return{createBookmark:r,resolveBookmark:i}}),a("e",["h","2","4"],function(e,t,n){var r=function(t,r){var i,o=r.parentNode;"LI"===o.nodeName&&o.firstChild===r&&(i=o.previousSibling,i&&"LI"===i.nodeName?(i.appendChild(r),n.isEmpty(t,o)&&e.remove(o)):e.setStyle(o,"listStyleType","none")),n.isListNode(o)&&(i=o.previousSibling,i&&"LI"===i.nodeName&&i.appendChild(r))},i=function(e,n){t.each(t.grep(e.select("ol,ul",n)),function(t){r(e,t)})};return{normalizeList:r,normalizeLists:i}}),s("f",tinymce.dom.BookmarkManager),s("j",tinymce.Env),a("i",["h","j"],function(e,t){var n=function(n,r,i){var o,a,s,l=e.createFragment(),u=n.schema.getBlockElements();if(n.settings.forced_root_block&&(i=i||n.settings.forced_root_block),i&&(a=e.create(i),a.tagName===n.settings.forced_root_block&&e.setAttribs(a,n.settings.forced_root_block_attrs),l.appendChild(a)),r)for(;o=r.firstChild;){var c=o.nodeName;s||"SPAN"===c&&"bookmark"===o.getAttribute("data-mce-type")||(s=!0),u[c]?(l.appendChild(o),a=null):i?(a||(a=e.create(i),l.appendChild(a)),a.appendChild(o)):l.appendChild(o)}return n.settings.forced_root_block?s||t.ie&&!(t.ie>10)||a.appendChild(e.create("br",{"data-mce-bogus":"1"})):l.appendChild(e.create("br")),l};return{createNewTextBlock:n}}),a("g",["h","2","i","4"],function(e,t,n,r){var i=function(i,o,a,s){var l,u,c,d,f=function(n){t.each(c,function(e){n.parentNode.insertBefore(e,a.parentNode)}),e.remove(n)};for(c=e.select('span[data-mce-type="bookmark"]',o),s=s||n.createNewTextBlock(i,a),l=e.createRng(),l.setStartAfter(a),l.setEndAfter(o),u=l.extractContents(),d=u.firstChild;d;d=d.firstChild)if("LI"===d.nodeName&&i.dom.isEmpty(d)){e.remove(d);break}i.dom.isEmpty(u)||e.insertAfter(u,o),e.insertAfter(s,o),r.isEmpty(i.dom,a.parentNode)&&f(a.parentNode),e.remove(a),r.isEmpty(i.dom,o)&&e.remove(o)};return{splitList:i}}),a("7",["h","4","c","b","g","e","i"],function(e,t,n,r,i,o,a){var s=function(n,r){t.isEmpty(n,r)&&e.remove(r)},l=function(n,r){var l,u=r.parentNode,c=u.parentNode;return u===n.getBody()||("DD"===r.nodeName?(e.rename(r,"DT"),!0):t.isFirstChild(r)&&t.isLastChild(r)?("LI"===c.nodeName?(e.insertAfter(r,c),s(n.dom,c),e.remove(u)):t.isListNode(c)?e.remove(u,!0):(c.insertBefore(a.createNewTextBlock(n,r),u),e.remove(u)),!0):t.isFirstChild(r)?("LI"===c.nodeName?(e.insertAfter(r,c),r.appendChild(u),s(n.dom,c)):t.isListNode(c)?c.insertBefore(r,u):(c.insertBefore(a.createNewTextBlock(n,r),u),e.remove(r)),!0):t.isLastChild(r)?("LI"===c.nodeName?e.insertAfter(r,c):t.isListNode(c)?e.insertAfter(r,u):(e.insertAfter(a.createNewTextBlock(n,r),u),e.remove(r)),!0):("LI"===c.nodeName?(u=c,l=a.createNewTextBlock(n,r,"LI")):l=t.isListNode(c)?a.createNewTextBlock(n,r,"LI"):a.createNewTextBlock(n,r),i.splitList(n,u,r,l),o.normalizeLists(n.dom,u.parentNode),!0))},u=function(e){var t=r.getSelectedListItems(e);if(t.length){var i,o,a=n.createBookmark(e.selection.getRng(!0)),s=e.getBody();for(i=t.length;i--;)for(var u=t[i].parentNode;u&&u!==s;){for(o=t.length;o--;)if(t[o]===u){t.splice(i,1);break}u=u.parentNode}for(i=0;i<t.length&&(l(e,t[i])||0!==i);i++);return e.selection.setRng(n.resolveBookmark(a)),e.nodeChanged(),!0}};return{outdent:l,outdentSelection:u}}),a("8",["2","f","b","4","c","g","e","7"],function(e,t,n,r,i,o,a,s){var l=function(e,t,n){var r=n["list-style-type"]?n["list-style-type"]:null;e.setStyle(t,"list-style-type",r)},u=function(t,n){e.each(n,function(e,n){t.setAttribute(n,e)})},c=function(t,n,r){u(n,r["list-attributes"]),e.each(t.select("li",n),function(e){u(e,r["list-item-attributes"])})},d=function(e,t,n){l(e,t,n),c(e,t,n)},f=function(e,t,n){var i,o,a=e.getBody();for(i=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],1===i.nodeType&&(i=i.childNodes[Math.min(o,i.childNodes.length-1)]||i);i.parentNode!==a;){if(r.isTextBlock(e,i))return i;if(/^(TD|TH)$/.test(i.parentNode.nodeName))return i;i=i.parentNode}return i},p=function(n,i){for(var o,a=[],s=n.getBody(),l=n.dom,u=f(n,i,!0),c=f(n,i,!1),d=[],p=u;p&&(d.push(p),p!==c);p=p.nextSibling);return e.each(d,function(e){if(r.isTextBlock(n,e))return a.push(e),void(o=null);if(l.isBlock(e)||r.isBr(e))return r.isBr(e)&&l.remove(e),void(o=null);var i=e.nextSibling;return t.isBookmarkNode(e)&&(r.isTextBlock(n,i)||!i&&e.parentNode===s)?void(o=null):(o||(o=l.create("p"),e.parentNode.insertBefore(o,e),a.push(o)),void o.appendChild(e))}),a},h=function(t,n,o){var a,s=t.selection.getRng(!0),l="LI",u=t.dom;o=o?o:{},"false"!==u.getContentEditable(t.selection.getNode())&&(n=n.toUpperCase(),"DL"===n&&(l="DT"),a=i.createBookmark(s),e.each(p(t,s),function(e){var i,a,s=function(e){var t=u.getStyle(e,"list-style-type"),n=o?o["list-style-type"]:"";return n=null===n?"":n,t===n};a=e.previousSibling,a&&r.isListNode(a)&&a.nodeName===n&&s(a)?(i=a,e=u.rename(e,l),a.appendChild(e)):(i=u.create(n),e.parentNode.insertBefore(i,e),i.appendChild(e),e=u.rename(e,l)),d(u,i,o),C(t.dom,i)}),t.selection.setRng(i.resolveBookmark(a)))},m=function(t){var l=i.createBookmark(t.selection.getRng(!0)),u=t.getBody(),c=n.getSelectedListItems(t),d=e.grep(c,function(e){return t.dom.isEmpty(e)});c=e.grep(c,function(e){return!t.dom.isEmpty(e)}),e.each(d,function(e){if(r.isEmpty(t.dom,e))return void s.outdent(t,e)}),e.each(c,function(e){var n,i;if(e.parentNode!==t.getBody()){for(n=e;n&&n!==u;n=n.parentNode)r.isListNode(n)&&(i=n);o.splitList(t,i,e),a.normalizeLists(t.dom,i.parentNode)}}),t.selection.setRng(i.resolveBookmark(l))},g=function(e,t){return e&&t&&r.isListNode(e)&&e.nodeName===t.nodeName},v=function(e,t,n){var r=e.getStyle(t,"list-style-type",!0),i=e.getStyle(n,"list-style-type",!0);return r===i},y=function(e,t){return e.className===t.className},b=function(e,t,n){return g(t,n)&&v(e,t,n)&&y(t,n)},C=function(e,t){var n,r;if(n=t.nextSibling,b(e,t,n)){for(;r=n.firstChild;)t.appendChild(r);e.remove(n)}if(n=t.previousSibling,b(e,t,n)){for(;r=n.lastChild;)t.insertBefore(r,t.firstChild);e.remove(n)}},x=function(e,t,n){var r=e.dom.getParent(e.selection.getStart(),"OL,UL,DL");if(n=n?n:{},r!==e.getBody())if(r)if(r.nodeName===t)m(e,t);else{var o=i.createBookmark(e.selection.getRng(!0));d(e.dom,r,n),C(e.dom,e.dom.rename(r,t)),e.selection.setRng(i.resolveBookmark(o))}else h(e,t,n)};return{toggleList:x,removeList:m,mergeWithAdjacentLists:C}}),a("5",["9","a","3","b","4","c","d","e","8"],function(e,t,n,r,i,o,a,s,l){var u=function(n,r,o){var a,s,l=r.startContainer,u=r.startOffset;if(3===l.nodeType&&(o?u<l.data.length:u>0))return l;for(a=n.schema.getNonEmptyElements(),1===l.nodeType&&(l=t.getNode(l,u)),s=new e(l,n.getBody()),o&&i.isBogusBr(n.dom,l)&&s.next();l=s[o?"next":"prev2"]();){if("LI"===l.nodeName&&!l.hasChildNodes())return l;if(a[l.nodeName])return l;if(3===l.nodeType&&l.data.length>0)return l}},c=function(e,t,n){var r,o,a=t.parentNode;if(i.isChildOfBody(e,t)&&i.isChildOfBody(e,n)){if(i.isListNode(n.lastChild)&&(o=n.lastChild),a===n.lastChild&&i.isBr(a.previousSibling)&&e.remove(a.previousSibling),r=n.lastChild,r&&i.isBr(r)&&t.hasChildNodes()&&e.remove(r),i.isEmpty(e,n,!0)&&e.$(n).empty(),!i.isEmpty(e,t,!0))for(;r=t.firstChild;)n.appendChild(r);o&&n.appendChild(o),e.remove(t),i.isEmpty(e,a)&&a!==e.getRoot()&&e.remove(a)}},d=function(e,t){var n,r,s,d=e.dom,f=e.selection,p=d.getParent(f.getStart(),"LI");if(p){if(n=p.parentNode,n===e.getBody()&&i.isEmpty(d,n))return!0;if(r=a.normalizeRange(f.getRng(!0)),s=d.getParent(u(e,r,t),"LI"),s&&s!==p){var h=o.createBookmark(r);return t?c(d,s,p):c(d,p,s),e.selection.setRng(o.resolveBookmark(h)),!0}if(!s&&!t&&l.removeList(e,n.nodeName))return!0}return!1},f=function(e,t){var n=e.dom,r=n.getParent(e.selection.getStart(),n.isBlock);if(r&&n.isEmpty(r)){var i=a.normalizeRange(e.selection.getRng(!0)),o=n.getParent(u(e,i,t),"LI");if(o)return e.undoManager.transact(function(){n.remove(r),l.mergeWithAdjacentLists(n,o.parentNode),e.selection.select(o,!0),e.selection.collapse(t)}),!0}return!1},p=function(e,t){return d(e,t)||f(e,t)},h=function(e){var t=e.dom.getParent(e.selection.getStart(),"LI,DT,DD");return!!(t||r.getSelectedListItems(e).length>0)&&(e.undoManager.transact(function(){e.execCommand("Delete"),s.normalizeLists(e.dom,e.getBody())}),!0)},m=function(e,t){return e.selection.isCollapsed()?p(e,t):h(e)},g=function(e){e.on("keydown",function(t){t.keyCode===n.BACKSPACE?m(e,!1)&&t.preventDefault():t.keyCode===n.DELETE&&m(e,!0)&&t.preventDefault()})};return{setup:g,backspaceDelete:m}}),a("6",["h","4","c","b"],function(e,t,n,r){var i=function(n,r){var i;if(t.isListNode(n)){for(;i=n.firstChild;)r.appendChild(i);e.remove(n)}},o=function(n){var r,o,a;return"DT"===n.nodeName?(e.rename(n,"DD"),!0):(r=n.previousSibling,r&&t.isListNode(r)?(r.appendChild(n),!0):r&&"LI"===r.nodeName&&t.isListNode(r.lastChild)?(r.lastChild.appendChild(n),i(n.lastChild,r.lastChild),!0):(r=n.nextSibling,r&&t.isListNode(r)?(r.insertBefore(n,r.firstChild),!0):(r=n.previousSibling,!(!r||"LI"!==r.nodeName)&&(o=e.create(n.parentNode.nodeName),a=e.getStyle(n.parentNode,"listStyleType"),a&&e.setStyle(o,"listStyleType",a),r.appendChild(o),o.appendChild(n),i(n.lastChild,o),!0))))},a=function(e){var t=r.getSelectedListItems(e);if(t.length){for(var i=n.createBookmark(e.selection.getRng(!0)),a=0;a<t.length&&(o(t[a])||0!==a);a++);return e.selection.setRng(n.resolveBookmark(i)),e.nodeChanged(),!0}};return{indentSelection:a}}),a("0",["1","2","3","4","5","6","7","8"],function(e,t,n,r,i,o,a,s){var l=function(e,t){return function(){var n=e.dom.getParent(e.selection.getStart(),"UL,OL,DL");return n&&n.nodeName===t}},u=function(e){e.on("BeforeExecCommand",function(t){var n,r=t.command.toLowerCase();if("indent"===r?o.indentSelection(e)&&(n=!0):"outdent"===r&&a.outdentSelection(e)&&(n=!0),n)return e.fire("ExecCommand",{command:t.command}),t.preventDefault(),!0}),e.addCommand("InsertUnorderedList",function(t,n){s.toggleList(e,"UL",n)}),e.addCommand("InsertOrderedList",function(t,n){s.toggleList(e,"OL",n)}),e.addCommand("InsertDefinitionList",function(t,n){s.toggleList(e,"DL",n)})},c=function(e){e.addQueryStateHandler("InsertUnorderedList",l(e,"UL")),e.addQueryStateHandler("InsertOrderedList",l(e,"OL")),e.addQueryStateHandler("InsertDefinitionList",l(e,"DL"))},d=function(e){e.on("keydown",function(t){9!==t.keyCode||n.metaKeyPressed(t)||e.dom.getParent(e.selection.getStart(),"LI,DT,DD")&&(t.preventDefault(),t.shiftKey?a.outdentSelection(e):o.indentSelection(e))})},f=function(e){var n=function(n){return function(){var i=this;e.on("NodeChange",function(e){var o=t.grep(e.parents,r.isListNode);i.active(o.length>0&&o[0].nodeName===n)})}},i=function(e,n){var r=e.settings.plugins?e.settings.plugins:"";return t.inArray(r.split(/[ ,]/),n)!==-1};i(e,"advlist")||(e.addButton("numlist",{title:"Numbered list",cmd:"InsertOrderedList",onPostRender:n("OL")}),e.addButton("bullist",{title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:n("UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(t){var n=t.control;e.on("nodechange",function(){for(var t=e.selection.getSelectedBlocks(),i=!1,o=0,a=t.length;!i&&o<a;o++){var s=t[o].nodeName;i="LI"===s&&r.isFirstChild(t[o])||"UL"===s||"OL"===s||"DD"===s}n.disabled(i)})}})};return e.add("lists",function(e){return f(e),i.setup(e),e.on("init",function(){u(e),c(e),d(e)}),{backspaceDelete:function(t){i.backspaceDelete(e,t)}}}),function(){}}),r("0")()}();tinymce.PluginManager.add("link",function(e){function t(e){return e&&"A"===e.nodeName&&e.href}function n(e){return tinymce.util.Tools.grep(e,t).length>0}function r(t){return e.dom.getParent(t,"a[href]")}function i(){return r(e.selection.getStart())}function o(e){var t=e.getAttribute("data-mce-href");return t?t:e.getAttribute("href")}function a(){var t=e.plugins.contextmenu;return!!t&&t.isContextMenuVisible()}function s(n){var r,i,o;return!!(e.settings.link_context_toolbar&&!a()&&t(n)&&(r=e.selection,i=r.getRng(),o=i.startContainer,3==o.nodeType&&r.isCollapsed()&&i.startOffset>0&&i.startOffset<o.data.length))}function l(e,t){document.body.appendChild(e),e.dispatchEvent(t),document.body.removeChild(e)}function u(e){if(!tinymce.Env.ie||tinymce.Env.ie>10){var t=document.createElement("a");t.target="_blank",t.href=e,t.rel="noreferrer noopener";var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),l(t,n)}else{var r=window.open("","_blank");if(r){r.opener=null;var i=r.document;i.open(),i.write('<meta http-equiv="refresh" content="0; url='+tinymce.DOM.encode(e)+'">'),i.close()}}}function c(t){if(t){var n=o(t);if(/^#/.test(n)){var r=e.$(n);r.length&&e.selection.scrollIntoView(r[0],!0)}else u(t.href)}}function d(){c(i())}function f(){var t=this,r=function(e){n(e.parents)?t.show():t.hide()};n(e.dom.getParents(e.selection.getStart()))||t.hide(),e.on("nodechange",r),t.on("remove",function(){e.off("nodechange",r)})}function p(t){return function(){var n=e.settings.link_list;"string"==typeof n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):"function"==typeof n?n(t):t(n)}}function h(e,t,n){function r(e,n){return n=n||[],tinymce.each(e,function(e){var i={text:e.text||e.title};e.menu?i.menu=r(e.menu):(i.value=e.value,t&&t(i)),n.push(i)}),n}return r(e,n||[])}function m(t){function n(e){var t=d.find("#text");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),d.find("#href").value(e.control.value())}function r(t){var r=[];if(tinymce.each(e.dom.select("a:not([href])"),function(e){var n=e.name||e.id;n&&r.push({text:n,value:"#"+n,selected:t.indexOf("#"+n)!=-1})}),r.length)return r.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:r,onselect:n}}function i(){!c&&0===w.text.length&&f&&this.parent().parent().find("#text")[0].value(this.value())}function o(t){var n=t.meta||{};m&&m.value(e.convertURL(this.value(),"href")),tinymce.each(t.meta,function(e,t){var n=d.find("#"+t);"text"===t?0===c.length&&(n.value(e),w.text=e):n.value(e)}),n.attach&&(g={href:this.value(),attach:n.attach}),n.text||i.call(this)}function a(e){var t=E.getContent();if(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||t.indexOf("href=")==-1))return!1;if(e){var n,r=e.childNodes;if(0===r.length)return!1;for(n=r.length-1;n>=0;n--)if(3!=r[n].nodeType)return!1}return!0}function s(e){e.meta=d.toJSON()}var l,u,c,d,f,p,m,v,y,b,C,x,w={},E=e.selection,N=e.dom;l=E.getNode(),u=N.getParent(l,"a[href]"),f=a(),w.text=c=u?u.innerText||u.textContent:E.getContent({format:"text"}),w.href=u?N.getAttrib(u,"href"):"",u?w.target=N.getAttrib(u,"target"):e.settings.default_link_target&&(w.target=e.settings.default_link_target),(x=N.getAttrib(u,"rel"))&&(w.rel=x),(x=N.getAttrib(u,"class"))&&(w["class"]=x),(x=N.getAttrib(u,"title"))&&(w.title=x),f&&(p={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){w.text=this.value()}}),t&&(m={type:"listbox",label:"Link list",values:h(t,function(t){t.value=e.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:n,value:e.convertURL(w.href,"href"),onPostRender:function(){m=this}}),e.settings.target_list!==!1&&(e.settings.target_list||(e.settings.target_list=[{text:"None",value:""},{text:"New window",value:"_blank"}]),y={name:"target",type:"listbox",label:"Target",values:h(e.settings.target_list)}),e.settings.rel_list&&(v={name:"rel",type:"listbox",label:"Rel",values:h(e.settings.rel_list)}),e.settings.link_class_list&&(b={name:"class",type:"listbox",label:"Class",values:h(e.settings.link_class_list,function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({inline:"a",classes:[t.value]})})})}),e.settings.link_title!==!1&&(C={name:"title",type:"textbox",label:"Title",value:w.title}),d=e.windowManager.open({title:"Insert link",data:w,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:o,onkeyup:i,onbeforecall:s},p,C,r(w.href),m,v,y,b],onSubmit:function(t){function n(t,n){var r=e.selection.getRng();tinymce.util.Delay.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(r),n(t)})})}function r(e,t){function n(e){return e=r(e),e?[e,i].join(" "):i}function r(e){var t=new RegExp("("+i.replace(" ","|")+")","g");return e&&(e=tinymce.trim(e.replace(t,""))),e?e:null}var i="noopener noreferrer";return t?n(e):r(e)}function i(){var t={href:a,target:w.target?w.target:null,rel:w.rel?w.rel:null,"class":w["class"]?w["class"]:null,title:w.title?w.title:null};e.settings.allow_unsafe_link_target||(t.rel=r(t.rel,"_blank"==t.target)),a===g.href&&(g.attach(),g={}),u?(e.focus(),f&&w.text!=c&&("innerText"in u?u.innerText=w.text:u.textContent=w.text),N.setAttribs(u,t),E.select(u),e.undoManager.add()):f?e.insertContent(N.createHTML("a",t,N.encode(w.text))):e.execCommand("mceInsertLink",!1,t)}function o(){e.undoManager.transact(i)}var a;return w=tinymce.extend(w,t.data),(a=w.href)?a.indexOf("@")>0&&a.indexOf("//")==-1&&a.indexOf("mailto:")==-1?void n("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(e){e&&(a="mailto:"+a),o()}):e.settings.link_assume_external_targets&&!/^\w+:/i.test(a)||!e.settings.link_assume_external_targets&&/^\s*www[\.|\d\.]/i.test(a)?void n("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(e){e&&(a="http://"+a),o()}):void o():void e.execCommand("unlink")}})}var g={},v=function(e){return e.altKey===!0&&e.shiftKey===!1&&e.ctrlKey===!1&&e.metaKey===!1};e.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Meta+K",onclick:p(m),stateSelector:"a[href]"}),e.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"}),e.addContextToolbar&&(e.addButton("openlink",{icon:"newtab",tooltip:"Open link",onclick:d}),e.addContextToolbar(s,"openlink | link unlink")),e.addShortcut("Meta+K","",p(m)),e.addCommand("mceLink",p(m)),e.on("click",function(e){var t=r(e.target);t&&tinymce.util.VK.metaKeyPressed(e)&&(e.preventDefault(),c(t))}),e.on("keydown",function(e){var t=i();t&&13===e.keyCode&&v(e)&&(e.preventDefault(),c(t))}),this.showDialog=m,e.addMenuItem("openlink",{text:"Open link",icon:"newtab",onclick:d,onPostRender:f,prependToContext:!0}),e.addMenuItem("link",{icon:"link",text:"Link",shortcut:"Meta+K",onclick:p(m),stateSelector:"a[href]",context:"insert",prependToContext:!0})});!function(){var e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new Array(a),l=0;l<a;++l)s[l]=r(i[l]);var u=o.apply(null,s);if(void 0===u)throw"module ["+t+"] returned undefined";n.instance=u},n=function(t,n,r){if("string"!=typeof t)throw"module id must be a string";if(void 0===n)throw"no dependencies for "+t;if(void 0===r)throw"no definition function for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var r=e[n];if(void 0===r)throw"module ["+n+"] was undefined";return void 0===r.instance&&t(n),r.instance},i=function(e,t){for(var n=e.length,i=new Array(n),o=0;o<n;++o)i.push(r(e[o]));t.apply(null,t)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var a=n,s=function(e,t){a(e,[],function(){return t})};s("1",tinymce.PluginManager),s("2",tinymce.Env),s("3",tinymce.util.Promise),s("4",tinymce.util.URI),s("5",tinymce.util.Tools),s("6",tinymce.util.Delay),a("m",[],function(){function e(e,t){return r(document.createElement("canvas"),e,t)}function t(e){return e.getContext("2d")}function n(e){var t=null;try{t=e.getContext("webgl")||e.getContext("experimental-webgl")}catch(e){}return t||(t=null),t}function r(e,t,n){return e.width=t,e.height=n,e}return{create:e,resize:r,get2dContext:t,get3dContext:n}}),a("n",[],function(){function e(e){return e.naturalWidth||e.width}function t(e){return e.naturalHeight||e.height}return{getWidth:e,getHeight:t}}),a("o",[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(t){return void e.reject(t)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(e){i.call(this,e)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;e<t;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(e){if(r)return;r=!0,n(e)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&u(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(e){n(e)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(e){return new t(function(t,n){n(e)})},t.race=function(e){return new t(function(t,n){for(var r=0,i=e.length;r<i;r++)e[r].then(t,n)})},t}),a("p",[],function(){function e(e){var t=document.createElement("a");return t.href=e,t.pathname}function t(t){var n=e(t).split("."),r=n[n.length-1],i={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"};return r&&(r=r.toLowerCase()),i[r]}return{guessMimeType:t}}),a("e",["o","m","p","n"],function(e,t,n,r){function i(t){return new e(function(e){function n(){t.removeEventListener("load",n),e(t)}t.complete?e(t):t.addEventListener("load",n)})}function o(e){return i(e).then(function(e){var n,i;return i=t.create(r.getWidth(e),r.getHeight(e)),n=t.get2dContext(i),n.drawImage(e,0,0),i})}function a(e){return i(e).then(function(e){var t=e.src;return 0===t.indexOf("blob:")?l(t):0===t.indexOf("data:")?u(t):o(e).then(function(e){return u(e.toDataURL(n.guessMimeType(t)))})})}function s(t){return new e(function(e){function n(){r.removeEventListener("load",n),e(r)}var r=new Image;r.addEventListener("load",n),r.src=URL.createObjectURL(t),r.complete&&n()})}function l(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function u(t){return new e(function(e){var n,r,i,o,a,s;if(t=t.split(","),o=/data:([^;]+)/.exec(t[0]),o&&(a=o[1]),n=atob(t[1]),window.WebKitBlobBuilder){for(s=new WebKitBlobBuilder,r=new ArrayBuffer(n.length),i=0;i<r.length;i++)r[i]=n.charCodeAt(i);return s.append(r),void e(s.getBlob(a))}for(r=new Uint8Array(n.length),i=0;i<r.length;i++)r[i]=n.charCodeAt(i);e(new Blob([r],{type:a}))})}function c(e){return 0===e.indexOf("blob:")?l(e):0===e.indexOf("data:")?u(e):null}function d(e,t){return u(e.toDataURL(t))}function f(t){return new e(function(e){var n=new FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}function p(e){return f(e).then(function(e){return e.split(",")[1]})}function h(e){URL.revokeObjectURL(e.src)}return{blobToImage:s,imageToBlob:a,blobToDataUri:f,blobToBase64:p,imageToCanvas:o,canvasToBlob:d,revokeImageUrl:h,uriToBlob:c}}),a("q",[],function(){function e(e,t,n){return e=parseFloat(e),e>n?e=n:e<t&&(e=t),e}function t(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function n(e,t){var n,r,i,o,a=[],s=new Array(10);for(n=0;n<5;n++){for(r=0;r<5;r++)a[r]=t[r+5*n];for(r=0;r<5;r++){for(o=0,i=0;i<5;i++)o+=e[r+5*i]*a[i];s[r+5*n]=o}}return s}function r(t,n){return n=e(n,0,1),t.map(function(t,r){return r%6===0?t=1-(1-t)*n:t*=n,e(t,0,1)})}function i(t,r){var i;return r=e(r,-1,1),r*=100,r<0?i=127+r/100*127:(i=r%1,i=0===i?d[r]:d[Math.floor(r)]*(1-i)+d[Math.floor(r)+1]*i,i=127*i+127),n(t,[i/127,0,0,0,.5*(127-i),0,i/127,0,0,.5*(127-i),0,0,i/127,0,.5*(127-i),0,0,0,1,0,0,0,0,0,1])}function o(t,r){var i,o,a,s;return r=e(r,-1,1),i=1+(r>0?3*r:r),o=.3086,a=.6094,s=.082,n(t,[o*(1-i)+i,a*(1-i),s*(1-i),0,0,o*(1-i),a*(1-i)+i,s*(1-i),0,0,o*(1-i),a*(1-i),s*(1-i)+i,0,0,0,0,0,1,0,0,0,0,0,1])}function a(t,r){var i,o,a,s,l;return r=e(r,-180,180)/180*Math.PI,i=Math.cos(r),o=Math.sin(r),a=.213,s=.715,l=.072,n(t,[a+i*(1-a)+o*-a,s+i*-s+o*-s,l+i*-l+o*(1-l),0,0,a+i*-a+.143*o,s+i*(1-s)+.14*o,l+i*-l+o*-.283,0,0,a+i*-a+o*-(1-a),s+i*-s+o*s,l+i*(1-l)+o*l,0,0,0,0,0,1,0,0,0,0,0,1])}function s(t,r){return r=e(255*r,-255,255),n(t,[1,0,0,0,r,0,1,0,0,r,0,0,1,0,r,0,0,0,1,0,0,0,0,0,1])}function l(t,r,i,o){return r=e(r,0,2),i=e(i,0,2),o=e(o,0,2),n(t,[r,0,0,0,0,0,i,0,0,0,0,0,o,0,0,0,0,0,1,0,0,0,0,0,1])}function u(t,i){return i=e(i,0,1),n(t,r([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],i))}function c(t,i){return i=e(i,0,1),n(t,r([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],i))}var d=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];return{identity:t,adjust:r,multiply:n,adjustContrast:i,adjustBrightness:s,adjustSaturation:o,adjustHue:a,adjustColors:l,adjustSepia:u,adjustGrayscale:c}}),a("c",["m","n","e","q"],function(e,t,n,r){function i(r,i){return n.blobToImage(r).then(function(r){function o(e,t){var n,r,i,o,a,s=e.data,l=t[0],u=t[1],c=t[2],d=t[3],f=t[4],p=t[5],h=t[6],m=t[7],g=t[8],v=t[9],y=t[10],b=t[11],C=t[12],x=t[13],w=t[14],E=t[15],N=t[16],_=t[17],S=t[18],k=t[19];for(a=0;a<s.length;a+=4)n=s[a],r=s[a+1],i=s[a+2],o=s[a+3],s[a]=n*l+r*u+i*c+o*d+f,s[a+1]=n*p+r*h+i*m+o*g+v,s[a+2]=n*y+r*b+i*C+o*x+w,s[a+3]=n*E+r*N+i*_+o*S+k;return e}var a,s=e.create(t.getWidth(r),t.getHeight(r)),l=e.get2dContext(s);return l.drawImage(r,0,0),c(r),a=o(l.getImageData(0,0,s.width,s.height),i),l.putImageData(a,0,0),n.canvasToBlob(s)})}function o(r,i){return n.blobToImage(r).then(function(r){function o(e,t,n){function r(e,t,n){return e>n?e=n:e<t&&(e=t),e}var i,o,a,s,l,u,c,d,f,p,h,m,g,v,y,b,C;for(a=Math.round(Math.sqrt(n.length)),s=Math.floor(a/2),i=e.data,o=t.data,b=e.width,C=e.height,u=0;u<C;u++)for(l=0;l<b;l++){for(c=d=f=0,h=0;h<a;h++)for(p=0;p<a;p++)m=r(l+p-s,0,b-1),g=r(u+h-s,0,C-1),v=4*(g*b+m),y=n[h*a+p],c+=i[v]*y,d+=i[v+1]*y,f+=i[v+2]*y;v=4*(u*b+l),o[v]=r(c,0,255),o[v+1]=r(d,0,255),o[v+2]=r(f,0,255)}return t}var a,s,l=e.create(t.getWidth(r),t.getHeight(r)),u=e.get2dContext(l);return u.drawImage(r,0,0),c(r),a=u.getImageData(0,0,l.width,l.height),s=u.getImageData(0,0,l.width,l.height),s=o(a,s,i),u.putImageData(s,0,0),n.canvasToBlob(l)})}function a(r){return function(i,o){return n.blobToImage(i).then(function(i){function a(e,t){var n,r=e.data;for(n=0;n<r.length;n+=4)r[n]=t[r[n]],r[n+1]=t[r[n+1]],r[n+2]=t[r[n+2]];return e}var s,l,u=e.create(t.getWidth(i),t.getHeight(i)),d=e.get2dContext(u),f=new Array(256);for(l=0;l<f.length;l++)f[l]=r(l,o);return d.drawImage(i,0,0),c(i),s=a(d.getImageData(0,0,u.width,u.height),f),d.putImageData(s,0,0),n.canvasToBlob(u)})}}function s(e){return function(t,n){return i(t,e(r.identity(),n))}}function l(e){return function(t){return i(t,e)}}function u(e){return function(t){return o(t,e)}}var c=n.revokeImageUrl;return{invert:l([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0]),brightness:s(r.adjustBrightness),hue:s(r.adjustHue),saturate:s(r.adjustSaturation),contrast:s(r.adjustContrast),grayscale:s(r.adjustGrayscale),sepia:s(r.adjustSepia),colorize:function(e,t,n,o){return i(e,r.adjustColors(r.identity(),t,n,o))},sharpen:u([0,-1,0,-1,5,-1,0,-1,0]),emboss:u([-2,-1,0,-1,1,1,0,1,2]),gamma:a(function(e,t){return 255*Math.pow(e/255,1-t)}),exposure:a(function(e,t){return 255*(1-Math.exp(-(e/255)*t))}),colorFilter:i,convoluteFilter:o}}),a("r",["o","e","m","n"],function(e,t,n,r){function i(e,t,n){var a=r.getWidth(e),s=r.getHeight(e),l=t/a,u=n/s,c=!1;(l<.5||l>2)&&(l=l<.5?.5:2,c=!0),(u<.5||u>2)&&(u=u<.5?.5:2,c=!0);var d=o(e,l,u);return c?d.then(function(e){return i(e,t,n)}):d}function o(t,i,o){return new e(function(e){var a=r.getWidth(t),s=r.getHeight(t),l=Math.floor(a*i),u=Math.floor(s*o),c=n.create(l,u),d=n.get2dContext(c);d.drawImage(t,0,0,a,s,0,0,l,u),e(c)})}return{scale:i}}),a("d",["e","m","n","r"],function(e,t,n,r){function i(r,i){return e.blobToImage(r).then(function(o){var a=t.create(n.getWidth(o),n.getHeight(o)),s=t.get2dContext(a),u=0,c=0;return i=i<0?360+i:i,90!=i&&270!=i||t.resize(a,a.height,a.width),90!=i&&180!=i||(u=a.width),270!=i&&180!=i||(c=a.height),s.translate(u,c),s.rotate(i*Math.PI/180),s.drawImage(o,0,0),l(o),e.canvasToBlob(a,r.type)})}function o(r,i){return e.blobToImage(r).then(function(r){var o=t.create(n.getWidth(r),n.getHeight(r)),a=t.get2dContext(o);return"v"==i?(a.scale(1,-1),a.drawImage(r,0,-o.height)):(a.scale(-1,1),a.drawImage(r,-o.width,0)),l(r),e.canvasToBlob(o)})}function a(n,r,i,o,a){return e.blobToImage(n).then(function(n){var s=t.create(o,a),u=t.get2dContext(s);return u.drawImage(n,-r,-i),l(n),e.canvasToBlob(s)})}function s(t,n,i){return e.blobToImage(t).then(function(o){var a;return a=r.scale(o,n,i).then(function(n){return e.canvasToBlob(n,t.type)}).then(u(o))["catch"](u(o))})}var l=e.revokeImageUrl,u=function(e){return function(t){return l(e),t}};return{rotate:i,flip:o,crop:a,resize:s}}),a("7",["c","d"],function(e,t){var n=function(t){return e.invert(t)},r=function(t){return e.sharpen(t)},i=function(t){return e.emboss(t)},o=function(t,n){return e.gamma(t,n)},a=function(t,n){return e.exposure(t,n)},s=function(t,n,r,i){return e.colorize(t,n,r,i)},l=function(t,n){return e.brightness(t,n)},u=function(t,n){return e.hue(t,n)},c=function(t,n){return e.saturate(t,n)},d=function(t,n){return e.contrast(t,n)},f=function(t,n){return e.grayscale(t,n)},p=function(t,n){return e.sepia(t,n)},h=function(e,n){return t.flip(e,n)},m=function(e,n,r,i,o){return t.crop(e,n,r,i,o)},g=function(e,n,r){return t.resize(e,n,r)},v=function(e,n){return t.rotate(e,n)};return{invert:n,sharpen:r,emboss:i,brightness:l,hue:u,saturate:c,contrast:d,grayscale:f,sepia:p,colorize:s,gamma:o,exposure:a,flip:h,crop:m,resize:g,rotate:v}}),a("8",["e"],function(e){var t=function(t){return e.blobToImage(t)},n=function(t){return e.imageToBlob(t)},r=function(t){return e.blobToDataUri(t)},i=function(t){return e.blobToBase64(t)};return{blobToImage:t,imageToBlob:n,blobToDataUri:r,blobToBase64:i}}),s("f",tinymce.dom.DOMUtils),s("g",tinymce.ui.Factory),s("h",tinymce.ui.Form),s("i",tinymce.ui.Container),s("s",tinymce.ui.Control),s("t",tinymce.ui.DragHelper),s("u",tinymce.geom.Rect),s("w",tinymce.dom.DomQuery),s("x",tinymce.util.Observable),s("y",tinymce.util.VK),a("v",["w","t","u","5","x","y"],function(e,t,n,r,i,o){var a=0;return function(s,l,u,c,d){function f(e,t){return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}}function p(e,t){return{x:t.x-e.x,y:t.y-e.y,w:t.w,h:t.h}}function h(){return p(u,s)}function m(e,t,r,i){var o,a,l,c,d;o=t.x,a=t.y,l=t.w,c=t.h,o+=r*e.deltaX,a+=i*e.deltaY,l+=r*e.deltaW,c+=i*e.deltaH,l<20&&(l=20),c<20&&(c=20),d=s=n.clamp({x:o,y:a,w:l,h:c},u,"move"==e.name),d=p(u,d),N.fire("updateRect",{rect:d}),x(d)}function g(){function n(e){var n;return new t(R,{document:c.ownerDocument,handle:R+"-"+e.name,start:function(){n=s},drag:function(t){m(e,n,t.deltaX,t.deltaY)}})}e('<div id="'+R+'" class="'+T+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(c),r.each(k,function(t){e("#"+R,c).append('<div id="'+R+"-"+t+'"class="'+T+'croprect-block" style="display: none" data-mce-bogus="all">')}),r.each(_,function(t){e("#"+R,c).append('<div id="'+R+"-"+t.name+'" class="'+T+"croprect-handle "+T+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false">')}),S=r.map(_,n),y(s),e(c).on("focusin focusout",function(t){e(t.target).attr("aria-grabbed","focus"===t.type)}),e(c).on("keydown",function(e){function t(e,t,r,i,o){e.stopPropagation(),e.preventDefault(),m(n,r,i,o)}var n;switch(r.each(_,function(t){if(e.target.id==R+"-"+t.name)return n=t,!1}),e.keyCode){case o.LEFT:t(e,n,s,-10,0);break;case o.RIGHT:t(e,n,s,10,0);break;case o.UP:t(e,n,s,0,-10);break;case o.DOWN:t(e,n,s,0,10);break;case o.ENTER:case o.SPACEBAR:e.preventDefault(),d()}})}function v(t){var n;n=r.map(_,function(e){return"#"+R+"-"+e.name}).concat(r.map(k,function(e){return"#"+R+"-"+e})).join(","),t?e(n,c).show():e(n,c).hide()}function y(t){function n(t,n){n.h<0&&(n.h=0),n.w<0&&(n.w=0),e("#"+R+"-"+t,c).css({left:n.x,top:n.y,width:n.w,height:n.h})}r.each(_,function(n){e("#"+R+"-"+n.name,c).css({left:t.w*n.xMul+t.x,top:t.h*n.yMul+t.y})}),n("top",{x:l.x,y:l.y,w:l.w,h:t.y-l.y}),n("right",{x:t.x+t.w,y:t.y,w:l.w-t.x-t.w+l.x,h:t.h}),n("bottom",{x:l.x,y:t.y+t.h,w:l.w,h:l.h-t.y-t.h+l.y}),n("left",{x:l.x,y:t.y,w:t.x-l.x,h:t.h}),n("move",t)}function b(e){s=e,y(s)}function C(e){l=e,y(s)}function x(e){b(f(u,e))}function w(e){u=e,y(s)}function E(){r.each(S,function(e){e.destroy()}),S=[]}var N,_,S,k,T="mce-",R=T+"crid-"+a++;return _=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],k=["top","right","bottom","left"],g(c),N=r.extend({toggleVisibility:v,setClampRect:w,setRect:b,getInnerRect:h,setInnerRect:x,setViewPortRect:C,destroy:E},i)}}),a("j",["s","t","u","5","3","v"],function(e,t,n,r,i,o){function a(e){return new i(function(t){function n(){e.removeEventListener("load",n),t(e)}e.complete?t(e):e.addEventListener("load",n)})}return e.extend({Defaults:{classes:"imagepanel"},selection:function(e){return arguments.length?(this.state.set("rect",e),this):this.state.get("rect")},imageSize:function(){var e=this.state.get("viewRect");return{w:e.w,h:e.h}},toggleCropRect:function(e){this.state.set("cropEnabled",e)},imageSrc:function(e){var t=this,r=new Image;r.src=e,a(r).then(function(){var e,i,o=t.state.get("viewRect");if(i=t.$el.find("img"),i[0])i.replaceWith(r);else{var a=document.createElement("div");a.className="mce-imagepanel-bg",t.getEl().appendChild(a),t.getEl().appendChild(r)}e={x:0,y:0,w:r.naturalWidth,h:r.naturalHeight},t.state.set("viewRect",e),t.state.set("rect",n.inflate(e,-20,-20)),o&&o.w==e.w&&o.h==e.h||t.zoomFit(),t.repaintImage(),t.fire("load")})},zoom:function(e){return arguments.length?(this.state.set("zoom",e),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var e,t,n,r,i,o,a,s=this;a=10,e=s.$el.find("img"),t=s.getEl().clientWidth,n=s.getEl().clientHeight,r=e[0].naturalWidth,i=e[0].naturalHeight,o=Math.min((t-a)/r,(n-a)/i),o>=1&&(o=1),s.zoom(o)},repaintImage:function(){var e,t,n,r,i,o,a,s,l,u,c;c=this.getEl(),l=this.zoom(),u=this.state.get("rect"),a=this.$el.find("img"),s=this.$el.find(".mce-imagepanel-bg"),i=c.offsetWidth,o=c.offsetHeight,n=a[0].naturalWidth*l,r=a[0].naturalHeight*l,e=Math.max(0,i/2-n/2),t=Math.max(0,o/2-r/2),a.css({left:e,top:t,width:n,height:r}),s.css({left:e,top:t,width:n,height:r}),this.cropRect&&(this.cropRect.setRect({x:u.x*l+e,y:u.y*l+t,w:u.w*l,h:u.h*l}),this.cropRect.setClampRect({x:e,y:t,w:n,h:r}),this.cropRect.setViewPortRect({x:0,y:0,w:i,h:o}))},bindStates:function(){function e(e){t.cropRect=new o(e,t.state.get("viewRect"),t.state.get("viewRect"),t.getEl(),function(){t.fire("crop")}),t.cropRect.on("updateRect",function(e){var n=e.rect,r=t.zoom();n={x:Math.round(n.x/r),y:Math.round(n.y/r),w:Math.round(n.w/r),h:Math.round(n.h/r)},t.state.set("rect",n)}),t.on("remove",t.cropRect.destroy)}var t=this;t.state.on("change:cropEnabled",function(e){t.cropRect.toggleVisibility(e.value),t.repaintImage()}),t.state.on("change:zoom",function(){t.repaintImage()}),t.state.on("change:rect",function(n){var r=n.value;t.cropRect||e(r),t.cropRect.setRect(r)})}})}),a("k",[],function(){return function(){function e(e){var t;return t=o.splice(++a),o.push(e),{state:e,removed:t}}function t(){if(r())return o[--a]}function n(){if(i())return o[++a]}function r(){return a>0}function i(){return a!=-1&&a<o.length-1}var o=[],a=-1;return{data:o,add:e,undo:t,redo:n,canUndo:r,canRedo:i}}}),a("9",["f","5","3","g","h","i","j","7","8","k"],function(e,t,n,r,i,o,a,s,l,u){function c(e){return{blob:e,url:URL.createObjectURL(e)}}function d(e){e&&URL.revokeObjectURL(e.url)}function f(e){t.each(e,d)}function p(n,l,p){function h(e){var t,n,r,i;t=H.find("#w")[0],n=H.find("#h")[0],r=parseInt(t.value(),10),i=parseInt(n.value(),10),H.find("#constrain")[0].checked()&&ae&&se&&r&&i&&("w"==e.control.settings.name?(i=Math.round(r*le),n.value(i)):(r=Math.round(i*ue),t.value(r))),ae=r,se=i}function m(e){return Math.round(100*e)+"%"}function g(){H.find("#undo").disabled(!ce.canUndo()),H.find("#redo").disabled(!ce.canRedo()),H.statusbar.find("#save").disabled(!ce.canUndo())}function v(){H.find("#undo").disabled(!0),H.find("#redo").disabled(!0)}function y(e){e&&$.imageSrc(e.url)}function b(e){return function(){var n=t.grep(oe,function(t){return t.settings.name!=e});t.each(n,function(e){e.hide()}),e.show(),e.focus()}}function C(e){z=c(e),y(z)}function x(e){n=c(e),y(n),f(ce.add(n).removed),g()}function w(){var e=$.selection();s.crop(n.blob,e.x,e.y,e.w,e.h).then(function(e){x(e),_()})}function E(e){var t=[].slice.call(arguments,1);return function(){var r=z||n;e.apply(this,[r.blob].concat(t)).then(C)}}function N(e){var t=[].slice.call(arguments,1);return function(){e.apply(this,[n.blob].concat(t)).then(x)}}function _(){y(n),d(z),b(I)(),g()}function S(){z&&(x(z.blob),_())}function k(){var e=$.zoom();e<2&&(e+=.1),$.zoom(e)}function T(){var e=$.zoom();e>.1&&(e-=.1),$.zoom(e)}function R(){n=ce.undo(),y(n),g()}function A(){n=ce.redo(),y(n),g()}function B(){l(n.blob),H.close()}function D(e){return new i({layout:"flex",direction:"row",labelGap:5,border:"0 0 1 0",align:"center",pack:"center",padding:"0 10 0 10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:e})}function L(e,t){return D([{text:"Back",onclick:_},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:S}]).hide().on("show",function(){v(),t(n.blob).then(function(e){var t=c(e);y(t),d(z),z=t})})}function M(e,t,r,i,o){function a(e){t(n.blob,e).then(function(e){var t=c(e);y(t),d(z),z=t})}return D([{text:"Back",onclick:_},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(e){a(e.value)},minValue:i,maxValue:o,value:r,previewFilter:m},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:S}]).hide().on("show",function(){this.find("slider").value(r),v()})}function P(e,t){function r(){var e,r,i;e=H.find("#r")[0].value(),r=H.find("#g")[0].value(),i=H.find("#b")[0].value(),t(n.blob,e,r,i).then(function(e){var t=c(e);y(t),d(z),z=t})}return D([{text:"Back",onclick:_},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:0,value:1,maxValue:2,ondragend:r,previewFilter:m},{type:"slider",label:"G",name:"g",minValue:0,value:1,maxValue:2,ondragend:r,previewFilter:m},{type:"slider",label:"B",name:"b",minValue:0,value:1,maxValue:2,ondragend:r,previewFilter:m},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:S}]).hide().on("show",function(){H.find("#r,#g,#b").value(1),v()})}function O(e){e.control.value()===!0&&(le=se/ae,ue=ae/se)}var H,I,F,z,U,W,V,$,q,j,Y,X,K,G,J,Q,Z,ee,te,ne,re,ie,oe,ae,se,le,ue,ce=new u;U=D([{text:"Back",onclick:_},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:w}]).hide().on("show hide",function(e){$.toggleCropRect("show"==e.type)}).on("show",v),W=D([{text:"Back",onclick:_},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:h},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:h},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:O},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}]).hide().on("submit",function(e){var t=parseInt(H.find("#w").value(),10),n=parseInt(H.find("#h").value(),10);e.preventDefault(),N(s.resize,t,n)(),_()}).on("show",v),V=D([{text:"Back",onclick:_},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:E(s.flip,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:E(s.flip,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:E(s.rotate,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:E(s.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:S}]).hide().on("show",v),Y=L("Invert",s.invert),te=L("Sharpen",s.sharpen),ne=L("Emboss",s.emboss),X=M("Brightness",s.brightness,0,-1,1),K=M("Hue",s.hue,180,0,360),G=M("Saturate",s.saturate,0,-1,1),J=M("Contrast",s.contrast,0,-1,1),Q=M("Grayscale",s.grayscale,0,0,1),Z=M("Sepia",s.sepia,0,0,1),ee=P("Colorize",s.colorize),re=M("Gamma",s.gamma,0,-1,1),ie=M("Exposure",s.exposure,1,0,2),F=D([{text:"Back",onclick:_},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:b(K)},{text:"saturate",icon:"saturate",onclick:b(G)},{text:"sepia",icon:"sepia",onclick:b(Z)},{text:"emboss",icon:"emboss",onclick:b(ne)},{text:"exposure",icon:"exposure",onclick:b(ie)},{type:"spacer",flex:1}]).hide(),I=D([{tooltip:"Crop",icon:"crop",onclick:b(U)},{tooltip:"Resize",icon:"resize2",onclick:b(W)},{tooltip:"Orientation",icon:"orientation",onclick:b(V)},{tooltip:"Brightness",icon:"sun",onclick:b(X)},{tooltip:"Sharpen",icon:"sharpen",onclick:b(te)},{tooltip:"Contrast",icon:"contrast",onclick:b(J)},{tooltip:"Color levels",icon:"drop",onclick:b(ee)},{tooltip:"Gamma",icon:"gamma",onclick:b(re)},{tooltip:"Invert",icon:"invert",onclick:b(Y)}]),$=new a({flex:1,imageSrc:n.url}),q=new o({layout:"flex",direction:"column",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:R},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:A},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:k},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:T}]}),j=new o({type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:[q,$]}),oe=[I,U,W,V,F,Y,X,K,G,J,Q,Z,ee,te,ne,re,ie],H=r.create("window",{layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(e.DOM.getViewPort().w,800),minHeight:Math.min(e.DOM.getViewPort().h,650),title:"Edit image",items:oe.concat([j]),buttons:[{text:"Save",name:"save",subtype:"primary",onclick:B},{text:"Cancel",onclick:"close"}]}),H.renderTo(document.body).reflow(),H.on("close",function(){p(),f(ce.data),ce=null,z=null}),ce.add(n),g(),$.on("load",function(){ae=$.imageSize().w,se=$.imageSize().h,le=se/ae,ue=ae/se,H.find("#w").value(ae),H.find("#h").value(se)}),$.on("crop",w)}function h(e){return new n(function(t,n){p(c(e),t,n)})}return{edit:h}}),a("a",[],function(){function e(e){function t(e){return/^[0-9\.]+px$/.test(e)}var n,r;return n=e.style.width,r=e.style.height,n||r?t(n)&&t(r)?{w:parseInt(n,10),h:parseInt(r,10)}:null:(n=e.width,r=e.height,n&&r?{w:parseInt(n,10),h:parseInt(r,10)}:null)}function t(e,t){var n,r;t&&(n=e.style.width,r=e.style.height,(n||r)&&(e.style.width=t.w+"px",e.style.height=t.h+"px",e.removeAttribute("data-mce-style")),n=e.width,r=e.height,(n||r)&&(e.setAttribute("width",t.w),e.setAttribute("height",t.h)))}function n(e){return{w:e.naturalWidth,h:e.naturalHeight}}return{getImageSize:e,setImageSize:t,getNaturalImageSize:n}}),a("l",["3","5"],function(e,t){var n=function(e){return null!==e&&void 0!==e},r=function(e,t){var r;return r=t.reduce(function(e,t){return n(e)?e[t]:void 0},e),n(r)?r:null},i=function(n,r){return new e(function(e){var i;i=new XMLHttpRequest,i.onreadystatechange=function(){4===i.readyState&&e({status:i.status,blob:this.response})},i.open("GET",n,!0),t.each(r,function(e,t){i.setRequestHeader(t,e)}),i.responseType="blob",i.send()})},o=function(t){return new e(function(e){var n=new FileReader;n.onload=function(t){var n=t.target;e(n.result)},n.readAsText(t)})},a=function(e){var t;try{t=JSON.parse(e)}catch(e){}return t};return{traverse:r,readBlob:o,requestUrlAsBlob:i,parseJson:a}}),a("b",["3","5","l"],function(e,t,n){function r(t){return n.requestUrlAsBlob(t,{}).then(function(t){return t.status>=400?o(t.status):e.resolve(t.blob)})}var i=function(e){return 400===e||403===e||500===e},o=function(t){return e.reject("ImageProxy HTTP error: "+t)},a=function(t){e.reject("ImageProxy Service error: "+t)},s=function(e,t){return n.readBlob(t).then(function(e){var t=n.parseJson(e),r=n.traverse(t,["error","type"]);return a(r?r:"Invalid JSON")})},l=function(e,t){return i(e)?s(e,t):o(e)},u=function(t,r){return n.requestUrlAsBlob(t,{"Content-Type":"application/json;charset=UTF-8","tiny-api-key":r}).then(function(t){return t.status>=400?l(t.status,t.blob):e.resolve(t.blob)})},c=function(e,t){return t?u(e,t):r(e)};return{getUrl:c}}),a("0",["1","2","3","4","5","6","7","8","9","a","b"],function(e,t,n,r,i,o,a,s,l,u,c){var d=function(e){function d(t){e.notificationManager.open({text:t,type:"error"})}function f(){return e.selection.getNode()}function p(t){var n=t.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i);return n?e.dom.encode(n[1]):null}function h(){return"imagetools"+L++}function m(t){var n=t.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new r(n).host===e.documentBaseURI.host}function g(t){return i.inArray(e.settings.imagetools_cors_hosts,new r(t.src).host)!==-1}function v(){return e.settings.api_key||e.settings.imagetools_api_key}function y(t){var n,r=t.src;return g(t)?c.getUrl(t.src,null):m(t)?s.imageToBlob(t):(r=e.settings.imagetools_proxy,r+=(r.indexOf("?")===-1?"?":"&")+"url="+encodeURIComponent(t.src),n=v(),c.getUrl(r,n))}function b(){var t;return t=e.editorUpload.blobCache.getByUri(f().src),t?t.blob():y(f())}function C(){B=o.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},e.settings.images_upload_timeout||3e4)}function x(){clearTimeout(B)}function w(t,n){return s.blobToDataUri(t).then(function(i){var o,a,s,l,u,c;return c=f(),l=e.editorUpload.blobCache,u=l.getByUri(c.src),s=r.parseDataUri(i).data,o=h(),e.settings.images_reuse_filename&&(a=u?u.filename():p(c.src)),u=l.create(o,t,s,a),l.add(u),e.undoManager.transact(function(){function t(){e.$(c).off("load",t),e.nodeChanged(),n?e.editorUpload.uploadImagesAuto():(x(),C())}e.$(c).on("load",t),e.$(c).attr({src:u.blobUri()}).removeAttr("data-mce-src")}),u})}function E(t){return function(){return e._scanForImages().then(b).then(t).then(w,d)}}function N(e){return function(){return E(function(t){var n=u.getImageSize(f());return n&&u.setImageSize(f(),{w:n.h,h:n.w}),a.rotate(t,e)})()}}function _(e){return function(){return E(function(t){return a.flip(t,e)})()}}function S(){var e=f(),t=u.getNaturalImageSize(e),r=function(r){return new n(function(n){s.blobToImage(r).then(function(i){var o=u.getNaturalImageSize(i);t.w==o.w&&t.h==o.h||u.getImageSize(e)&&u.setImageSize(e,o),URL.revokeObjectURL(i.src),n(r)})})},i=function(e){return l.edit(e).then(r).then(function(e){w(e,!0)},function(){})};e&&y(e).then(i,d)}function k(){e.addButton("rotateleft",{title:"Rotate counterclockwise",cmd:"mceImageRotateLeft"}),e.addButton("rotateright",{title:"Rotate clockwise",cmd:"mceImageRotateRight"}),e.addButton("flipv",{title:"Flip vertically",cmd:"mceImageFlipVertical"}),e.addButton("fliph",{title:"Flip horizontally",cmd:"mceImageFlipHorizontal"}),e.addButton("editimage",{title:"Edit image",cmd:"mceEditImage"}),e.addButton("imageoptions",{title:"Image options",icon:"options",cmd:"mceImage"})}function T(){e.on("NodeChange",function(t){D&&D.src!=t.element.src&&(x(),e.editorUpload.uploadImagesAuto(),D=void 0),R(t.element)&&(D=t.element)})}function R(t){var n=e.dom.is(t,"img:not([data-mce-object],[data-mce-placeholder])");return n&&(m(t)||g(t)||e.settings.imagetools_proxy)}function A(){var t=e.settings.imagetools_toolbar;t||(t="rotateleft rotateright | flipv fliph | crop editimage imageoptions"),e.addContextToolbar(R,t)}var B,D,L=0;t.fileApi&&(i.each({mceImageRotateLeft:N(-90),mceImageRotateRight:N(90),mceImageFlipVertical:_("v"),mceImageFlipHorizontal:_("h"),mceEditImage:S},function(t,n){e.addCommand(n,t)}),k(),A(),T())};return e.add("imagetools",d),function(){}}),r("0")()}();tinymce.PluginManager.add("image",function(e){function t(e,t){function n(e,n){r.parentNode&&r.parentNode.removeChild(r),t({width:e,height:n})}var r=document.createElement("img");r.onload=function(){n(Math.max(r.width,r.clientWidth),Math.max(r.height,r.clientHeight))},r.onerror=function(){n()};var i=r.style;i.visibility="hidden",i.position="fixed",i.bottom=i.left=0,i.width=i.height="auto",document.body.appendChild(r),r.src=e}function n(e,t,n){function r(e,n){return n=n||[],tinymce.each(e,function(e){var i={text:e.text||e.title};e.menu?i.menu=r(e.menu):(i.value=e.value,t(i)),n.push(i)}),n}return r(e,n||[])}function r(t){return function(){var n=e.settings.image_list;"string"==typeof n?tinymce.util.XHR.send({url:n,success:function(e){t(tinymce.util.JSON.parse(e))}}):"function"==typeof n?n(t):t(n)}}function i(r){function i(){var e,t,n,r;e=f.find("#width")[0],t=f.find("#height")[0],e&&t&&(n=e.value(),r=t.value(),f.find("#constrain")[0].checked()&&m&&g&&n&&r&&(m!=n?(r=Math.round(n/m*r),isNaN(r)||t.value(r)):(n=Math.round(r/g*n),isNaN(n)||e.value(n))),m=n,g=r)}function o(){function t(t){function n(){t.onload=t.onerror=null,e.selection&&(e.selection.select(t),e.nodeChanged())}t.onload=function(){b.width||b.height||!x||C.setAttribs(t,{width:t.clientWidth,height:t.clientHeight}),n()},t.onerror=n}var n,r;c(),i(),b=tinymce.extend(b,f.toJSON()),b.alt||(b.alt=""),b.title||(b.title=""),""===b.width&&(b.width=null),""===b.height&&(b.height=null),b.style||(b.style=null),b={src:b.src,alt:b.alt,title:b.title,width:b.width,height:b.height,style:b.style,caption:b.caption,"class":b["class"]},e.undoManager.transact(function(){function i(t){return e.schema.getTextBlockElements()[t.nodeName]}if(!b.src)return void(p&&(C.remove(p),e.focus(),e.nodeChanged()));if(""===b.title&&(b.title=null),p?C.setAttribs(p,b):(b.id="__mcenew",e.focus(),e.selection.setContent(C.createHTML("img",b)),p=C.get("__mcenew"),C.setAttrib(p,"id",null)),e.editorUpload.uploadImagesAuto(),b.caption===!1&&C.is(p.parentNode,"figure.image")&&(n=p.parentNode,C.insertAfter(p,n),C.remove(n)),b.caption!==!0)t(p);else if(!C.is(p.parentNode,"figure.image")){r=p,p=p.cloneNode(!0),n=C.create("figure",{"class":"image"}),n.appendChild(p),n.appendChild(C.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable=!1;var o=C.getParent(r,i);o?C.split(o,r,n):C.replace(n,r),e.selection.select(n)}})}function a(e){return e&&(e=e.replace(/px$/,"")),e}function s(n){var r,i,o,a=n.meta||{};v&&v.value(e.convertURL(this.value(),"src")),tinymce.each(a,function(e,t){f.find("#"+t).value(e)}),a.width||a.height||(r=e.convertURL(this.value(),"src"),i=e.settings.image_prepend_url,o=new RegExp("^(?:[a-z]+:)?//","i"),i&&!o.test(r)&&r.substring(0,i.length)!==i&&(r=i+r),this.value(r),t(e.documentBaseURI.toAbsolute(this.value()),function(e){e.width&&e.height&&x&&(m=e.width,g=e.height,f.find("#width").value(m),f.find("#height").value(g))}))}function l(e){e.meta=f.toJSON()}function u(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e}function c(){function t(e){return e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e}if(e.settings.image_advtab){var n=f.toJSON(),r=C.parseStyle(n.style);r=u(r),n.vspace&&(r["margin-top"]=r["margin-bottom"]=t(n.vspace)),n.hspace&&(r["margin-left"]=r["margin-right"]=t(n.hspace)),n.border&&(r["border-width"]=t(n.border)),f.find("#style").value(C.serializeStyle(C.parseStyle(C.serializeStyle(r))))}}function d(){if(e.settings.image_advtab){var t=f.toJSON(),n=C.parseStyle(t.style);f.find("#vspace").value(""),f.find("#hspace").value(""),n=u(n),(n["margin-top"]&&n["margin-bottom"]||n["margin-right"]&&n["margin-left"])&&(n["margin-top"]===n["margin-bottom"]?f.find("#vspace").value(a(n["margin-top"])):f.find("#vspace").value(""),n["margin-right"]===n["margin-left"]?f.find("#hspace").value(a(n["margin-right"])):f.find("#hspace").value("")),n["border-width"]&&f.find("#border").value(a(n["border-width"])),f.find("#style").value(C.serializeStyle(C.parseStyle(C.serializeStyle(n))))}}var f,p,h,m,g,v,y,b={},C=e.dom,x=e.settings.image_dimensions!==!1;p=e.selection.getNode(),h=C.getParent(p,"figure.image"),h&&(p=C.select("img",h)[0]),p&&("IMG"!=p.nodeName||p.getAttribute("data-mce-object")||p.getAttribute("data-mce-placeholder"))&&(p=null),p&&(m=C.getAttrib(p,"width"),g=C.getAttrib(p,"height"),b={src:C.getAttrib(p,"src"),alt:C.getAttrib(p,"alt"),title:C.getAttrib(p,"title"),"class":C.getAttrib(p,"class"),width:m,height:g,caption:!!h}),r&&(v={type:"listbox",label:"Image list",values:n(r,function(t){t.value=e.convertURL(t.value||t.url,"src")},[{text:"None",value:""}]),value:b.src&&e.convertURL(b.src,"src"),onselect:function(e){var t=f.find("#alt");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),f.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){v=this}}),e.settings.image_class_list&&(y={name:"class",type:"listbox",label:"Class",values:n(e.settings.image_class_list,function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({inline:"img",classes:[t.value]})})})});var w=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:s,onbeforecall:l},v];e.settings.image_description!==!1&&w.push({name:"alt",type:"textbox",label:"Image description"}),e.settings.image_title&&w.push({name:"title",type:"textbox",label:"Image Title"}),x&&w.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:i,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:i,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),w.push(y),e.settings.image_caption&&tinymce.Env.ceFalse&&w.push({name:"caption",type:"checkbox",label:"Caption"}),e.settings.image_advtab?(p&&(p.style.marginLeft&&p.style.marginRight&&p.style.marginLeft===p.style.marginRight&&(b.hspace=a(p.style.marginLeft)),p.style.marginTop&&p.style.marginBottom&&p.style.marginTop===p.style.marginBottom&&(b.vspace=a(p.style.marginTop)),p.style.borderWidth&&(b.border=a(p.style.borderWidth)),b.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(p,"style")))),f=e.windowManager.open({title:"Insert/edit image",data:b,bodyType:"tabpanel",body:[{title:"General",type:"form",items:w},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:d},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:c},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:o})):f=e.windowManager.open({title:"Insert/edit image",data:b,body:w,onSubmit:o})}e.on("preInit",function(){function t(e){var t=e.attr("class");return t&&/\bimage\b/.test(t)}function n(e){return function(n){function r(t){t.attr("contenteditable",e?"true":null)}for(var i,o=n.length;o--;)i=n[o],t(i)&&(i.attr("contenteditable",e?"false":null),tinymce.each(i.getAll("figcaption"),r))}}e.parser.addNodeFilter("figure",n(!0)),e.serializer.addNodeFilter("figure",n(!1))}),e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:r(i),stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:r(i),context:"insert",prependToContext:!0}),e.addCommand("mceImage",r(i))});tinymce.PluginManager.add("hr",function(e){e.addCommand("InsertHorizontalRule",function(){e.execCommand("mceInsertContent",!1,"<hr />")}),e.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),e.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})});tinymce.PluginManager.add("fullscreen",function(e){function t(){var e,t,n=window,r=document,i=r.body;return i.offsetWidth&&(e=i.offsetWidth,t=i.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function n(){var e=tinymce.DOM.getViewPort();return{x:e.x,y:e.y}}function r(e){scrollTo(e.x,e.y)}function i(){function i(){f.setStyle(m,"height",t().h-(h.clientHeight-m.clientHeight))}var p,h,m,g,v=document.body,y=document.documentElement;d=!d,h=e.getContainer(),p=h.style,m=e.getContentAreaContainer().firstChild,g=m.style,d?(c=n(),o=g.width,a=g.height,g.width=g.height="100%",l=p.width,u=p.height,p.width=p.height="",f.addClass(v,"mce-fullscreen"),f.addClass(y,"mce-fullscreen"),f.addClass(h,"mce-fullscreen"),f.bind(window,"resize",i),i(),s=i):(g.width=o,g.height=a,l&&(p.width=l),u&&(p.height=u),f.removeClass(v,"mce-fullscreen"),f.removeClass(y,"mce-fullscreen"),f.removeClass(h,"mce-fullscreen"),f.unbind(window,"resize",s),r(c)),e.fire("FullscreenStateChanged",{state:d})}var o,a,s,l,u,c,d=!1,f=tinymce.DOM;if(!e.settings.inline)return e.on("init",function(){e.addShortcut("Ctrl+Shift+F","",i)}),e.on("remove",function(){s&&f.unbind(window,"resize",s)}),e.addCommand("mceFullScreen",i),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,onClick:function(){i(),e.focus()},onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Shift+F",onClick:i,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return d}}});tinymce.PluginManager.add("colorpicker",function(e){function t(t,n){function r(e){var t=new tinymce.util.Color(e),n=t.toRgb();o.fromJSON({r:n.r,g:n.g,b:n.b,hex:t.toHex().substr(1)}),i(t.toHex())}function i(e){o.find("#preview")[0].getEl().style.background=e}var o=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:n,onchange:function(){var e=this.rgb();o&&(o.find("#r").value(e.r),o.find("#g").value(e.g),o.find("#b").value(e.b),o.find("#hex").value(this.value().substr(1)),i(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,t,n=o.find("colorpicker")[0];return e=this.name(),t=this.value(),"hex"==e?(t="#"+t,r(t),void n.value(t)):(t={r:o.find("#r").value(),g:o.find("#g").value(),b:o.find("#b").value()},n.value(t),void r(t))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){t("#"+this.toJSON().hex)}});r(n)}e.settings.color_picker_callback||(e.settings.color_picker_callback=t)});tinymce.PluginManager.add("code",function(e){function t(){var t=e.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(t){e.focus(),e.undoManager.transact(function(){e.setContent(t.data.code)}),e.selection.setCursorLocation(),e.nodeChanged()}});t.find("#code").value(e.getContent({source_view:!0}))}e.addCommand("mceCodeEditor",t),e.addButton("code",{icon:"code",tooltip:"Source code",onclick:t}),e.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:t})});tinymce.PluginManager.add("autoresize",function(e){function t(){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}function n(r){var a,s,l,u,c,d,f,p,h,m,g,v,y=tinymce.DOM;if(s=e.getDoc()){if(l=s.body,u=s.documentElement,c=i.autoresize_min_height,!l||r&&"setcontent"===r.type&&r.initial||t())return void(l&&u&&(l.style.overflowY="auto",u.style.overflowY="auto"));f=e.dom.getStyle(l,"margin-top",!0),p=e.dom.getStyle(l,"margin-bottom",!0),h=e.dom.getStyle(l,"padding-top",!0),m=e.dom.getStyle(l,"padding-bottom",!0),g=e.dom.getStyle(l,"border-top-width",!0),v=e.dom.getStyle(l,"border-bottom-width",!0),d=l.offsetHeight+parseInt(f,10)+parseInt(p,10)+parseInt(h,10)+parseInt(m,10)+parseInt(g,10)+parseInt(v,10),(isNaN(d)||d<=0)&&(d=tinymce.Env.ie?l.scrollHeight:tinymce.Env.webkit&&0===l.clientHeight?0:l.offsetHeight),d>i.autoresize_min_height&&(c=d),i.autoresize_max_height&&d>i.autoresize_max_height?(c=i.autoresize_max_height,l.style.overflowY="auto",u.style.overflowY="auto"):(l.style.overflowY="hidden",u.style.overflowY="hidden",l.scrollTop=0),c!==o&&(a=c-o,y.setStyle(e.iframeElement,"height",c+"px"),o=c,tinymce.isWebKit&&a<0&&n(r))}}function r(t,i,o){tinymce.util.Delay.setEditorTimeout(e,function(){n({}),t--?r(t,i,o):o&&o()},i)}var i=e.settings,o=0;e.settings.inline||(i.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),i.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){var t,n;t=e.getParam("autoresize_overflow_padding",1),n=e.getParam("autoresize_bottom_margin",50),t!==!1&&e.dom.setStyles(e.getBody(),{paddingLeft:t,paddingRight:t}),n!==!1&&e.dom.setStyles(e.getBody(),{paddingBottom:n})}),e.on("nodechange setcontent keyup FullscreenStateChanged",n),e.getParam("autoresize_on_init",!0)&&e.on("init",function(){r(20,100,function(){r(5,1e3)})}),e.addCommand("mceAutoResize",n))});tinymce.PluginManager.add("autolink",function(e){function t(e){i(e,-1,"(",!0)}function n(e){i(e,0,"",!0)}function r(e){i(e,-1,"",!1)}function i(e,t,n){function r(e,t){if(t<0&&(t=0),3==e.nodeType){var n=e.data.length;t>n&&(t=n)}return t}function i(e,t){1!=e.nodeType||e.hasChildNodes()?s.setStart(e,r(e,t)):s.setStartBefore(e)}function o(e,t){1!=e.nodeType||e.hasChildNodes()?s.setEnd(e,r(e,t)):s.setEndAfter(e)}var s,l,u,c,d,f,p,h,m,g;if("A"!=e.selection.getNode().tagName){if(s=e.selection.getRng(!0).cloneRange(),s.startOffset<5){if(h=s.endContainer.previousSibling,!h){if(!s.endContainer.firstChild||!s.endContainer.firstChild.nextSibling)return;h=s.endContainer.firstChild.nextSibling}if(m=h.length,i(h,m),o(h,m),s.endOffset<5)return;l=s.endOffset,c=h}else{if(c=s.endContainer,3!=c.nodeType&&c.firstChild){for(;3!=c.nodeType&&c.firstChild;)c=c.firstChild;3==c.nodeType&&(i(c,0),o(c,c.nodeValue.length))}l=1==s.endOffset?2:s.endOffset-1-t}u=l;do i(c,l>=2?l-2:0),o(c,l>=1?l-1:0),l-=1,g=s.toString();while(" "!=g&&""!==g&&160!=g.charCodeAt(0)&&l-2>=0&&g!=n);s.toString()==n||160==s.toString().charCodeAt(0)?(i(c,l),o(c,u),l+=1):0===s.startOffset?(i(c,0),o(c,u)):(i(c,l),o(c,u)),f=s.toString(),"."==f.charAt(f.length-1)&&o(c,u-1),f=s.toString(),p=f.match(a),p&&("www."==p[1]?p[1]="http://www.":/@$/.test(p[1])&&!/^mailto:/.test(p[1])&&(p[1]="mailto:"+p[1]),d=e.selection.getBookmark(),e.selection.setRng(s),e.execCommand("createlink",!1,p[1]+p[2]),e.settings.default_link_target&&e.dom.setAttrib(e.selection.getNode(),"target",e.settings.default_link_target),e.selection.moveToBookmark(d),e.nodeChanged())}}var o,a=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return e.settings.autolink_pattern&&(a=e.settings.autolink_pattern),e.on("keydown",function(t){if(13==t.keyCode)return r(e)}),tinymce.Env.ie?void e.on("focus",function(){if(!o){o=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(e.on("keypress",function(n){if(41==n.keyCode)return t(e)}),void e.on("keyup",function(t){if(32==t.keyCode)return n(e)}))});tinymce.PluginManager.add("advlist",function(e){function t(t){return e.$.contains(e.getBody(),t)}function n(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)&&t(e)}function r(e,t){var n=[];return t&&tinymce.each(t.split(/[ ,]/),function(e){n.push({text:e.replace(/\-/g," ").replace(/\b\w/g,function(e){return e.toUpperCase()}),data:"default"==e?"":e})}),n}function i(t,n){e.undoManager.transact(function(){var r,i=e.dom,o=e.selection;if(r=i.getParent(o.getNode(),"ol,ul"),!r||r.nodeName!=t||n===!1){var a={"list-style-type":n?n:""};e.execCommand("UL"==t?"InsertUnorderedList":"InsertOrderedList",!1,a)}r=i.getParent(o.getNode(),"ol,ul"),r&&tinymce.util.Tools.each(i.select("ol,ul",r).concat([r]),function(e){e.nodeName!==t&&n!==!1&&(e=i.rename(e,t)),i.setStyle(e,"listStyleType",n?n:null),e.removeAttribute("data-mce-style")}),e.focus()})}function o(t){var n=e.dom.getStyle(e.dom.getParent(e.selection.getNode(),"ol,ul"),"listStyleType")||"";t.control.items().each(function(e){e.active(e.settings.data===n)})}var a,s,l=function(e,t){var n=e.settings.plugins?e.settings.plugins:"";return tinymce.util.Tools.inArray(n.split(/[ ,]/),t)!==-1};a=r("OL",e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),s=r("UL",e.getParam("advlist_bullet_styles","default,circle,disc,square"));var u=function(t){return function(){var r=this;e.on("NodeChange",function(e){var i=tinymce.util.Tools.grep(e.parents,n);r.active(i.length>0&&i[0].nodeName===t)})}};l(e,"lists")&&(e.addCommand("ApplyUnorderedListStyle",function(e,t){i("UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(e,t){i("OL",t["list-style-type"])}),e.addButton("numlist",{type:a.length>0?"splitbutton":"button",tooltip:"Numbered list",menu:a,onPostRender:u("OL"),onshow:o,onselect:function(e){i("OL",e.control.settings.data)},onclick:function(){i("OL",!1)}}),e.addButton("bullist",{type:s.length>0?"splitbutton":"button",tooltip:"Bullet list",onPostRender:u("UL"),menu:s,onshow:o,onselect:function(e){i("UL",e.control.settings.data)},onclick:function(){i("UL",!1)}}))});!function(){var e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new Array(a),l=0;l<a;++l)s[l]=r(i[l]);var u=o.apply(null,s);if(void 0===u)throw"module ["+t+"] returned undefined";n.instance=u},n=function(t,n,r){if("string"!=typeof t)throw"module id must be a string";if(void 0===n)throw"no dependencies for "+t;if(void 0===r)throw"no definition function for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var r=e[n];if(void 0===r)throw"module ["+n+"] was undefined";return void 0===r.instance&&t(n),r.instance},i=function(e,t){for(var n=e.length,i=new Array(n),o=0;o<n;++o)i.push(r(e[o]));t.apply(null,t)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var a=n,s=function(e,t){a(e,[],function(){return t})};s("1",tinymce.ThemeManager),s("2",tinymce.util.Delay),s("c",tinymce.util.Tools),s("d",tinymce.ui.Factory),s("e",tinymce.DOM),a("j",[],function(){var e=function(e){return function(t){return typeof t===e}},t=function(e){return Array.isArray(e)},n=function(e){return null===e},r=function(e){return function(r){return!n(r)&&!t(r)&&e(r)}};return{isString:e("string"),isNumber:e("number"),isBoolean:e("boolean"),isFunction:e("function"),isObject:r(e("object")),isNull:n,isArray:t}}),a("f",["c","d","j"],function(e,t,n){var r=function(e,t){var n=function(e,t){return{selector:e,handler:t}},r=function(e){t.active(e)},i=function(e){t.disabled(e)};return t.settings.stateSelector?n(t.settings.stateSelector,r):t.settings.disabledStateSelector?n(t.settings.disabledStateSelector,i):null},i=function(e,t,n){return function(){var i=r(t,n);null!==i&&e.selection.selectorChanged(i.selector,i.handler)}},o=function(e){return n.isArray(e)?e:n.isString(e)?e.split(/[ ,]/):[]},a=function(n,r,a){var s,l=[];if(a)return e.each(o(a),function(e){var r;"|"==e?s=null:t.has(e)?(e={type:e},l.push(e),s=null):n.buttons[e]&&(s||(s={type:"buttongroup",items:[]},l.push(s)),r=e,e=n.buttons[r],"function"==typeof e&&(e=e()),e.type=e.type||"button",e=t.create(e),e.on("postRender",i(n,r,e)),s.items.push(e))}),t.create({type:"toolbar",layout:"flow",name:r,items:l})};return{create:a}}),s("o",tinymce.util.Promise),a("p",[],function(){var e=0,t=function(){var e=function(){return Math.round(4294967295*Math.random()).toString(36)};return"s"+Date.now().toString(36)+e()+e()+e()},n=function(n){return n+e++ +t()};return{uuid:n}}),a("u",[],function(){var e=function(e,t){function n(n){var i,o,a;o=t[n?"startContainer":"endContainer"],a=t[n?"startOffset":"endOffset"],1==o.nodeType&&(i=e.create("span",{"data-mce-type":"bookmark"}),o.hasChildNodes()?(a=Math.min(a,o.childNodes.length-1),n?o.insertBefore(i,o.childNodes[a]):e.insertAfter(i,o.childNodes[a])):o.appendChild(i),o=i,a=0),r[n?"startContainer":"endContainer"]=o,r[n?"startOffset":"endOffset"]=a}var r={};return n(!0),t.collapsed||n(),r},t=function(e,t){function n(n){function r(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t==e)return n;1==t.nodeType&&"bookmark"==t.getAttribute("data-mce-type")||n++,t=t.nextSibling}return-1}var i,o,a;i=a=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],i&&(1==i.nodeType&&(o=r(i),i=i.parentNode,e.remove(a)),t[n?"startContainer":"endContainer"]=i,t[n?"startOffset":"endOffset"]=o)}n(!0),n();var r=e.createRng();return r.setStart(t.startContainer,t.startOffset),t.endContainer&&r.setEnd(t.endContainer,t.endOffset),r};return{create:e,resolve:t}}),s("v",tinymce.dom.TreeWalker),s("w",tinymce.dom.RangeUtils),a("q",["u","c","v","w"],function(e,t,n,r){var i=function(e,t,r){var i,o,a=[];for(i=new n(t,e),o=t;o&&(1===o.nodeType&&a.push(o),o!==r);o=i.next());return a},o=function(n,r){var i,o,a;o=n.dom,a=n.selection,i=e.create(o,a.getRng()),t.each(r,function(e){n.dom.remove(e,!0)}),a.setRng(e.resolve(o,i))},a=function(e){return"A"===e.nodeName&&e.hasAttribute("href")},s=function(e,t){var n=e.getParent(t,a);return n?n:t},l=function(e){var n,o,l,u,c,d,f;return c=e.selection,d=e.dom,f=c.getRng(),n=s(d,r.getNode(f.startContainer,f.startOffset)),o=r.getNode(f.endContainer,f.endOffset),l=e.getBody(),u=t.grep(i(l,n,o),a)},u=function(e){o(e,l(e))};return{unlinkSelection:u}}),a("m",["p","q"],function(e,t){var n=function(e,t){var n,r,i;for(i='<table data-mce-id="mce" style="width: 100%">',i+="<tbody>",r=0;r<t;r++){for(i+="<tr>",n=0;n<e;n++)i+="<td><br></td>";i+="</tr>"}return i+="</tbody>",i+="</table>"},r=function(e){var t=e.dom.select("*[data-mce-id]");return t[0]},i=function(e,t,i){e.undoManager.transact(function(){var o,a;e.insertContent(n(t,i)),o=r(e),o.removeAttribute("data-mce-id"),a=e.dom.select("td,th",o),e.selection.setCursorLocation(a[0],0)})},o=function(e,t){e.execCommand("FormatBlock",!1,t)},a=function(t,n,r){var i,o;i=t.editorUpload.blobCache,o=i.create(e.uuid("mceu"),r,n),i.add(o),t.insertContent(t.dom.createHTML("img",{src:o.blobUri()}))},s=function(e){e.selection.collapse(!1)},l=function(e){e.focus(),t.unlinkSelection(e),s(e)},u=function(e,t,n){e.focus(),e.dom.setAttrib(t,"href",n),s(e)},c=function(e,t){e.execCommand("mceInsertLink",!1,{href:t}),s(e)},d=function(e,t){var n=e.dom.getParent(e.selection.getStart(),"a[href]");n?u(e,n,t):c(e,t)},f=function(e,t){0===t.trim().length?l(e):d(e,t)};return{insertTable:i,formatBlock:o,insertBlob:a,createLink:f,unlink:l}}),a("r",[],function(){var e=function(e){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(e.trim())},t=function(e){return/^https?:\/\//.test(e.trim())};return{isDomainLike:e,isAbsolute:t}}),a("g",["c","d","o","m","r"],function(e,t,n,r,i){var o=function(e){e.find("textbox").eq(0).each(function(e){e.focus()})},a=function(n,r){var i=t.create(e.extend({type:"form",layout:"flex",direction:"row",padding:5,name:n,spacing:3},r));return i.on("show",function(){o(i)}),i},s=function(e,t){return t?e.show():e.hide()},l=function(e,t){return new n(function(n){e.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(e){var r=e===!0?"http://"+t:t;n(r)})})},u=function(e,t){return!i.isAbsolute(t)&&i.isDomainLike(t)?l(e,t):n.resolve(t)},c=function(e,t){var n={},i=function(){e.focus(),r.unlink(e),t()},o=function(e){var t=e.meta;t&&t.attach&&(n={href:this.value(),attach:t.attach})},l=function(t){if(t.control===this){var n,r="";n=e.dom.getParent(e.selection.getStart(),"a[href]"),n&&(r=e.dom.getAttrib(n,"href")),this.fromJSON({linkurl:r}),s(this.find("#unlink"),n),this.find("#linkurl")[0].focus()}};return a("quicklink",{items:[{type:"button",name:"unlink",icon:"unlink",onclick:i,tooltip:"Remove link"},{type:"filepicker",name:"linkurl",placeholder:"Paste or type a link",filetype:"file",onchange:o},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:l,onsubmit:function(i){u(e,i.data.linkurl).then(function(i){e.undoManager.transact(function(){i===n.href&&(n.attach(),n={}),r.createLink(e,i)}),t()})}})};return{createQuickLinkForm:c}}),s("s",tinymce.geom.Rect),a("t",[],function(){var e=function(e){return{x:e.left,y:e.top,w:e.width,h:e.height}},t=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}};return{fromClientRect:e,toClientRect:t}}),a("h",["e","s","t"],function(e,t,n){var r=function(t){var n=e.getViewPort();return{x:t.x+n.x,y:t.y+n.y,w:t.w,h:t.h}},i=function(e){var t=e.getBoundingClientRect();return r({x:t.left,y:t.top,w:Math.max(e.clientWidth,e.offsetWidth),h:Math.max(e.clientHeight,e.offsetHeight)})},o=function(e,t){return i(t)},a=function(e){return i(e.getElement().ownerDocument.body)},s=function(e){return i(e.getContentAreaContainer()||e.getBody())},l=function(e){var t=e.selection.getBoundingClientRect();return t?r(n.fromClientRect(t)):null};return{getElementRect:o,getPageAreaRect:a,getContentAreaRect:s,getSelectionRect:l}}),a("i",["s","t"],function(e,t){var n=function(e,t){return{rect:e,position:t}},r=function(e,t){return{x:t.x,y:t.y,w:e.w,h:e.h}},i=function(t,i,o,a,s){var l,u,c;return l=e.findBestRelativePosition(s,o,a,t),o=e.clamp(o,a),l?(u=e.relativePosition(s,o,l),c=r(s,u),n(c,l)):(o=e.intersect(a,o),o?(l=e.findBestRelativePosition(s,o,a,i))?(u=e.relativePosition(s,o,l),c=r(s,u),n(c,l)):(c=r(s,o),n(c,l)):null)},o=function(e,t,n){return i(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],e,t,n)},a=function(e,t,n){return i(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr"],["bc-tc","bl-tl","br-tr"],e,t,n)},s=function(e,n,r,i){var o;return"function"==typeof e?(o=e({elementRect:t.toClientRect(n),contentAreaRect:t.toClientRect(r),panelRect:t.toClientRect(i)}),t.fromClientRect(o)):i},l=function(e){return e.panelRect};return{calcInsert:o,calc:a,userConstrain:s,defaultHandler:l}}),a("a",["j"],function(e){var t=function(e,t){if(t(e))return!0;throw new Error("Default value doesn't match requested type.")},n=function(e){return function(n,r,i){var o=n.settings;return t(i,e),r in o&&e(o[r])?o[r]:i}},r=function(e,t){return e.split(t).filter(function(e){return e.length>0})},i=function(t,n){var i=function(e){return"string"==typeof e?r(e,/[ ,]/):e},o=function(e,t){return e===!1?[]:t};return e.isArray(t)?t:e.isString(t)?i(t):e.isBoolean(t)?o(t,n):n},o=function(e){return function(n,r,o){var a=r in n.settings?n.settings[r]:o;return t(o,e),i(a,o)}};return{getStringOr:n(e.isString),getBoolOr:n(e.isBoolean),getNumberOr:n(e.isNumber),getHandlerOr:n(e.isFunction),getToolbarItemsOr:o(e.isArray)}}),a("3",["c","d","e","f","g","h","i","a"],function(e,t,n,r,i,o,a,s){return function(){var l,u,c=["bold","italic","|","quicklink","h2","h3","blockquote"],d=["quickimage","quicktable"],f=function(t,n){return e.map(n,function(e){return r.create(t,e.id,e.items)})},p=function(e){return s.getToolbarItemsOr(e,"selection_toolbar",c)},h=function(e){return s.getToolbarItemsOr(e,"insert_toolbar",d)},m=function(e){return e.items().length>0},g=function(n,o){var a=f(n,o).concat([r.create(n,"text",p(n)),r.create(n,"insert",h(n)),i.createQuickLinkForm(n,k)]);return t.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:e.grep(a,m),oncancel:function(){n.focus()}})},v=function(e){e&&e.show()},y=function(e,t){e.moveTo(t.x,t.y)},b=function(t,n){n=n?n.substr(0,2):"",e.each({t:"down",b:"up",c:"center"},function(e,r){t.classes.toggle("arrow-"+e,r===n.substr(0,1))}),"cr"===n?(t.classes.toggle("arrow-left",!0),t.classes.toggle("arrow-right",!1)):"cl"===n?(t.classes.toggle("arrow-left",!0),t.classes.toggle("arrow-right",!0)):e.each({l:"left",r:"right"},function(e,r){t.classes.toggle("arrow-"+e,r===n.substr(1,1))})},C=function(e,t){var n=e.items().filter("#"+t);return n.length>0&&(n[0].show(),e.reflow(),!0)},x=function(e,t,r,i){var l,c,d,f;return f=s.getHandlerOr(r,"inline_toolbar_position_handler",a.defaultHandler),l=o.getContentAreaRect(r),c=n.getRect(e.getEl()),d="insert"===t?a.calcInsert(i,l,c):a.calc(i,l,c),!!d&&(c=d.rect,u=i,y(e,a.userConstrain(f,i,l,c)),b(e,d.position),!0)},w=function(e,t,n,r){return v(e),e.items().hide(),C(e,t)?void(x(e,t,n,r)===!1&&k(e)):void k(e)},E=function(){return l.items().filter("form:visible").length>0},N=function(e,t){if(l){if(l.items().hide(),!C(l,t))return void k(l);var r,i,c,d;v(l),l.items().hide(),C(l,t),d=s.getHandlerOr(e,"inline_toolbar_position_handler",a.defaultHandler),r=o.getContentAreaRect(e),i=n.getRect(l.getEl()),c=a.calc(u,r,i),c&&(i=c.rect,y(l,a.userConstrain(d,u,r,i)),b(l,c.position))}},_=function(e,t,n,r){l||(l=g(e,r),l.renderTo(document.body).reflow().moveTo(n.x,n.y),e.nodeChanged()),w(l,t,e,n)},S=function(e,t,n){l&&x(l,t,e,n)},k=function(){l&&l.hide()},T=function(){l&&l.find("toolbar:visible").eq(0).each(function(e){e.focus(!0)})},R=function(){l&&(l.remove(),l=null)},A=function(){return l&&l.visible()&&E()};return{show:_,showForm:N,reposition:S,inForm:A,hide:k,focus:T,remove:R}}}),a("k",["o"],function(e){var t=function(t){return new e(function(e){var n=new FileReader;n.onloadend=function(){e(n.result.split(",")[1])},n.readAsDataURL(t)})};return{blobToBase64:t}}),a("l",["o"],function(e){var t=function(){return new e(function(e){var t;t=document.createElement("input"),t.type="file",t.style.position="fixed",t.style.left=0,t.style.top=0,t.style.opacity=.001,document.body.appendChild(t),t.onchange=function(t){e(Array.prototype.slice.call(t.target.files))},t.click(),t.parentNode.removeChild(t)})};return{pickFile:t}}),a("4",["3","k","l","m"],function(e,t,n,r){var i=function(e){for(var t=function(t){return function(){r.formatBlock(e,t)}},n=1;n<6;n++){var i="h"+n;e.addButton(i,{text:i.toUpperCase(),tooltip:"Heading "+n,stateSelector:i,onclick:t(i),onPostRender:function(){var e=this.getEl().firstChild.firstChild;e.style.fontWeight="bold"}})}},o=function(e,o){e.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){o.showForm(e,"quicklink")}}),e.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){n.pickFile().then(function(n){var i=n[0];t.blobToBase64(i).then(function(t){r.insertBlob(e,t,i)})})}}),e.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){o.hide(),r.insertTable(e,2,2)}}),i(e)};return{addToEditor:o}}),s("n",tinymce.EditorManager),a("5",["n","e"],function(e,t){var n=function(e,t){var n=function(){e._skinLoaded=!0,e.fire("SkinLoaded"),t()};e.initialized?n():e.on("init",n)},r=function(t){var n=e.baseURL+"/skins/";return t?n+t:n+"lightgray"},i=function(e,t){return e.documentBaseURI.toAbsolute(t)},o=function(e,o){var a=e.settings,s=a.skin_url?i(e,a.skin_url):r(a.skin),l=function(){n(e,o)};t.styleSheetLoader.load(s+"/skin.min.css",l),e.contentCSS.push(s+"/content.inline.min.css")};return{load:o}}),a("8",[],function(){var e=function(e,t){return{id:e,rect:t}},t=function(e,t){for(var n=0;n<t.length;n++){var r=t[n],i=r(e);if(i)return i}return null};return{match:t,result:e}}),a("6",["8","h"],function(e,t){var n=function(n){return function(r){return r.selection.isCollapsed()?null:e.result(n,t.getSelectionRect(r))}},r=function(n,r){return function(i){var o,a=i.schema.getTextBlockElements();for(o=0;o<n.length;o++)if("TABLE"===n[o].nodeName)return null;for(o=0;o<n.length;o++)if(n[o].nodeName in a)return i.dom.isEmpty(n[o])?e.result(r,t.getSelectionRect(i)):null;return null}};return{textSelection:n,emptyTextBlock:r}}),a("7",["8","h"],function(e,t){var n=function(n,r){return function(i){for(var o=0;o<r.length;o++)if(r[o].predicate(n))return e.result(r[o].id,t.getElementRect(i,n));return null}},r=function(n,r){return function(i){for(var o=0;o<n.length;o++)for(var a=0;a<r.length;a++)if(r[a].predicate(n[o]))return e.result(r[a].id,t.getElementRect(i,n[o]));return null}};return{element:n,parent:r}}),a("9",[],function(){var e=function(t){return t.reduce(function(t,n){return Array.isArray(n)?t.concat(e(n)):t.concat(n)},[])};return{flatten:e}}),a("b",["c"],function(e){var t=function(e,t){return{id:e,predicate:t}},n=function(n){return e.map(n,function(e){return t(e.id,e.predicate)})};return{create:t,fromContextToolbars:n}}),a("0",["1","2","3","4","5","6","7","8","9","a","b"],function(e,t,n,r,i,o,a,s,l,u,c){var d=function(e){var t=e.selection.getNode(),n=e.dom.getParents(t);return n},f=function(e,t,n,r){var i=function(n){return e.dom.is(n,t)};return{predicate:i,id:n,items:r}},p=function(e){var t=e.contextToolbars;return l.flatten([t?t:[],f(e,"img","image","alignleft aligncenter alignright")])},h=function(e,t){var n,r,i;return r=d(e),i=c.fromContextToolbars(t),n=s.match(e,[a.element(r[0],i),o.textSelection("text"),o.emptyTextBlock(r,"insert"),a.parent(r,i)]),n&&n.rect?n:null},m=function(e,t){var n=function(){var n=p(e),r=h(e,n);r?t.show(e,r.id,r.rect,n):t.hide()};return function(){e.removed||n()}},g=function(e,t){return function(){var n=p(e),r=h(e,n);r&&t.reposition(e,r.id,r.rect)}},v=function(e,t){return function(){e.inForm()||t()}},y=function(e,n){var r=t.throttle(m(e,n),0),i=t.throttle(v(n,m(e,n)),0);e.on("blur hide ObjectResizeStart",n.hide),e.on("click",r),e.on("nodeChange mouseup",i),e.on("ResizeEditor keyup",r),e.on("ResizeWindow",g(e,n)),e.on("remove",n.remove),e.shortcuts.add("Alt+F10","",n.focus)},b=function(e,t){e.shortcuts.remove("meta+k"),e.shortcuts.add("meta+k","",function(){var n=p(e),r=r=s.match(e,[o.textSelection("quicklink")]);r&&t.show(e,r.id,r.rect,n)})},C=function(e,t){return i.load(e,function(){y(e,t),b(e,t)}),{}},x=function(e){throw new Error(e)};return e.add("inlite",function(e){var t=new n;r.addToEditor(e,t);var i=function(){return e.inline?C(e,t):x("inlite theme only supports inline mode.")};return{renderUI:i}}),function(){}}),r("0")()}();!function(){var e={},t=function(t){for(var n=e[t],i=n.deps,o=n.defn,a=i.length,s=new Array(a),l=0;l<a;++l)s[l]=r(i[l]);var u=o.apply(null,s);if(void 0===u)throw"module ["+t+"] returned undefined";n.instance=u},n=function(t,n,r){if("string"!=typeof t)throw"module id must be a string";if(void 0===n)throw"no dependencies for "+t;if(void 0===r)throw"no definition function for "+t;e[t]={deps:n,defn:r,instance:void 0}},r=function(n){var r=e[n];if(void 0===r)throw"module ["+n+"] was undefined";return void 0===r.instance&&t(n),r.instance},i=function(e,t){for(var n=e.length,i=new Array(n),o=0;o<n;++o)i.push(r(e[o]));t.apply(null,t)},o={};o.bolt={module:{api:{define:n,require:i,demand:r}}};var a=n,s=function(e,t){a(e,[],function(){return t})};s("1",tinymce.Env),s("2",tinymce.EditorManager),s("3",tinymce.ThemeManager),s("8",tinymce.util.Tools),s("9",tinymce.ui.Factory),s("a",tinymce.DOM),a("b",["8","9"],function(e,t){var n="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",r=function(n,r,i){var o,a=[];if(r)return e.each(r.split(/[ ,]/),function(e){var r,s=function(){var t=n.selection;e.settings.stateSelector&&t.selectorChanged(e.settings.stateSelector,function(t){e.active(t)},!0),e.settings.disabledStateSelector&&t.selectorChanged(e.settings.disabledStateSelector,function(t){e.disabled(t)})};"|"==e?o=null:t.has(e)?(e={type:e,size:i},a.push(e),o=null):(o||(o={type:"buttongroup",items:[]},a.push(o)),n.buttons[e]&&(r=e,e=n.buttons[r],"function"==typeof e&&(e=e()),e.type=e.type||"button",e.size=i,e=t.create(e),o.items.push(e),n.initialized?s():n.on("init",s)))}),{type:"toolbar",layout:"flow",items:a}},i=function(t,i){var o=[],a=t.settings,s=function(e){if(e)return o.push(r(t,e,i)),!0};if(e.isArray(a.toolbar)){if(0===a.toolbar.length)return;e.each(a.toolbar,function(e,t){a["toolbar"+(t+1)]=e}),delete a.toolbar}for(var l=1;l<10&&s(a["toolbar"+l]);l++);if(o.length||a.toolbar===!1||s(a.toolbar||n),o.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:o}};return{createToolbar:r,createToolbars:i}}),a("c",["8"],function(e){var t={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},n=function(e,t){var n;return"|"==t?{text:"|"}:n=e[t]},r=function(r,i,o){var a,s,l,u,c;if(c=e.makeMap((i.removed_menuitems||"").split(/[ ,]/)),i.menu?(s=i.menu[o],u=!0):s=t[o],s){a={text:s.title},l=[],e.each((s.items||"").split(/[ ,]/),function(e){var t=n(r,e);t&&!c[e]&&l.push(n(r,e))}),u||e.each(r,function(e){e.context==o&&("before"==e.separator&&l.push({text:"|"}),e.prependToContext?l.unshift(e):l.push(e),"after"==e.separator&&l.push({text:"|"}))});for(var d=0;d<l.length;d++)"|"==l[d].text&&(0!==d&&d!=l.length-1||l.splice(d,1));if(a.menu=l,!a.menu.length)return null}return a},i=function(e){var n,i=[],o=e.settings,a=[];if(o.menu)for(n in o.menu)a.push(n);else for(n in t)a.push(n);for(var s="string"==typeof o.menubar?o.menubar.split(/[ ,]/):a,l=0;l<s.length;l++){var u=s[l];u=r(e.menuItems,e.settings,u),u&&i.push(u)}return i};return{createMenuButtons:i}}),s("j",tinymce.util.Delay),s("k",tinymce.geom.Rect),a("d",["a","8","j","b","9","k"],function(e,t,n,r,i,o){var a=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}},s=function(e){t.each(e.contextToolbars,function(e){e.panel&&e.panel.hide()})},l=function(e,t){e.moveTo(t.left,t.top)},u=function(e,n,r){n=n?n.substr(0,2):"",t.each({t:"down",b:"up"},function(t,i){e.classes.toggle("arrow-"+t,r(i,n.substr(0,1)))}),t.each({l:"left",r:"right"},function(t,i){e.classes.toggle("arrow-"+t,r(i,n.substr(1,1)))})},c=function(e,t,n,r,i,o){return o=a({x:t,y:n,w:o.w,h:o.h}),e&&(o=e({elementRect:a(r),contentAreaRect:a(i),panelRect:o})),o},d=function(a){var d,f=a.settings,p=function(){return a.contextToolbars||[]},h=function(t){var n,r,i;return n=e.getPos(a.getContentAreaContainer()),r=a.dom.getRect(t),i=a.dom.getRoot(),"BODY"===i.nodeName&&(r.x-=i.ownerDocument.documentElement.scrollLeft||i.scrollLeft,r.y-=i.ownerDocument.documentElement.scrollTop||i.scrollTop),r.x+=n.x,r.y+=n.y,r},m=function(t,n){var r,i,d,p,m,g,v,y,b=f.inline_toolbar_position_handler;if(!a.removed){if(!t||!t.toolbar.panel)return void s(a);v=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],m=t.toolbar.panel,n&&m.show(),d=h(t.element),i=e.getRect(m.getEl()),p=e.getRect(a.getContentAreaContainer()||a.getBody()),y=25,"inline"!==e.getStyle(t.element,"display",!0)&&(d.w=t.element.clientWidth,d.h=t.element.clientHeight),a.inline||(p.w=a.getDoc().documentElement.offsetWidth),a.selection.controlSelection.isResizable(t.element)&&d.w<y&&(d=o.inflate(d,0,8)),r=o.findBestRelativePosition(i,d,p,v),d=o.clamp(d,p),r?(g=o.relativePosition(i,d,r),l(m,c(b,g.x,g.y,d,p,i))):(p.h+=i.h,d=o.intersect(p,d),d?(r=o.findBestRelativePosition(i,d,p,["bc-tc","bl-tl","br-tr"]),r?(g=o.relativePosition(i,d,r),l(m,c(b,g.x,g.y,d,p,i))):l(m,c(b,d.x,d.y,d,p,i))):m.hide()),u(m,r,function(e,t){return e===t})}},g=function(e){return function(){var t=function(){a.selection&&m(C(a.selection.getNode()),e)};n.requestAnimationFrame(t)}},v=function(){d||(d=a.selection.getScrollContainer()||a.getWin(),e.bind(d,"scroll",g(!0)),a.on("remove",function(){e.unbind(d,"scroll")}))},y=function(e){var t;return e.toolbar.panel?(e.toolbar.panel.show(),void m(e)):(v(),t=i.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:r.createToolbar(a,e.toolbar.items),oncancel:function(){a.focus()}}),e.toolbar.panel=t,t.renderTo(document.body).reflow(),void m(e))},b=function(){t.each(p(),function(e){e.panel&&e.panel.hide()})},C=function(e){var t,n,r,i=p();for(r=a.$(e).parents().add(e),t=r.length-1;t>=0;t--)for(n=i.length-1;n>=0;n--)if(i[n].predicate(r[t]))return{toolbar:i[n],element:r[t]};return null};a.on("click keyup setContent ObjectResized",function(e){("setcontent"!==e.type||e.selection)&&n.setEditorTimeout(a,function(){var e;e=C(a.selection.getNode()),e?(b(),y(e)):b()})}),a.on("blur hide contextmenu",b),a.on("ObjectResizeStart",function(){var e=C(a.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.hide()}),a.on("ResizeEditor ResizeWindow",g(!0)),a.on("nodeChange",g(!1)),a.on("remove",function(){t.each(p(),function(e){e.panel&&e.panel.remove()}),a.contextToolbars={}}),a.shortcuts.add("ctrl+shift+e > ctrl+shift+p","",function(){var e=C(a.selection.getNode());e&&e.toolbar.panel&&e.toolbar.panel.items()[0].focus()})};return{addContextualToolbars:d}}),a("e",[],function(){var e=function(e,t){return function(){var n=e.find(t)[0];n&&n.focus(!0)}},t=function(t,n){t.shortcuts.add("Alt+F9","",e(n,"menubar")),t.shortcuts.add("Alt+F10,F10","",e(n,"toolbar")),t.shortcuts.add("Alt+F11","",e(n,"elementpath")),n.on("cancel",function(){t.focus()})};return{addKeys:t}}),a("f",["8","9","1"],function(e,t,n){var r=function(e){return{element:function(){return e}}},i=function(e,t,n){var i=e.settings[n];i&&i(r(t.getEl("body")))},o=function(t,n,r){e.each(r,function(e){var r=n.items().filter("#"+e.name)[0];r&&r.visible()&&e.name!==t&&(i(e,r,"onhide"),r.visible(!1))})},a=function(e){e.items().each(function(e){e.active(!1)})},s=function(t,n){return e.grep(t,function(e){return e.name===n})[0]},l=function(e,n,r){return function(l){var u=l.control,c=u.parents().filter("panel")[0],d=c.find("#"+n)[0],f=s(r,n);o(n,c,r),a(u.parent()),d&&d.visible()?(i(f,d,"onhide"),d.hide(),u.active(!1)):(d?(d.show(),i(f,d,"onshow")):(d=t.create({type:"container",name:n,layout:"stack",classes:"sidebar-panel",html:""}),c.prepend(d),i(f,d,"onrender"),i(f,d,"onshow")),u.active(!0)),e.fire("ResizeEditor")}},u=function(){return!n.ie||n.ie>=11},c=function(e){return!(!u()||!e.sidebars)&&e.sidebars.length>0},d=function(t){var n=e.map(t.sidebars,function(e){var n=e.settings;return{type:"button",icon:n.icon,image:n.image,tooltip:n.tooltip,onclick:l(t,e.name,t.sidebars)}});return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:n}]}};return{hasSidebar:c,createSidebar:d}}),a("g",[],function(){var e=function(e){var t=function(){e._skinLoaded=!0,e.fire("SkinLoaded")};return function(){e.initialized?t():e.on("init",t)}};return{fireSkinLoaded:e}}),a("6",["a"],function(e){var t=function(e){return{width:e.clientWidth,height:e.clientHeight}},n=function(n,r,i){var o,a,s,l,u=n.settings;o=n.getContainer(),a=n.getContentAreaContainer().firstChild,s=t(o),l=t(a),null!==r&&(r=Math.max(u.min_width||100,r),r=Math.min(u.max_width||65535,r),e.setStyle(o,"width",r+(s.width-l.width)),e.setStyle(a,"width",r)),i=Math.max(u.min_height||100,i),i=Math.min(u.max_height||65535,i),e.setStyle(a,"height",i),n.fire("ResizeEditor")},r=function(e,t,r){var i=e.getContentAreaContainer();n(e,i.clientWidth+t,i.clientHeight+r)};return{resizeTo:n,resizeBy:r}}),a("4",["8","9","a","b","c","d","e","f","g","6"],function(e,t,n,r,i,o,a,s,l,u){var c=function(e){return function(t){e.find("*").disabled("readonly"===t.mode)}},d=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},f=function(e){return{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[d("0"),s.createSidebar(e)]}},p=function(e,p,h){var m,g,v,y=e.settings;return h.skinUiCss&&n.styleSheetLoader.load(h.skinUiCss,l.fireSkinLoaded(e)),m=p.panel=t.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[y.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:i.createMenuButtons(e)},r.createToolbars(e,y.toolbar_items_size),s.hasSidebar(e)?f(e):d("1 0 0 0")]}),y.resize!==!1&&(g={type:"resizehandle",direction:y.resize,onResizeStart:function(){var t=e.getContentAreaContainer().firstChild;v={width:t.clientWidth,height:t.clientHeight}},onResize:function(t){"both"===y.resize?u.resizeTo(e,v.width+t.deltaX,v.height+t.deltaY):u.resizeTo(e,null,v.height+t.deltaY)}}),y.statusbar!==!1&&m.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:e},g]}),e.fire("BeforeRenderUI"),e.on("SwitchMode",c(m)),m.renderBefore(h.targetNode).reflow(),y.readonly&&e.setMode("readonly"),y.width&&n.setStyle(m.getEl(),"width",y.width),e.on("remove",function(){m.remove(),m=null}),a.addKeys(e,m),o.addContextualToolbars(e),{iframeContainer:m.find("#iframe")[0].getEl(),editorContainer:m.getEl()}};return{render:p}}),s("h",tinymce.ui.FloatPanel),a("5",["8","9","a","h","b","c","d","e","g"],function(e,t,n,r,i,o,a,s,l){var u=function(e,u,c){var d,f,p=e.settings;p.fixed_toolbar_container&&(f=n.select(p.fixed_toolbar_container)[0]);var h=function(){if(d&&d.moveRel&&d.visible()&&!d._fixed){var t=e.selection.getScrollContainer(),r=e.getBody(),i=0,o=0;if(t){var a=n.getPos(r),s=n.getPos(t);i=Math.max(0,s.x-a.x),o=Math.max(0,s.y-a.y)}d.fixed(!1).moveRel(r,e.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(i,o)}},m=function(){d&&(d.show(),h(),n.addClass(e.getBody(),"mce-edit-focus"))},g=function(){d&&(d.hide(),r.hideAll(),n.removeClass(e.getBody(),"mce-edit-focus"))},v=function(){return d?void(d.visible()||m()):(d=u.panel=t.create({type:f?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!f,border:1,items:[p.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:o.createMenuButtons(e)},i.createToolbars(e,p.toolbar_items_size)]}),e.fire("BeforeRenderUI"),d.renderTo(f||document.body).reflow(),s.addKeys(e,d),m(),a.addContextualToolbars(e),e.on("nodeChange",h),e.on("activate",m),e.on("deactivate",g),void e.nodeChanged())};return p.content_editable=!0,e.on("focus",function(){c.skinUiCss?n.styleSheetLoader.load(c.skinUiCss,v,v):v()}),e.on("blur hide",g),e.on("remove",function(){d&&(d.remove(),d=null)}),c.skinUiCss&&n.styleSheetLoader.load(c.skinUiCss,l.fireSkinLoaded(e)),{}};return{render:u}}),s("i",tinymce.ui.Throbber),a("7",["i"],function(e){var t=function(t,n){var r;t.on("ProgressState",function(t){r=r||new e(n.panel.getEl("body")),t.state?r.show(t.time):r.hide()})};return{setup:t}}),a("0",["1","2","3","4","5","6","7"],function(e,t,n,r,i,o,a){var s=function(n,o,s){var l=n.settings,u=l.skin!==!1&&(l.skin||"lightgray");if(u){var c=l.skin_url;c=c?n.documentBaseURI.toAbsolute(c):t.baseURL+"/skins/"+u,e.documentMode<=7?s.skinUiCss=c+"/skin.ie7.min.css":s.skinUiCss=c+"/skin.min.css",n.contentCSS.push(c+"/content"+(n.inline?".inline":"")+".min.css")}return a.setup(n,o),l.inline?i.render(n,o,s):r.render(n,o,s)};return n.add("modern",function(e){return{renderUI:function(t){return s(e,this,t)},resizeTo:function(t,n){return o.resizeTo(e,t,n)},resizeBy:function(t,n){return o.resizeBy(e,t,n)}}}),function(){}}),r("0")()}(); \ No newline at end of file