Commit d4f03acb by Administrator

copy

parent 9855cda3

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

{
"presets": [
[
"@babel/preset-env",
{
"targets":{
"browsers":["last 2 versions"]
},
// "debug":true
}
],
"@babel/preset-react"
],
"plugins": [
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-syntax-dynamic-import",
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose": true }],
["import", { "libraryName": "antd", "libraryDirectory": "es" }],
"react-hot-loader/babel",
"@babel/plugin-transform-runtime"
]
}
{
"parser": "babel-eslint",
"plugins": [
"react",
"jsx-a11y"
],
"parserOptions": {
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"semi": 2
}
}
\ No newline at end of file
*.log
node_modules
.vscode
.DS_Store
.cache
cache
.eslintrc
.package-lock.json
*.log.*
*.DS_Store
*.iml
*.idea
*.lock
*.cache
chrome-user-data
*.sublime-project
*.sublime-workspace
*.pom
.md
.idea
package-lock.json
*.map
build.sh
/dist/js
pushFromMac.sh
/dist/static/images
src/containers/My/Test/index.jsx
# wmypcWeb
### 公共组件介绍
组件|路径|描述
---|---|---|
Fetching|/src/components/Fetching/index.jsx|页面初始化加载组件
NoData|/src/components/noData/index.jsx|列表暂无数据展示组件
Pagination|/src/components/Pagination/index.jsx|列表分页页码组件
SiteFooter|/src/components/SiteFooter/index.jsx|页面底部组件
Header|/src/containers/Home/component/header/index.jsx|页面顶部header组件
### 公共less变量介绍
变量|路径|描述
---|---|---|
@default_blue|/src/styles/variable.less|系统通用蓝色色号
.singleOverflow|/src/styles/variable.less|单行溢出省略号样式类
.someOverflow(@len)|/src/styles/variable.less|多行溢出省略号样式类,行数可传入
### 常用公共方法介绍
公共方法名称|路径|描述
---|---|---|
getRouterBefore|/src/utils/commonFunc.js|获取站点的companycode和sitecode组合,样例:"/companycode/sitecode"
strCutByLen|/src/utils/commonFunc.js|字符串超出长度显示省略号
numberCutByMax|/src/utils/commonFunc.js|数字大小超出限制以+代之
changeLanguage|/src/utils/commonFunc.js|切换系统语言
dateFormat|/src/utils/commonFunc.js|时间戳转日期格式显示
jumpToLive|/src/utils/jumperToLive.js|跳转至保利威视直播页面,封装用户观看权限验证,需传入直播频道号
<cross-domain-policy>
<allow-access-from domain="*.polyv.net"/>
</cross-domain-policy>
<?php
$username = "daying";
$secretkey = "oj0LfU5fwB";
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];
$fontSize="40";
$fontColor="0xFFE900";
$speed="200";
$filter="on";
$setting="3";
$alpha="1";
$filterAlpha="1";
$filterColor="0x3914AF";
$blurX="2";
$blurY="2";
$tweenTime="1";
$interval="5";
$lifeTime="3";
$strength="4";
$show="on";
$msg="Errormessage!";
$status = 1;
if(!empty($_GET["callback"])){
$callback = $_GET["callback"];
}else{
$callback = '';
}
if($callback!=''){
$sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t");
$array=Array("status"=>$status,"username"=>$username,"sign"=>$sign);
//若需要在PC端h5播放器中显示跑马灯,则$array改为:
//$array = Array("status"=>$status,"username"=>$username,"sign"=>$sign,"msg"=>$msg,"fontSize"=>$fontSize,"fontColor"=>$fontColor,"speed"=>$speed,"filter"=>$filter,"setting"=>$setting,"alpha"=>$alpha,"filterAlpha"=>$filterAlpha,"filterColor"=>$filterColor,"blurX"=>$blurX,"blurY"=>$blurY,"tweenTime"=>$tweenTime,"interval"=>$interval,"lifeTime"=>$lifeTime,"strength"=>$strength,"show"=>$show,);
$Json = json_encode($array);
echo $callback."(".$Json.")";
} else{
$sign = md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t&msg=$msg&fontSize=$fontSize&fontColor=$fontColor&speed=$speed&filter=$filter&setting=$setting&alpha=$alpha&filterAlpha=$filterAlpha&filterColor=$filterColor&blurX=$blurX&blurY=$blurY&interval=$interval&lifeTime=$lifeTime&tweenTime=$tweenTime&strength=$strength&show=$show");
$array = Array("status"=>$status,"username"=>$username,"sign"=>$sign,"msg"=>$msg,"fontSize"=>$fontSize,"fontColor"=>$fontColor,"speed"=>$speed,"filter"=>$filter,"setting"=>$setting,"alpha"=>$alpha,"filterAlpha"=>$filterAlpha,"filterColor"=>$filterColor,"blurX"=>$blurX,"blurY"=>$blurY,"tweenTime"=>$tweenTime,"interval"=>$interval,"lifeTime"=>$lifeTime,"strength"=>$strength,"show"=>$show,);
$Json = json_encode($array);
echo $Json;
}
?>
var path = require('path');
var express = require('express');
var app = express();
var rootPath = path.resolve(__dirname, '..');
// 这句必须在解决跨域问题之前,否则会导致css文件加载但样式无效的问题
app.use(express.static(rootPath+"/dist"))
app.all('*',function(req,res,next){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "text/html");
next();
})
app.get('*', function (req, res) {
res.sendFile(path.join(rootPath, 'dist/index.html'));
});
app.listen(3003, function (err) {
if (err) {
return console.error(err);
}
console.log('Listeningpc at http://localhost:3003/shyz/shyz/login');
});
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const webpack = require("webpack");
const ProgressBarPlugin = require("progress-bar-webpack-plugin");
const ENV = process.env.NODE_ENV || "development";
const enrtyBasePath = "/";
// const fileName = "demo";
function generateHtml(name, title) {
return {
title: title,
template: `./${name}.template.html`,
filename: `${name}.html`,
// chunks: [`${name}`],
// favicon: "./static/images/favicon.ico",
inject: true,
minify:
ENV === "production"|| ENV == undefined
? {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
removeEmptyAttributes: true,
minifyJS: true
}
: {}
};
}
module.exports = {
mode: ENV,
context: path.resolve(__dirname, "../src/"),
entry: {
index: "./index.jsx",
vendor: ["react", "react-dom", "redux", "react-redux", "react-router-dom"]
},
output: {
filename: "js/[name].[hash:6].js",
chunkFilename: "js/[name].[hash:6].js",
publicPath: "/",
path: path.resolve(__dirname, "../dist/")
},
resolve: {
extensions: ['.web.js', '.jsx', '.js', '.json','.less'],
mainFiles:["index", "default"],
alias: {
Utils: path.resolve(__dirname, "../src/utils"),
Components: path.resolve(__dirname, "../src/components"),
Static: path.resolve(__dirname, "../src/static")
}
},
plugins: [
new HtmlWebpackPlugin(generateHtml("index", "未木云学习平台")),
new webpack.DefinePlugin({
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
routerMode: JSON.stringify("hash")
}),
// new ProgressBarPlugin()
],
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: "styles",
test: /\.less$/,
chunks: "all",
enforce: true
},
commons: {
test: /[\\/]node_modules[\\/]/,
name: "vendors",
chunks: "all"
}
}
}
}
};
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const webpack = require("webpack");
const ENV = !process.env.NODE_ENV?"production":"development";
// const fileName = "demo";
console.log(ENV,"ENV=========ENV")
function generateHtml(name, title) {
return {
title: title,
template: `./${name}.template.html`,
filename: `${name}.html`,
// chunks: [`${name}`],
// favicon: "./static/images/favicon.ico",
inject: true,
minify:
ENV !== "production"|| ENV == undefined
? {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
removeEmptyAttributes: true,
minifyJS: true
}
: {}
};
}
module.exports = {
mode: ENV,
context: path.resolve(__dirname, "../src/"),
entry: {
index: "./index.jsx",
vendor: ["react", "react-dom", "redux", "react-redux", "react-router-dom"]
},
output: {
filename: "js/[name].[hash:6].js",
chunkFilename: "js/[name].[hash:6].js",
publicPath: "/",
path: path.resolve(__dirname, "../dist/")
},
resolve: {
extensions: ['.web.js', '.jsx', '.js', '.json','.less'],
mainFiles:["index", "default"],
alias: {
Utils: path.resolve(__dirname, "../src/utils"),
Components: path.resolve(__dirname, "../src/components"),
Static: path.resolve(__dirname, "../src/static")
}
},
plugins: [
new HtmlWebpackPlugin(generateHtml("index", "未木云学习平台")),
new webpack.DefinePlugin({
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
routerMode: JSON.stringify("hash")
}),
],
optimization: {
splitChunks: {
chunks: 'async',
minSize: 30000,
minChunks: 1,
maxAsyncRequests: 5,
maxInitialRequests: 3,
automaticNameDelimiter: '~',
name: true,
cacheGroups: {
styles: {
name: "styles",
test: /\.less$/,
chunks: "all",
enforce: true
},
vendors: {
test: /[\\/]node_modules[\\/]/,
priority: -10
},
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
}
}
}
}
};
/**
* webpack dev config
*/
const path = require("path");
const webpack = require("webpack");
const merge = require("webpack-merge");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const common = require("./webpack.base.config.js");
const ENV = process.env.NODE_ENV || "development";
module.exports = merge(common, {
mode: ENV=="production"||ENV==undefined?"production":"development",
devtool: ENV=="production"?"none":"source-map",
module: {
rules: [{
enforce: "pre",
test: /\.jsx?$/,
exclude: /node_modules/,
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: ["babel-loader"]
},
{
test: /\.(css|less)$/,
use: [
"style-loader",
"css-loader",
{
loader: "postcss-loader",
options: {
ident: "postcss",
plugins: [
require("autoprefixer")(),
require("cssnano")({
preset: "default"
})
]
}
},
"less-loader"
]
},
{
test: /\.(png|svg|jpg|gif|jpeg)$/,
use: [
{
loader: "file-loader",
options: {
limit: 8192,
name: "[name].[hash:6].[ext]",
outputPath: "static/images/"
}
}
]
}
]
},
plugins: [
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin()
],
devServer: {
contentBase: "./dist",
hot: true,
compress: true,
host: "localhost",
disableHostCheck: true,
historyApiFallback: true,
overlay: {
errors: true,
warnings: false
}
},
optimization: ENV=="production"||ENV==undefined?{
minimizer: [
new TerserPlugin({
terserOptions: {
parallel: true,
cache: true,
compress: { warnings: false, drop_console: true },
output: {
// comments: false
}
}
})
]
}:{}
});
/**
* webpack dev config
*/
const path = require("path");
const webpack = require("webpack");
const merge = require("webpack-merge");
const common = require("./webpack.base.config.js");
const ENV = process.env.NODE_ENV || "development";
module.exports = merge(common, {
mode: "development",
devtool:"source-map",
module: {
rules: [{
enforce: "pre",
test: /\.jsx?$/,
exclude: /node_modules/,
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: ["babel-loader"]
},
{
test: /\.(css|less)$/,
use: [
"style-loader",
"css-loader",
{
loader: "postcss-loader",
options: {
ident: "postcss",
plugins: [
require("autoprefixer")(),
require("cssnano")({
preset: "default"
})
]
}
},
"less-loader"
]
},
{
test: /\.(png|svg|jpg|gif|jpeg|ttf|otf)$/,
use: [
{
loader: "file-loader",
options: {
limit: 8192,
name: "[name].[hash:6].[ext]",
outputPath: "static/images/"
}
}
]
}
]
},
plugins: [
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin()
],
devServer: {
contentBase: "./dist",
hot: true,
compress: true,
host: "localhost",
disableHostCheck: true,
historyApiFallback: true,
overlay: {
errors: true,
warnings: false
}
},
optimization:{}
});
/**
* webpack dev config
*/
const path = require("path");
const webpack = require("webpack");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
// const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const merge = require("webpack-merge");
const common = require("./webpack.base.config.js");
module.exports = merge(common, {
mode: "production",
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.less$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: "../"
}
},
"css-loader",
{
loader: "postcss-loader",
options: {
ident: "postcss",
plugins: [
require("autoprefixer")(),
require("cssnano")({
preset: "default"
})
]
}
},
"less-loader"
]
},
{
test: /\.(png|jpg|gif|jpeg)$/,
use: [
{
loader: "url-loader",
options: {
limit: 8192,
name: "[name].[hash:6].[ext]",
outputPath: "image/"
}
}
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: "css/[name].[hash:5].css"
// publicPath: "/"
}),
],
optimization: {
minimizer: [
new TerserPlugin({
terserOptions: {
parallel: true,
cache: true,
compress: { warnings: false, drop_console: true },
output: {
// comments: false
}
}
})
]
}
});
/**
* auth: 陈万军
* webpack prod config
*/
const merge = require("webpack-merge");
const TerserPlugin = require("terser-webpack-plugin");
const common = require("./webpack.base.config.js");
const ProgressBarPlugin = require("progress-bar-webpack-plugin");
module.exports = merge(common, {
mode: "production",
module: {
rules: [{
enforce: "pre",
test: /\.jsx?$/,
exclude: /node_modules/,
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: ["babel-loader"]
},
{
test: /\.(css|less)$/,
use: [
"style-loader",
"css-loader",
{
loader: "postcss-loader",
options: {
ident: "postcss",
plugins: [
require("autoprefixer")(),
require("cssnano")({
preset: "default"
})
]
}
},
"less-loader"
]
},
{
test: /\.(png|svg|jpg|gif|jpeg|ttf|otf)$/,
use: [
{
loader: "file-loader",
options: {
limit: 8192,
name: "[name].[hash:6].[ext]",
outputPath: "static/images/"
}
}
]
}
]
},
performance: {
hints: "warning",
maxAssetSize: 30000000,
maxEntrypointSize: 50000000,
assetFilter: function(assetFilename) {
return assetFilename.endsWith(".css") || assetFilename.endsWith(".js");
},
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
sourceMap: true, // Must be set to true if using source-maps in production
terserOptions: {
output: {
},
parallel: true,
cache: true,
drop_console: true,
drop_debugger: false,
pure_funcs: ['console.log','Warning','warnings','debugger'], // 移除console
}
})
]
}
});
git checkout $1
git pull
npm run build
./pushFromMac.sh package
<cross-domain-policy>
<allow-access-from domain="*.polyv.net"/>
</cross-domain-policy>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge, chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link id="faviconLink" rel="shortcut icon" href="/static/favicon.ico">
<link href="/static/lib/antd.min.css" rel="stylesheet" type="text/css">
<!--需要title 国际化 代码在/src/index.jsx 中获取修改-->
<title id="htmlTitle"></title>
<!--<title id="htmlTitle">未木云学习平台</title>-->
</head>
<body>
<div id="root"></div>
<script>
//30分钟不操作退回登陆页
var move = document.getElementById('root')
function onmove() {
console.log(window.location)
var path = window.location.pathname
var login = '/' + window.location.pathname.split("/")[1] + '/' + window.location.pathname.split("/")[2] + '/login'
if (path.substring(path.length - 5) !== 'login') {
sessionStorage.clear()
window.location.href = window.location.origin + login
}
}
function debounce(func, wait) {
var timeout;
return function () {
var context = this;
var args = arguments;
if (timeout) clearTimeout(timeout);
timeout = window.setTimeout(function () {
func.apply(context, args)
}, wait);
}
}
move.onmousemove = debounce(onmove, 7200000);
if (typeof Object.assign != 'function') {
Object.assign = function (target) {
'use strict';
if (target == null) {
throw new TypeError('Cannot convert undefined or null to object');
}
target = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source != null) {
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
}
return target;
};
}
if (typeof "".includes != 'function') {
String.prototype.includes = function (str) {
if(this.indexOf(str)!=-1){
return true;
}else{
return false;
}
}
}
if (typeof [].includes != 'function') {
Array.prototype.includes = function (str) {
if(this.indexOf(str)!=-1){
return true;
}else{
return false;
}
}
}
if (typeof [].fill != 'function') {
Array.prototype.fill = function (str) {
for(var i = 0;i<this.length;i++){
this[i] = str;
}
return this;
}
}
// if (typeof [].entries != 'function') {
// Array.prototype.entries = function (str) {
// for(var i = 0;i<this.length;i++){
// this[i] = str;
// }
// return this;
// }
// }
</script>
<script type="text/javascript" src="/static/lib/crypto1/crypto/crypto.js"></script>
<script type="text/javascript" src="/static/lib/crypto1/hmac/hmac.js"></script>
<script type="text/javascript" src="/static/lib/crypto1/sha1/sha1.js"></script>
<script type="text/javascript" src="/static/lib/base64.js"></script>
<script type="text/javascript" src="/static/variable.js"></script>
<script type="text/javascript" src="/static/lib/sm2.min.js"></script>
<script type="text/javascript" src="/static/lib/es6-promise.auto.min.js"></script>
<script type="text/javascript" src="/js/styles.558ae8.js"></script><script type="text/javascript" src="/js/index.558ae8.js"></script><script type="text/javascript" src="/js/vendor.558ae8.js"></script></body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1">
<title>站点维护中</title>
<style>
body,
html {
width: 100%;
margin: 0;
padding: 0;
}
.site-maintain-container {
max-width: 1200px;
width: 100%;
margin: 0 auto;
text-align: center;
}
.site-maintain-container img {
width: 450px;
height: 341px;
margin-top: 160px;
}
.site-maintain-tip-text {
width: 655px;
text-align: center;
margin: 0 auto;
margin-top: 20px;
font-size: 30px;
font-weight: 500;
color: #666666;
line-height: 42px;
letter-spacing: 1px;
}
@media screen and (max-width: 600px) {
body,
html {
width: 100%;
margin: 0;
padding: 0;
}
.site-maintain-container {
width: 100%;
margin: 0 auto;
text-align: center;
}
.site-maintain-container img {
width: 215px;
height: 171px;
margin-top: 135px;
}
.site-maintain-tip-text {
width: 100%;
text-align: center;
margin: 0 auto;
margin-top: 20px;
font-size: 14px;
font-weight: 500;
color: #999;
line-height: 20px;
letter-spacing: 1px;
word-break: break-all;
}
}
</style>
</head>
<body>
<div class="site-maintain-container">
<img src="https://customproject.oss-cn-shanghai.aliyuncs.com/photo/site_maintenance.png" alt="">
<div class="site-maintain-tip-text">
</div>
</div>
<script>
function getUrlParam(code){
var searchText = window.location.search.split("?")[1].split("&");
var result = "";
for(var i = 0;i<searchText.length;i++){
var arr = searchText[i].split("=");
if(arr[0]==code){
result = arr[1];
break;
}
}
return result;
}
window.onload = function () {
var textDom = document.querySelector(".site-maintain-tip-text");
var text = getUrlParam("text");
textDom.innerHTML = decodeURIComponent(text)||"站点维护中,给您的学习带来不便,敬请谅解";
}
</script>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
var Base64 = {
// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode : function (input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
// public method for decoding
decode : function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = Base64._utf8_decode(output);
return output;
},
// private method for UTF-8 encoding
_utf8_encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var k=Crypto.util;var e=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22];for(var j=[],g=0;g<256;g++){j[e[g]]=g}var c=[],b=[],q=[],n=[],h=[],f=[];function p(u,t){for(var s=0,v=0;v<8;v++){if(t&1){s^=u}var w=u&128;u=(u<<1)&255;if(w){u^=27}t>>>=1}return s}for(var g=0;g<256;g++){c[g]=p(g,2);b[g]=p(g,3);q[g]=p(g,9);n[g]=p(g,11);h[g]=p(g,13);f[g]=p(g,14)}var d=[0,1,2,4,8,16,32,64,128,27,54];var a=[[],[],[],[]],r,o,m;var l=Crypto.AES={encrypt:function(v,u,w){var i=k.stringToBytes(v),t=k.randomBytes(l._blocksize*4),s=Crypto.PBKDF2(u,k.bytesToString(t),32,{asBytes:true});w=w||Crypto.mode.OFB;l._init(s);w.encrypt(l,i,t);return k.bytesToBase64(t.concat(i))},decrypt:function(u,t,v){var w=k.base64ToBytes(u),s=w.splice(0,l._blocksize*4),i=Crypto.PBKDF2(t,k.bytesToString(s),32,{asBytes:true});v=v||Crypto.mode.OFB;l._init(i);v.decrypt(l,w,s);return k.bytesToString(w)},_blocksize:4,_encryptblock:function(s,t){for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){a[z][i]=s[t+i*4+z]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[i][z]}}for(var y=1;y<o;y++){for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=e[a[z][i]]}}a[1].push(a[1].shift());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].unshift(a[3].pop());for(var i=0;i<4;i++){var x=a[0][i],w=a[1][i],v=a[2][i],u=a[3][i];a[0][i]=c[x]^b[w]^v^u;a[1][i]=x^c[w]^b[v]^u;a[2][i]=x^w^c[v]^b[u];a[3][i]=b[x]^w^v^c[u]}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[y*4+i][z]}}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=e[a[z][i]]}}a[1].push(a[1].shift());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].unshift(a[3].pop());for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[o*4+i][z]}}for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){s[t+i*4+z]=a[z][i]}}},_decryptblock:function(t,s){for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){a[z][i]=t[s+i*4+z]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[o*4+i][z]}}for(var y=1;y<o;y++){a[1].unshift(a[1].pop());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].push(a[3].shift());for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=j[a[z][i]]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[(o-y)*4+i][z]}}for(var i=0;i<4;i++){var x=a[0][i],w=a[1][i],v=a[2][i],u=a[3][i];a[0][i]=f[x]^n[w]^h[v]^q[u];a[1][i]=q[x]^f[w]^n[v]^h[u];a[2][i]=h[x]^q[w]^f[v]^n[u];a[3][i]=n[x]^h[w]^q[v]^f[u]}}a[1].unshift(a[1].pop());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].push(a[3].shift());for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=j[a[z][i]]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[i][z]}}for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){t[s+i*4+z]=a[z][i]}}},_init:function(i){r=i.length/4;o=r+6;l._keyexpansion(i)},_keyexpansion:function(s){m=[];for(var t=0;t<r;t++){m[t]=[s[t*4],s[t*4+1],s[t*4+2],s[t*4+3]]}for(var t=r;t<l._blocksize*(o+1);t++){var i=[m[t-1][0],m[t-1][1],m[t-1][2],m[t-1][3]];if(t%r==0){i.push(i.shift());i[0]=e[i[0]];i[1]=e[i[1]];i[2]=e[i[2]];i[3]=e[i[3]];i[0]^=d[t/r]}else{if(r>6&&t%r==4){i[0]=e[i[0]];i[1]=e[i[1]];i[2]=e[i[2]];i[3]=e[i[3]]}}m[t]=[m[t-r][0]^i[0],m[t-r][1]^i[1],m[t-r][2]^i[2],m[t-r][3]^i[3]]}}}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
// Precomputed SBOX
var SBOX = [ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc,
0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a,
0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b,
0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85,
0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17,
0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88,
0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9,
0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6,
0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94,
0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68,
0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 ];
// Compute inverse SBOX lookup table
for (var INVSBOX = [], i = 0; i < 256; i++) INVSBOX[SBOX[i]] = i;
// Compute mulitplication in GF(2^8) lookup tables
var MULT2 = [],
MULT3 = [],
MULT9 = [],
MULTB = [],
MULTD = [],
MULTE = [];
function xtime(a, b) {
for (var result = 0, i = 0; i < 8; i++) {
if (b & 1) result ^= a;
var hiBitSet = a & 0x80;
a = (a << 1) & 0xFF;
if (hiBitSet) a ^= 0x1b;
b >>>= 1;
}
return result;
}
for (var i = 0; i < 256; i++) {
MULT2[i] = xtime(i,2);
MULT3[i] = xtime(i,3);
MULT9[i] = xtime(i,9);
MULTB[i] = xtime(i,0xB);
MULTD[i] = xtime(i,0xD);
MULTE[i] = xtime(i,0xE);
}
// Precomputed RCon lookup
var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
// Inner state
var state = [[], [], [], []],
keylength,
nrounds,
keyschedule;
var AES = Crypto.AES = {
/**
* Public API
*/
encrypt: function (message, password, mode) {
var
// Convert to bytes
m = util.stringToBytes(message),
// Generate random IV
iv = util.randomBytes(AES._blocksize * 4),
// Generate key
k = Crypto.PBKDF2(password, util.bytesToString(iv), 32, { asBytes: true });
// Determine mode
mode = mode || Crypto.mode.OFB;
// Encrypt
AES._init(k);
mode.encrypt(AES, m, iv);
// Return ciphertext
return util.bytesToBase64(iv.concat(m));
},
decrypt: function (ciphertext, password, mode) {
var
// Convert to bytes
c = util.base64ToBytes(ciphertext),
// Separate IV and message
iv = c.splice(0, AES._blocksize * 4),
// Generate key
k = Crypto.PBKDF2(password, util.bytesToString(iv), 32, { asBytes: true });
// Determine mode
mode = mode || Crypto.mode.OFB;
// Decrypt
AES._init(k);
mode.decrypt(AES, c, iv);
// Return plaintext
return util.bytesToString(c);
},
/**
* Package private methods and properties
*/
_blocksize: 4,
_encryptblock: function (m, offset) {
// Set input
for (var row = 0; row < AES._blocksize; row++) {
for (var col = 0; col < 4; col++)
state[row][col] = m[offset + col * 4 + row];
}
// Add round key
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] ^= keyschedule[col][row];
}
for (var round = 1; round < nrounds; round++) {
// Sub bytes
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] = SBOX[state[row][col]];
}
// Shift rows
state[1].push(state[1].shift());
state[2].push(state[2].shift());
state[2].push(state[2].shift());
state[3].unshift(state[3].pop());
// Mix columns
for (var col = 0; col < 4; col++) {
var s0 = state[0][col],
s1 = state[1][col],
s2 = state[2][col],
s3 = state[3][col];
state[0][col] = MULT2[s0] ^ MULT3[s1] ^ s2 ^ s3;
state[1][col] = s0 ^ MULT2[s1] ^ MULT3[s2] ^ s3;
state[2][col] = s0 ^ s1 ^ MULT2[s2] ^ MULT3[s3];
state[3][col] = MULT3[s0] ^ s1 ^ s2 ^ MULT2[s3];
}
// Add round key
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] ^= keyschedule[round * 4 + col][row];
}
}
// Sub bytes
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] = SBOX[state[row][col]];
}
// Shift rows
state[1].push(state[1].shift());
state[2].push(state[2].shift());
state[2].push(state[2].shift());
state[3].unshift(state[3].pop());
// Add round key
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] ^= keyschedule[nrounds * 4 + col][row];
}
// Set output
for (var row = 0; row < AES._blocksize; row++) {
for (var col = 0; col < 4; col++)
m[offset + col * 4 + row] = state[row][col];
}
},
_decryptblock: function (c, offset) {
// Set input
for (var row = 0; row < AES._blocksize; row++) {
for (var col = 0; col < 4; col++)
state[row][col] = c[offset + col * 4 + row];
}
// Add round key
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] ^= keyschedule[nrounds * 4 + col][row];
}
for (var round = 1; round < nrounds; round++) {
// Inv shift rows
state[1].unshift(state[1].pop());
state[2].push(state[2].shift());
state[2].push(state[2].shift());
state[3].push(state[3].shift());
// Inv sub bytes
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] = INVSBOX[state[row][col]];
}
// Add round key
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] ^= keyschedule[(nrounds - round) * 4 + col][row];
}
// Inv mix columns
for (var col = 0; col < 4; col++) {
var s0 = state[0][col],
s1 = state[1][col],
s2 = state[2][col],
s3 = state[3][col];
state[0][col] = MULTE[s0] ^ MULTB[s1] ^ MULTD[s2] ^ MULT9[s3];
state[1][col] = MULT9[s0] ^ MULTE[s1] ^ MULTB[s2] ^ MULTD[s3];
state[2][col] = MULTD[s0] ^ MULT9[s1] ^ MULTE[s2] ^ MULTB[s3];
state[3][col] = MULTB[s0] ^ MULTD[s1] ^ MULT9[s2] ^ MULTE[s3];
}
}
// Inv shift rows
state[1].unshift(state[1].pop());
state[2].push(state[2].shift());
state[2].push(state[2].shift());
state[3].push(state[3].shift());
// Inv sub bytes
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] = INVSBOX[state[row][col]];
}
// Add round key
for (var row = 0; row < 4; row++) {
for (var col = 0; col < 4; col++)
state[row][col] ^= keyschedule[col][row];
}
// Set output
for (var row = 0; row < AES._blocksize; row++) {
for (var col = 0; col < 4; col++)
c[offset + col * 4 + row] = state[row][col];
}
},
/**
* Private methods
*/
_init: function (k) {
keylength = k.length / 4;
nrounds = keylength + 6;
AES._keyexpansion(k);
},
// Generate a key schedule
_keyexpansion: function (k) {
keyschedule = [];
for (var row = 0; row < keylength; row++) {
keyschedule[row] = [
k[row * 4],
k[row * 4 + 1],
k[row * 4 + 2],
k[row * 4 + 3]
];
}
for (var row = keylength; row < AES._blocksize * (nrounds + 1); row++) {
var temp = [
keyschedule[row - 1][0],
keyschedule[row - 1][1],
keyschedule[row - 1][2],
keyschedule[row - 1][3]
];
if (row % keylength == 0) {
// Rot word
temp.push(temp.shift());
// Sub word
temp[0] = SBOX[temp[0]];
temp[1] = SBOX[temp[1]];
temp[2] = SBOX[temp[2]];
temp[3] = SBOX[temp[3]];
temp[0] ^= RCON[row / keylength];
} else if (keylength > 6 && row % keylength == 4) {
// Sub word
temp[0] = SBOX[temp[0]];
temp[1] = SBOX[temp[1]];
temp[2] = SBOX[temp[2]];
temp[3] = SBOX[temp[3]];
}
keyschedule[row] = [
keyschedule[row - keylength][0] ^ temp[0],
keyschedule[row - keylength][1] ^ temp[1],
keyschedule[row - keylength][2] ^ temp[2],
keyschedule[row - keylength][3] ^ temp[3]
];
}
}
};
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
Crypto.mode.CBC={encrypt:function(b,a,c){var f=b._blocksize*4;a.push(128);for(var e=0;e<a.length;e+=f){if(e==0){for(var d=0;d<f;d++){a[d]^=c[d]}}else{for(var d=0;d<f;d++){a[e+d]^=a[e+d-f]}}b._encryptblock(a,e)}},decrypt:function(a,j,d){var h=a._blocksize*4;for(var g=0;g<j.length;g+=h){var b=j.slice(g,g+h);a._decryptblock(j,g);if(g==0){for(var e=0;e<h;e++){j[e]^=d[e]}}else{for(var e=0;e<h;e++){j[g+e]^=f[e]}}var f=b}while(j.pop()!=128){}}};
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
Crypto.mode.CBC = {
encrypt: function (cipher, m, iv) {
var blockSizeInBytes = cipher._blocksize * 4;
// Pad
m.push(0x80);
// Encrypt each block
for (var offset = 0; offset < m.length; offset += blockSizeInBytes) {
if (offset == 0) {
// XOR first block using IV
for (var i = 0; i < blockSizeInBytes; i++)
m[i] ^= iv[i];
}
else {
// XOR this block using previous crypted block
for (var i = 0; i < blockSizeInBytes; i++)
m[offset + i] ^= m[offset + i - blockSizeInBytes];
}
// Encrypt block
cipher._encryptblock(m, offset);
}
},
decrypt: function (cipher, c, iv) {
var blockSizeInBytes = cipher._blocksize * 4;
// Decrypt each block
for (var offset = 0; offset < c.length; offset += blockSizeInBytes) {
// Save this crypted block
var thisCryptedBlock = c.slice(offset, offset + blockSizeInBytes);
// Decrypt block
cipher._decryptblock(c, offset);
if (offset == 0) {
// XOR first block using IV
for (var i = 0; i < blockSizeInBytes; i++)
c[i] ^= iv[i];
}
else {
// XOR decrypted block using previous crypted block
for (var i = 0; i < blockSizeInBytes; i++)
c[offset + i] ^= prevCryptedBlock[i];
}
// This crypted block is the new previous crypted block
var prevCryptedBlock = thisCryptedBlock;
}
// Strip padding
while (c.pop() != 0x80) ;
}
};
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var a=Crypto.util;var b=Crypto.MD5=function(e,c){var d=a.wordsToBytes(b._md5(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._md5=function(s){var g=a.stringToWords(s),h=s.length*8,q=1732584193,p=-271733879,o=-1732584194,n=271733878;for(var j=0;j<g.length;j++){g[j]=((g[j]<<8)|(g[j]>>>24))&16711935|((g[j]<<24)|(g[j]>>>8))&4278255360}g[h>>>5]|=128<<(h%32);g[(((h+64)>>>9)<<4)+14]=h;for(var j=0;j<g.length;j+=16){var e=q,k=p,f=o,r=n;q=b._ff(q,p,o,n,g[j+0],7,-680876936);n=b._ff(n,q,p,o,g[j+1],12,-389564586);o=b._ff(o,n,q,p,g[j+2],17,606105819);p=b._ff(p,o,n,q,g[j+3],22,-1044525330);q=b._ff(q,p,o,n,g[j+4],7,-176418897);n=b._ff(n,q,p,o,g[j+5],12,1200080426);o=b._ff(o,n,q,p,g[j+6],17,-1473231341);p=b._ff(p,o,n,q,g[j+7],22,-45705983);q=b._ff(q,p,o,n,g[j+8],7,1770035416);n=b._ff(n,q,p,o,g[j+9],12,-1958414417);o=b._ff(o,n,q,p,g[j+10],17,-42063);p=b._ff(p,o,n,q,g[j+11],22,-1990404162);q=b._ff(q,p,o,n,g[j+12],7,1804603682);n=b._ff(n,q,p,o,g[j+13],12,-40341101);o=b._ff(o,n,q,p,g[j+14],17,-1502002290);p=b._ff(p,o,n,q,g[j+15],22,1236535329);q=b._gg(q,p,o,n,g[j+1],5,-165796510);n=b._gg(n,q,p,o,g[j+6],9,-1069501632);o=b._gg(o,n,q,p,g[j+11],14,643717713);p=b._gg(p,o,n,q,g[j+0],20,-373897302);q=b._gg(q,p,o,n,g[j+5],5,-701558691);n=b._gg(n,q,p,o,g[j+10],9,38016083);o=b._gg(o,n,q,p,g[j+15],14,-660478335);p=b._gg(p,o,n,q,g[j+4],20,-405537848);q=b._gg(q,p,o,n,g[j+9],5,568446438);n=b._gg(n,q,p,o,g[j+14],9,-1019803690);o=b._gg(o,n,q,p,g[j+3],14,-187363961);p=b._gg(p,o,n,q,g[j+8],20,1163531501);q=b._gg(q,p,o,n,g[j+13],5,-1444681467);n=b._gg(n,q,p,o,g[j+2],9,-51403784);o=b._gg(o,n,q,p,g[j+7],14,1735328473);p=b._gg(p,o,n,q,g[j+12],20,-1926607734);q=b._hh(q,p,o,n,g[j+5],4,-378558);n=b._hh(n,q,p,o,g[j+8],11,-2022574463);o=b._hh(o,n,q,p,g[j+11],16,1839030562);p=b._hh(p,o,n,q,g[j+14],23,-35309556);q=b._hh(q,p,o,n,g[j+1],4,-1530992060);n=b._hh(n,q,p,o,g[j+4],11,1272893353);o=b._hh(o,n,q,p,g[j+7],16,-155497632);p=b._hh(p,o,n,q,g[j+10],23,-1094730640);q=b._hh(q,p,o,n,g[j+13],4,681279174);n=b._hh(n,q,p,o,g[j+0],11,-358537222);o=b._hh(o,n,q,p,g[j+3],16,-722521979);p=b._hh(p,o,n,q,g[j+6],23,76029189);q=b._hh(q,p,o,n,g[j+9],4,-640364487);n=b._hh(n,q,p,o,g[j+12],11,-421815835);o=b._hh(o,n,q,p,g[j+15],16,530742520);p=b._hh(p,o,n,q,g[j+2],23,-995338651);q=b._ii(q,p,o,n,g[j+0],6,-198630844);n=b._ii(n,q,p,o,g[j+7],10,1126891415);o=b._ii(o,n,q,p,g[j+14],15,-1416354905);p=b._ii(p,o,n,q,g[j+5],21,-57434055);q=b._ii(q,p,o,n,g[j+12],6,1700485571);n=b._ii(n,q,p,o,g[j+3],10,-1894986606);o=b._ii(o,n,q,p,g[j+10],15,-1051523);p=b._ii(p,o,n,q,g[j+1],21,-2054922799);q=b._ii(q,p,o,n,g[j+8],6,1873313359);n=b._ii(n,q,p,o,g[j+15],10,-30611744);o=b._ii(o,n,q,p,g[j+6],15,-1560198380);p=b._ii(p,o,n,q,g[j+13],21,1309151649);q=b._ii(q,p,o,n,g[j+4],6,-145523070);n=b._ii(n,q,p,o,g[j+11],10,-1120210379);o=b._ii(o,n,q,p,g[j+2],15,718787259);p=b._ii(p,o,n,q,g[j+9],21,-343485551);q+=e;p+=k;o+=f;n+=r}return a.endian([q,p,o,n])};b._ff=function(g,f,l,j,e,i,h){var k=g+(f&l|~f&j)+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._gg=function(g,f,l,j,e,i,h){var k=g+(f&j|l&~j)+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._hh=function(g,f,l,j,e,i,h){var k=g+(f^l^j)+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._ii=function(g,f,l,j,e,i,h){var k=g+(l^(f|~j))+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._blocksize=16})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var a=Crypto.util;var b=Crypto.SHA1=function(e,c){var d=a.wordsToBytes(b._sha1(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._sha1=function(k){var u=a.stringToWords(k),v=k.length*8,o=[],q=1732584193,p=-271733879,h=-1732584194,g=271733878,f=-1009589776;u[v>>5]|=128<<(24-v%32);u[((v+64>>>9)<<4)+15]=v;for(var y=0;y<u.length;y+=16){var D=q,C=p,B=h,A=g,z=f;for(var x=0;x<80;x++){if(x<16){o[x]=u[y+x]}else{var s=o[x-3]^o[x-8]^o[x-14]^o[x-16];o[x]=(s<<1)|(s>>>31)}var r=((q<<5)|(q>>>27))+f+(o[x]>>>0)+(x<20?(p&h|~p&g)+1518500249:x<40?(p^h^g)+1859775393:x<60?(p&h|p&g|h&g)-1894007588:(p^h^g)-899497514);f=g;g=h;h=(p<<30)|(p>>>2);p=q;q=r}q+=D;p+=C;h+=B;g+=A;f+=z}return[q,p,h,g,f]};b._blocksize=16})();(function(){var a=Crypto.util;Crypto.HMAC=function(g,h,f,d){f=f.length>g._blocksize*4?g(f,{asBytes:true}):a.stringToBytes(f);var c=f,j=f.slice(0);for(var e=0;e<g._blocksize*4;e++){c[e]^=92;j[e]^=54}var b=g(a.bytesToString(c)+g(a.bytesToString(j)+h,{asString:true}),{asBytes:true});return d&&d.asBytes?b:d&&d.asString?a.bytesToString(b):a.bytesToHex(b)}})();(function(){var a=Crypto.util;Crypto.PBKDF2=function(m,k,b,p){var o=p&&p.hasher||Crypto.SHA1,e=p&&p.iterations||1;function l(i,j){return Crypto.HMAC(o,j,i,{asBytes:true})}var d=[],c=1;while(d.length<b){var f=l(m,k+a.bytesToString(a.wordsToBytes([c])));for(var n=f,h=1;h<e;h++){n=l(m,a.bytesToString(n));for(var g=0;g<f.length;g++){f[g]^=n[g]}}d=d.concat(f);c++}d.length=b;return p&&p.asBytes?d:p&&p.asString?a.bytesToString(d):a.bytesToHex(d)}})();(function(){var a=Crypto.util;var b=Crypto.MARC4={encrypt:function(g,f){var c=a.stringToBytes(g),e=a.randomBytes(16),d=Crypto.PBKDF2(f,a.bytesToString(e),32,{asBytes:true});b._marc4(c,d,1536);return a.bytesToBase64(e.concat(c))},decrypt:function(g,f){var h=a.base64ToBytes(g),e=h.splice(0,16),d=Crypto.PBKDF2(f,a.bytesToString(e),32,{asBytes:true});b._marc4(h,d,1536);return a.bytesToString(h)},_marc4:function(c,f,e){var h,g,l,d;for(h=0,l=[];h<256;h++){l[h]=h}for(h=0,g=0;h<256;h++){g=(g+l[h]+f[h%f.length])%256;d=l[h];l[h]=l[g];l[g]=d}h=g=0;for(var f=0-e;f<c.length;f++){h=(h+1)%256;g=(g+l[h])%256;d=l[h];l[h]=l[g];l[g]=d;if(f<0){continue}c[f]^=l[(l[h]+l[g])%256]}}}})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var a=Crypto.util;var b=Crypto.SHA1=function(e,c){var d=a.wordsToBytes(b._sha1(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._sha1=function(k){var u=a.stringToWords(k),v=k.length*8,o=[],q=1732584193,p=-271733879,h=-1732584194,g=271733878,f=-1009589776;u[v>>5]|=128<<(24-v%32);u[((v+64>>>9)<<4)+15]=v;for(var y=0;y<u.length;y+=16){var D=q,C=p,B=h,A=g,z=f;for(var x=0;x<80;x++){if(x<16){o[x]=u[y+x]}else{var s=o[x-3]^o[x-8]^o[x-14]^o[x-16];o[x]=(s<<1)|(s>>>31)}var r=((q<<5)|(q>>>27))+f+(o[x]>>>0)+(x<20?(p&h|~p&g)+1518500249:x<40?(p^h^g)+1859775393:x<60?(p&h|p&g|h&g)-1894007588:(p^h^g)-899497514);f=g;g=h;h=(p<<30)|(p>>>2);p=q;q=r}q+=D;p+=C;h+=B;g+=A;f+=z}return[q,p,h,g,f]};b._blocksize=16})();(function(){var a=Crypto.util;Crypto.HMAC=function(g,h,f,d){f=f.length>g._blocksize*4?g(f,{asBytes:true}):a.stringToBytes(f);var c=f,j=f.slice(0);for(var e=0;e<g._blocksize*4;e++){c[e]^=92;j[e]^=54}var b=g(a.bytesToString(c)+g(a.bytesToString(j)+h,{asString:true}),{asBytes:true});return d&&d.asBytes?b:d&&d.asString?a.bytesToString(b):a.bytesToHex(b)}})();(function(){var a=Crypto.util;Crypto.PBKDF2=function(m,k,b,p){var o=p&&p.hasher||Crypto.SHA1,e=p&&p.iterations||1;function l(i,j){return Crypto.HMAC(o,j,i,{asBytes:true})}var d=[],c=1;while(d.length<b){var f=l(m,k+a.bytesToString(a.wordsToBytes([c])));for(var n=f,h=1;h<e;h++){n=l(m,a.bytesToString(n));for(var g=0;g<f.length;g++){f[g]^=n[g]}}d=d.concat(f);c++}d.length=b;return p&&p.asBytes?d:p&&p.asString?a.bytesToString(d):a.bytesToHex(d)}})();(function(){Crypto.mode.OFB={encrypt:a,decrypt:a};function a(c,b,d){var g=c._blocksize*4,f=d.slice(0);for(var e=0;e<b.length;e++){if(e%g==0){c._encryptblock(f,0)}b[e]^=f[e%g]}}})();(function(){var k=Crypto.util;var e=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22];for(var j=[],g=0;g<256;g++){j[e[g]]=g}var c=[],b=[],q=[],n=[],h=[],f=[];function p(u,t){for(var s=0,v=0;v<8;v++){if(t&1){s^=u}var w=u&128;u=(u<<1)&255;if(w){u^=27}t>>>=1}return s}for(var g=0;g<256;g++){c[g]=p(g,2);b[g]=p(g,3);q[g]=p(g,9);n[g]=p(g,11);h[g]=p(g,13);f[g]=p(g,14)}var d=[0,1,2,4,8,16,32,64,128,27,54];var a=[[],[],[],[]],r,o,m;var l=Crypto.AES={encrypt:function(v,u,w){var i=k.stringToBytes(v),t=k.randomBytes(l._blocksize*4),s=Crypto.PBKDF2(u,k.bytesToString(t),32,{asBytes:true});w=w||Crypto.mode.OFB;l._init(s);w.encrypt(l,i,t);return k.bytesToBase64(t.concat(i))},decrypt:function(u,t,v){var w=k.base64ToBytes(u),s=w.splice(0,l._blocksize*4),i=Crypto.PBKDF2(t,k.bytesToString(s),32,{asBytes:true});v=v||Crypto.mode.OFB;l._init(i);v.decrypt(l,w,s);return k.bytesToString(w)},_blocksize:4,_encryptblock:function(s,t){for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){a[z][i]=s[t+i*4+z]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[i][z]}}for(var y=1;y<o;y++){for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=e[a[z][i]]}}a[1].push(a[1].shift());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].unshift(a[3].pop());for(var i=0;i<4;i++){var x=a[0][i],w=a[1][i],v=a[2][i],u=a[3][i];a[0][i]=c[x]^b[w]^v^u;a[1][i]=x^c[w]^b[v]^u;a[2][i]=x^w^c[v]^b[u];a[3][i]=b[x]^w^v^c[u]}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[y*4+i][z]}}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=e[a[z][i]]}}a[1].push(a[1].shift());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].unshift(a[3].pop());for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[o*4+i][z]}}for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){s[t+i*4+z]=a[z][i]}}},_decryptblock:function(t,s){for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){a[z][i]=t[s+i*4+z]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[o*4+i][z]}}for(var y=1;y<o;y++){a[1].unshift(a[1].pop());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].push(a[3].shift());for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=j[a[z][i]]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[(o-y)*4+i][z]}}for(var i=0;i<4;i++){var x=a[0][i],w=a[1][i],v=a[2][i],u=a[3][i];a[0][i]=f[x]^n[w]^h[v]^q[u];a[1][i]=q[x]^f[w]^n[v]^h[u];a[2][i]=h[x]^q[w]^f[v]^n[u];a[3][i]=n[x]^h[w]^q[v]^f[u]}}a[1].unshift(a[1].pop());a[2].push(a[2].shift());a[2].push(a[2].shift());a[3].push(a[3].shift());for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]=j[a[z][i]]}}for(var z=0;z<4;z++){for(var i=0;i<4;i++){a[z][i]^=m[i][z]}}for(var z=0;z<l._blocksize;z++){for(var i=0;i<4;i++){t[s+i*4+z]=a[z][i]}}},_init:function(i){r=i.length/4;o=r+6;l._keyexpansion(i)},_keyexpansion:function(s){m=[];for(var t=0;t<r;t++){m[t]=[s[t*4],s[t*4+1],s[t*4+2],s[t*4+3]]}for(var t=r;t<l._blocksize*(o+1);t++){var i=[m[t-1][0],m[t-1][1],m[t-1][2],m[t-1][3]];if(t%r==0){i.push(i.shift());i[0]=e[i[0]];i[1]=e[i[1]];i[2]=e[i[2]];i[3]=e[i[3]];i[0]^=d[t/r]}else{if(r>6&&t%r==4){i[0]=e[i[0]];i[1]=e[i[1]];i[2]=e[i[2]];i[3]=e[i[3]]}}m[t]=[m[t-r][0]^i[0],m[t-r][1]^i[1],m[t-r][2]^i[2],m[t-r][3]^i[3]]}}}})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var a=Crypto.util;var b=Crypto.SHA1=function(e,c){var d=a.wordsToBytes(b._sha1(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._sha1=function(k){var u=a.stringToWords(k),v=k.length*8,o=[],q=1732584193,p=-271733879,h=-1732584194,g=271733878,f=-1009589776;u[v>>5]|=128<<(24-v%32);u[((v+64>>>9)<<4)+15]=v;for(var y=0;y<u.length;y+=16){var D=q,C=p,B=h,A=g,z=f;for(var x=0;x<80;x++){if(x<16){o[x]=u[y+x]}else{var s=o[x-3]^o[x-8]^o[x-14]^o[x-16];o[x]=(s<<1)|(s>>>31)}var r=((q<<5)|(q>>>27))+f+(o[x]>>>0)+(x<20?(p&h|~p&g)+1518500249:x<40?(p^h^g)+1859775393:x<60?(p&h|p&g|h&g)-1894007588:(p^h^g)-899497514);f=g;g=h;h=(p<<30)|(p>>>2);p=q;q=r}q+=D;p+=C;h+=B;g+=A;f+=z}return[q,p,h,g,f]};b._blocksize=16})();(function(){var a=Crypto.util;Crypto.HMAC=function(g,h,f,d){f=f.length>g._blocksize*4?g(f,{asBytes:true}):a.stringToBytes(f);var c=f,j=f.slice(0);for(var e=0;e<g._blocksize*4;e++){c[e]^=92;j[e]^=54}var b=g(a.bytesToString(c)+g(a.bytesToString(j)+h,{asString:true}),{asBytes:true});return d&&d.asBytes?b:d&&d.asString?a.bytesToString(b):a.bytesToHex(b)}})();(function(){var a=Crypto.util;Crypto.PBKDF2=function(m,k,b,p){var o=p&&p.hasher||Crypto.SHA1,e=p&&p.iterations||1;function l(i,j){return Crypto.HMAC(o,j,i,{asBytes:true})}var d=[],c=1;while(d.length<b){var f=l(m,k+a.bytesToString(a.wordsToBytes([c])));for(var n=f,h=1;h<e;h++){n=l(m,a.bytesToString(n));for(var g=0;g<f.length;g++){f[g]^=n[g]}}d=d.concat(f);c++}d.length=b;return p&&p.asBytes?d:p&&p.asString?a.bytesToString(d):a.bytesToHex(d)}})();(function(){var e=Crypto.util;var d=[],g=[],a;var f=Crypto.Rabbit={encrypt:function(j,i){var b=e.stringToBytes(j),h=e.randomBytes(8),c=Crypto.PBKDF2(i,e.bytesToString(h),16,{asBytes:true});f._rabbit(b,c,e.bytesToWords(h));return e.bytesToBase64(h.concat(b))},decrypt:function(j,i){var l=e.base64ToBytes(j),h=l.splice(0,8),b=Crypto.PBKDF2(i,e.bytesToString(h),16,{asBytes:true});f._rabbit(l,b,e.bytesToWords(h));return e.bytesToString(l)},_rabbit:function(h,l,o){f._keysetup(l);if(o){f._ivsetup(o)}for(var q=[],p=0;p<h.length;p++){if(p%16==0){f._nextstate();q[0]=d[0]^(d[5]>>>16)^(d[3]<<16);q[1]=d[2]^(d[7]>>>16)^(d[5]<<16);q[2]=d[4]^(d[1]>>>16)^(d[7]<<16);q[3]=d[6]^(d[3]>>>16)^(d[1]<<16);for(var n=0;n<4;n++){q[n]=((q[n]<<8)|(q[n]>>>24))&16711935|((q[n]<<24)|(q[n]>>>8))&4278255360}for(var c=120;c>=0;c-=8){q[c/8]=(q[c>>>5]>>>(24-c%32))&255}}h[p]^=q[p%16]}},_keysetup:function(b){d[0]=b[0];d[2]=b[1];d[4]=b[2];d[6]=b[3];d[1]=(b[3]<<16)|(b[2]>>>16);d[3]=(b[0]<<16)|(b[3]>>>16);d[5]=(b[1]<<16)|(b[0]>>>16);d[7]=(b[2]<<16)|(b[1]>>>16);g[0]=e.rotl(b[2],16);g[2]=e.rotl(b[3],16);g[4]=e.rotl(b[0],16);g[6]=e.rotl(b[1],16);g[1]=(b[0]&4294901760)|(b[1]&65535);g[3]=(b[1]&4294901760)|(b[2]&65535);g[5]=(b[2]&4294901760)|(b[3]&65535);g[7]=(b[3]&4294901760)|(b[0]&65535);a=0;for(var c=0;c<4;c++){f._nextstate()}for(var c=0;c<8;c++){g[c]^=d[(c+4)&7]}},_ivsetup:function(b){var l=e.endian(b[0]),j=e.endian(b[1]),k=(l>>>16)|(j&4294901760),h=(j<<16)|(l&65535);g[0]^=l;g[1]^=k;g[2]^=j;g[3]^=h;g[4]^=l;g[5]^=k;g[6]^=j;g[7]^=h;for(var c=0;c<4;c++){f._nextstate()}},_nextstate:function(){for(var c=[],h=0;h<8;h++){c[h]=g[h]}g[0]=(g[0]+1295307597+a)>>>0;g[1]=(g[1]+3545052371+((g[0]>>>0)<(c[0]>>>0)?1:0))>>>0;g[2]=(g[2]+886263092+((g[1]>>>0)<(c[1]>>>0)?1:0))>>>0;g[3]=(g[3]+1295307597+((g[2]>>>0)<(c[2]>>>0)?1:0))>>>0;g[4]=(g[4]+3545052371+((g[3]>>>0)<(c[3]>>>0)?1:0))>>>0;g[5]=(g[5]+886263092+((g[4]>>>0)<(c[4]>>>0)?1:0))>>>0;g[6]=(g[6]+1295307597+((g[5]>>>0)<(c[5]>>>0)?1:0))>>>0;g[7]=(g[7]+3545052371+((g[6]>>>0)<(c[6]>>>0)?1:0))>>>0;a=(g[7]>>>0)<(c[7]>>>0)?1:0;for(var j=[],h=0;h<8;h++){var l=(d[h]+g[h])>>>0;var n=l&65535,k=l>>>16;var b=((((n*n)>>>17)+n*k)>>>15)+k*k,m=(((l&4294901760)*l)>>>0)+(((l&65535)*l)>>>0)>>>0;j[h]=b^m}d[0]=j[0]+((j[7]<<16)|(j[7]>>>16))+((j[6]<<16)|(j[6]>>>16));d[1]=j[1]+((j[0]<<8)|(j[0]>>>24))+j[7];d[2]=j[2]+((j[1]<<16)|(j[1]>>>16))+((j[0]<<16)|(j[0]>>>16));d[3]=j[3]+((j[2]<<8)|(j[2]>>>24))+j[1];d[4]=j[4]+((j[3]<<16)|(j[3]>>>16))+((j[2]<<16)|(j[2]>>>16));d[5]=j[5]+((j[4]<<8)|(j[4]>>>24))+j[3];d[6]=j[6]+((j[5]<<16)|(j[5]>>>16))+((j[4]<<16)|(j[4]>>>16));d[7]=j[7]+((j[6]<<8)|(j[6]>>>24))+j[5]}}})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var a=Crypto.util;var b=Crypto.SHA1=function(e,c){var d=a.wordsToBytes(b._sha1(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._sha1=function(k){var u=a.stringToWords(k),v=k.length*8,o=[],q=1732584193,p=-271733879,h=-1732584194,g=271733878,f=-1009589776;u[v>>5]|=128<<(24-v%32);u[((v+64>>>9)<<4)+15]=v;for(var y=0;y<u.length;y+=16){var D=q,C=p,B=h,A=g,z=f;for(var x=0;x<80;x++){if(x<16){o[x]=u[y+x]}else{var s=o[x-3]^o[x-8]^o[x-14]^o[x-16];o[x]=(s<<1)|(s>>>31)}var r=((q<<5)|(q>>>27))+f+(o[x]>>>0)+(x<20?(p&h|~p&g)+1518500249:x<40?(p^h^g)+1859775393:x<60?(p&h|p&g|h&g)-1894007588:(p^h^g)-899497514);f=g;g=h;h=(p<<30)|(p>>>2);p=q;q=r}q+=D;p+=C;h+=B;g+=A;f+=z}return[q,p,h,g,f]};b._blocksize=16})();(function(){var a=Crypto.util;Crypto.HMAC=function(g,h,f,d){f=f.length>g._blocksize*4?g(f,{asBytes:true}):a.stringToBytes(f);var c=f,j=f.slice(0);for(var e=0;e<g._blocksize*4;e++){c[e]^=92;j[e]^=54}var b=g(a.bytesToString(c)+g(a.bytesToString(j)+h,{asString:true}),{asBytes:true});return d&&d.asBytes?b:d&&d.asString?a.bytesToString(b):a.bytesToHex(b)}})();(function(){var a=Crypto.util;Crypto.PBKDF2=function(m,k,b,p){var o=p&&p.hasher||Crypto.SHA1,e=p&&p.iterations||1;function l(i,j){return Crypto.HMAC(o,j,i,{asBytes:true})}var d=[],c=1;while(d.length<b){var f=l(m,k+a.bytesToString(a.wordsToBytes([c])));for(var n=f,h=1;h<e;h++){n=l(m,a.bytesToString(n));for(var g=0;g<f.length;g++){f[g]^=n[g]}}d=d.concat(f);c++}d.length=b;return p&&p.asBytes?d:p&&p.asString?a.bytesToString(d):a.bytesToHex(d)}})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var a=Crypto.util;var b=Crypto.SHA1=function(e,c){var d=a.wordsToBytes(b._sha1(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._sha1=function(k){var u=a.stringToWords(k),v=k.length*8,o=[],q=1732584193,p=-271733879,h=-1732584194,g=271733878,f=-1009589776;u[v>>5]|=128<<(24-v%32);u[((v+64>>>9)<<4)+15]=v;for(var y=0;y<u.length;y+=16){var D=q,C=p,B=h,A=g,z=f;for(var x=0;x<80;x++){if(x<16){o[x]=u[y+x]}else{var s=o[x-3]^o[x-8]^o[x-14]^o[x-16];o[x]=(s<<1)|(s>>>31)}var r=((q<<5)|(q>>>27))+f+(o[x]>>>0)+(x<20?(p&h|~p&g)+1518500249:x<40?(p^h^g)+1859775393:x<60?(p&h|p&g|h&g)-1894007588:(p^h^g)-899497514);f=g;g=h;h=(p<<30)|(p>>>2);p=q;q=r}q+=D;p+=C;h+=B;g+=A;f+=z}return[q,p,h,g,f]};b._blocksize=16})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();(function(){var b=Crypto.util;var a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var c=Crypto.SHA256=function(f,d){var e=b.wordsToBytes(c._sha256(f));return d&&d.asBytes?e:d&&d.asString?b.bytesToString(e):b.bytesToHex(e)};c._sha256=function(q){var y=b.stringToWords(q),z=q.length*8,r=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],s=[],K,J,I,G,F,E,D,C,B,A,p,o;y[z>>5]|=128<<(24-z%32);y[((z+64>>9)<<4)+15]=z;for(var B=0;B<y.length;B+=16){K=r[0];J=r[1];I=r[2];G=r[3];F=r[4];E=r[5];D=r[6];C=r[7];for(var A=0;A<64;A++){if(A<16){s[A]=y[A+B]}else{var n=s[A-15],u=s[A-2],M=((n<<25)|(n>>>7))^((n<<14)|(n>>>18))^(n>>>3),L=((u<<15)|(u>>>17))^((u<<13)|(u>>>19))^(u>>>10);s[A]=M+(s[A-7]>>>0)+L+(s[A-16]>>>0)}var t=F&E^~F&D,k=K&J^K&I^J&I,x=((K<<30)|(K>>>2))^((K<<19)|(K>>>13))^((K<<10)|(K>>>22)),v=((F<<26)|(F>>>6))^((F<<21)|(F>>>11))^((F<<7)|(F>>>25));p=(C>>>0)+v+t+(a[A])+(s[A]>>>0);o=x+k;C=D;D=E;E=F;F=G+p;G=I;I=J;J=K;K=p+o}r[0]+=K;r[1]+=J;r[2]+=I;r[3]+=G;r[4]+=F;r[5]+=E;r[6]+=D;r[7]+=C}return r};c._blocksize=16})();
\ No newline at end of file
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";window.Crypto={};var a=Crypto.util={rotl:function(d,c){return(d<<c)|(d>>>(32-c))},rotr:function(d,c){return(d<<(32-c))|(d>>>c)},endian:function(d){if(d.constructor==Number){return a.rotl(d,8)&16711935|a.rotl(d,24)&4278255360}for(var c=0;c<d.length;c++){d[c]=a.endian(d[c])}return d},randomBytes:function(d){for(var c=[];d>0;d--){c.push(Math.floor(Math.random()*256))}return c},stringToBytes:function(e){var c=[];for(var d=0;d<e.length;d++){c.push(e.charCodeAt(d))}return c},bytesToString:function(c){var e=[];for(var d=0;d<c.length;d++){e.push(String.fromCharCode(c[d]))}return e.join("")},stringToWords:function(f){var e=[];for(var g=0,d=0;g<f.length;g++,d+=8){e[d>>>5]|=f.charCodeAt(g)<<(24-d%32)}return e},bytesToWords:function(d){var f=[];for(var e=0,c=0;e<d.length;e++,c+=8){f[c>>>5]|=d[e]<<(24-c%32)}return f},wordsToBytes:function(e){var d=[];for(var c=0;c<e.length*32;c+=8){d.push((e[c>>>5]>>>(24-c%32))&255)}return d},bytesToHex:function(c){var e=[];for(var d=0;d<c.length;d++){e.push((c[d]>>>4).toString(16));e.push((c[d]&15).toString(16))}return e.join("")},hexToBytes:function(e){var d=[];for(var f=0;f<e.length;f+=2){d.push(parseInt(e.substr(f,2),16))}return d},bytesToBase64:function(d){if(typeof btoa=="function"){return btoa(a.bytesToString(d))}var c=[],f;for(var e=0;e<d.length;e++){switch(e%3){case 0:c.push(b.charAt(d[e]>>>2));f=(d[e]&3)<<4;break;case 1:c.push(b.charAt(f|(d[e]>>>4)));f=(d[e]&15)<<2;break;case 2:c.push(b.charAt(f|(d[e]>>>6)));c.push(b.charAt(d[e]&63));f=-1}}if(f!=undefined&&f!=-1){c.push(b.charAt(f))}while(c.length%4!=0){c.push("=")}return c.join("")},base64ToBytes:function(d){if(typeof atob=="function"){return a.stringToBytes(atob(d))}d=d.replace(/[^A-Z0-9+\/]/ig,"");var c=[];for(var e=0;e<d.length;e++){switch(e%4){case 1:c.push((b.indexOf(d.charAt(e-1))<<2)|(b.indexOf(d.charAt(e))>>>4));break;case 2:c.push(((b.indexOf(d.charAt(e-1))&15)<<4)|(b.indexOf(d.charAt(e))>>>2));break;case 3:c.push(((b.indexOf(d.charAt(e-1))&3)<<6)|(b.indexOf(d.charAt(e))));break}}return c}};Crypto.mode={}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
// Global Crypto object
window.Crypto = {};
// Crypto utilities
var util = Crypto.util = {
// Bit-wise rotate left
rotl: function (n, b) {
return (n << b) | (n >>> (32 - b));
},
// Bit-wise rotate right
rotr: function (n, b) {
return (n << (32 - b)) | (n >>> b);
},
// Swap big-endian to little-endian and vice versa
endian: function (n) {
// If number given, swap endian
if (n.constructor == Number) {
return util.rotl(n, 8) & 0x00FF00FF |
util.rotl(n, 24) & 0xFF00FF00;
}
// Else, assume array and swap all items
for (var i = 0; i < n.length; i++)
n[i] = util.endian(n[i]);
return n;
},
// Generate an array of any length of random bytes
randomBytes: function (n) {
for (var bytes = []; n > 0; n--)
bytes.push(Math.floor(Math.random() * 256));
return bytes;
},
// Convert a string to a byte array
stringToBytes: function (str) {
var bytes = [];
for (var i = 0; i < str.length; i++)
bytes.push(str.charCodeAt(i));
return bytes;
},
// Convert a byte array to a string
bytesToString: function (bytes) {
var str = [];
for (var i = 0; i < bytes.length; i++)
str.push(String.fromCharCode(bytes[i]));
return str.join("");
},
// Convert a string to big-endian 32-bit words
stringToWords: function (str) {
var words = [];
for (var c = 0, b = 0; c < str.length; c++, b += 8)
words[b >>> 5] |= str.charCodeAt(c) << (24 - b % 32);
return words;
},
// Convert a byte array to big-endian 32-bits words
bytesToWords: function (bytes) {
var words = [];
for (var i = 0, b = 0; i < bytes.length; i++, b += 8)
words[b >>> 5] |= bytes[i] << (24 - b % 32);
return words;
},
// Convert big-endian 32-bit words to a byte array
wordsToBytes: function (words) {
var bytes = [];
for (var b = 0; b < words.length * 32; b += 8)
bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
return bytes;
},
// Convert a byte array to a hex string
bytesToHex: function (bytes) {
var hex = [];
for (var i = 0; i < bytes.length; i++) {
hex.push((bytes[i] >>> 4).toString(16));
hex.push((bytes[i] & 0xF).toString(16));
}
return hex.join("");
},
// Convert a hex string to a byte array
hexToBytes: function (hex) {
var bytes = [];
for (var c = 0; c < hex.length; c += 2)
bytes.push(parseInt(hex.substr(c, 2), 16));
return bytes;
},
// Convert a byte array to a base-64 string
bytesToBase64: function (bytes) {
// Use browser-native function if it exists
if (typeof btoa == "function") return btoa(util.bytesToString(bytes));
var base64 = [],
overflow;
for (var i = 0; i < bytes.length; i++) {
switch (i % 3) {
case 0:
base64.push(base64map.charAt(bytes[i] >>> 2));
overflow = (bytes[i] & 0x3) << 4;
break;
case 1:
base64.push(base64map.charAt(overflow | (bytes[i] >>> 4)));
overflow = (bytes[i] & 0xF) << 2;
break;
case 2:
base64.push(base64map.charAt(overflow | (bytes[i] >>> 6)));
base64.push(base64map.charAt(bytes[i] & 0x3F));
overflow = -1;
}
}
// Encode overflow bits, if there are any
if (overflow != undefined && overflow != -1)
base64.push(base64map.charAt(overflow));
// Add padding
while (base64.length % 4 != 0) base64.push("=");
return base64.join("");
},
// Convert a base-64 string to a byte array
base64ToBytes: function (base64) {
// Use browser-native function if it exists
if (typeof atob == "function") return util.stringToBytes(atob(base64));
// Remove non-base-64 characters
base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
var bytes = [];
for (var i = 0; i < base64.length; i++) {
switch (i % 4) {
case 1:
bytes.push((base64map.indexOf(base64.charAt(i - 1)) << 2) |
(base64map.indexOf(base64.charAt(i)) >>> 4));
break;
case 2:
bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0xF) << 4) |
(base64map.indexOf(base64.charAt(i)) >>> 2));
break;
case 3:
bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0x3) << 6) |
(base64map.indexOf(base64.charAt(i))));
break;
}
}
return bytes;
}
};
// Crypto mode namespace
Crypto.mode = {};
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var a=Crypto.util;Crypto.HMAC=function(g,h,f,d){f=f.length>g._blocksize*4?g(f,{asBytes:true}):a.stringToBytes(f);var c=f,j=f.slice(0);for(var e=0;e<g._blocksize*4;e++){c[e]^=92;j[e]^=54}var b=g(a.bytesToString(c)+g(a.bytesToString(j)+h,{asString:true}),{asBytes:true});return d&&d.asBytes?b:d&&d.asString?a.bytesToString(b):a.bytesToHex(b)}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
Crypto.HMAC = function (hasher, message, key, options) {
// Allow arbitrary length keys
key = key.length > hasher._blocksize * 4 ?
hasher(key, { asBytes: true }) :
util.stringToBytes(key);
// XOR keys with pad constants
var okey = key,
ikey = key.slice(0);
for (var i = 0; i < hasher._blocksize * 4; i++) {
okey[i] ^= 0x5C;
ikey[i] ^= 0x36;
}
var hmacbytes = hasher(util.bytesToString(okey) +
hasher(util.bytesToString(ikey) + message, { asString: true }),
{ asBytes: true });
return options && options.asBytes ? hmacbytes :
options && options.asString ? util.bytesToString(hmacbytes) :
util.bytesToHex(hmacbytes);
};
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var a=Crypto.util;var b=Crypto.MARC4={encrypt:function(g,f){var c=a.stringToBytes(g),e=a.randomBytes(16),d=Crypto.PBKDF2(f,a.bytesToString(e),32,{asBytes:true});b._marc4(c,d,1536);return a.bytesToBase64(e.concat(c))},decrypt:function(g,f){var h=a.base64ToBytes(g),e=h.splice(0,16),d=Crypto.PBKDF2(f,a.bytesToString(e),32,{asBytes:true});b._marc4(h,d,1536);return a.bytesToString(h)},_marc4:function(c,f,e){var h,g,l,d;for(h=0,l=[];h<256;h++){l[h]=h}for(h=0,g=0;h<256;h++){g=(g+l[h]+f[h%f.length])%256;d=l[h];l[h]=l[g];l[g]=d}h=g=0;for(var f=0-e;f<c.length;f++){h=(h+1)%256;g=(g+l[h])%256;d=l[h];l[h]=l[g];l[g]=d;if(f<0){continue}c[f]^=l[(l[h]+l[g])%256]}}}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
var MARC4 = Crypto.MARC4 = {
/**
* Public API
*/
encrypt: function (message, password) {
var
// Convert to bytes
m = util.stringToBytes(message),
// Generate random IV
iv = util.randomBytes(16),
// Generate key
k = Crypto.PBKDF2(password, util.bytesToString(iv), 32, { asBytes: true });
// Encrypt
MARC4._marc4(m, k, 1536);
// Return ciphertext
return util.bytesToBase64(iv.concat(m));
},
decrypt: function (ciphertext, password) {
var
// Convert to bytes
c = util.base64ToBytes(ciphertext),
// Separate IV and message
iv = c.splice(0, 16),
// Generate key
k = Crypto.PBKDF2(password, util.bytesToString(iv), 32, { asBytes: true });
// Decrypt
MARC4._marc4(c, k, 1536);
// Return plaintext
return util.bytesToString(c);
},
/**
* Internal methods
*/
// The core
_marc4: function (m, k, drop) {
// State variables
var i, j, s, temp;
// Key setup
for (i = 0, s = []; i < 256; i++) s[i] = i;
for (i = 0, j = 0; i < 256; i++) {
j = (j + s[i] + k[i % k.length]) % 256;
// Swap
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
// Clear counters
i = j = 0;
// Encryption
for (var k = 0 - drop; k < m.length; k++) {
i = (i + 1) % 256;
j = (j + s[i]) % 256;
// Swap
temp = s[i];
s[i] = s[j];
s[j] = temp;
// Stop here if we're still dropping keystream
if (k < 0) continue;
// Encrypt
m[k] ^= s[(s[i] + s[j]) % 256];
}
}
};
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var a=Crypto.util;var b=Crypto.MD5=function(e,c){var d=a.wordsToBytes(b._md5(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._md5=function(s){var g=a.stringToWords(s),h=s.length*8,q=1732584193,p=-271733879,o=-1732584194,n=271733878;for(var j=0;j<g.length;j++){g[j]=((g[j]<<8)|(g[j]>>>24))&16711935|((g[j]<<24)|(g[j]>>>8))&4278255360}g[h>>>5]|=128<<(h%32);g[(((h+64)>>>9)<<4)+14]=h;for(var j=0;j<g.length;j+=16){var e=q,k=p,f=o,r=n;q=b._ff(q,p,o,n,g[j+0],7,-680876936);n=b._ff(n,q,p,o,g[j+1],12,-389564586);o=b._ff(o,n,q,p,g[j+2],17,606105819);p=b._ff(p,o,n,q,g[j+3],22,-1044525330);q=b._ff(q,p,o,n,g[j+4],7,-176418897);n=b._ff(n,q,p,o,g[j+5],12,1200080426);o=b._ff(o,n,q,p,g[j+6],17,-1473231341);p=b._ff(p,o,n,q,g[j+7],22,-45705983);q=b._ff(q,p,o,n,g[j+8],7,1770035416);n=b._ff(n,q,p,o,g[j+9],12,-1958414417);o=b._ff(o,n,q,p,g[j+10],17,-42063);p=b._ff(p,o,n,q,g[j+11],22,-1990404162);q=b._ff(q,p,o,n,g[j+12],7,1804603682);n=b._ff(n,q,p,o,g[j+13],12,-40341101);o=b._ff(o,n,q,p,g[j+14],17,-1502002290);p=b._ff(p,o,n,q,g[j+15],22,1236535329);q=b._gg(q,p,o,n,g[j+1],5,-165796510);n=b._gg(n,q,p,o,g[j+6],9,-1069501632);o=b._gg(o,n,q,p,g[j+11],14,643717713);p=b._gg(p,o,n,q,g[j+0],20,-373897302);q=b._gg(q,p,o,n,g[j+5],5,-701558691);n=b._gg(n,q,p,o,g[j+10],9,38016083);o=b._gg(o,n,q,p,g[j+15],14,-660478335);p=b._gg(p,o,n,q,g[j+4],20,-405537848);q=b._gg(q,p,o,n,g[j+9],5,568446438);n=b._gg(n,q,p,o,g[j+14],9,-1019803690);o=b._gg(o,n,q,p,g[j+3],14,-187363961);p=b._gg(p,o,n,q,g[j+8],20,1163531501);q=b._gg(q,p,o,n,g[j+13],5,-1444681467);n=b._gg(n,q,p,o,g[j+2],9,-51403784);o=b._gg(o,n,q,p,g[j+7],14,1735328473);p=b._gg(p,o,n,q,g[j+12],20,-1926607734);q=b._hh(q,p,o,n,g[j+5],4,-378558);n=b._hh(n,q,p,o,g[j+8],11,-2022574463);o=b._hh(o,n,q,p,g[j+11],16,1839030562);p=b._hh(p,o,n,q,g[j+14],23,-35309556);q=b._hh(q,p,o,n,g[j+1],4,-1530992060);n=b._hh(n,q,p,o,g[j+4],11,1272893353);o=b._hh(o,n,q,p,g[j+7],16,-155497632);p=b._hh(p,o,n,q,g[j+10],23,-1094730640);q=b._hh(q,p,o,n,g[j+13],4,681279174);n=b._hh(n,q,p,o,g[j+0],11,-358537222);o=b._hh(o,n,q,p,g[j+3],16,-722521979);p=b._hh(p,o,n,q,g[j+6],23,76029189);q=b._hh(q,p,o,n,g[j+9],4,-640364487);n=b._hh(n,q,p,o,g[j+12],11,-421815835);o=b._hh(o,n,q,p,g[j+15],16,530742520);p=b._hh(p,o,n,q,g[j+2],23,-995338651);q=b._ii(q,p,o,n,g[j+0],6,-198630844);n=b._ii(n,q,p,o,g[j+7],10,1126891415);o=b._ii(o,n,q,p,g[j+14],15,-1416354905);p=b._ii(p,o,n,q,g[j+5],21,-57434055);q=b._ii(q,p,o,n,g[j+12],6,1700485571);n=b._ii(n,q,p,o,g[j+3],10,-1894986606);o=b._ii(o,n,q,p,g[j+10],15,-1051523);p=b._ii(p,o,n,q,g[j+1],21,-2054922799);q=b._ii(q,p,o,n,g[j+8],6,1873313359);n=b._ii(n,q,p,o,g[j+15],10,-30611744);o=b._ii(o,n,q,p,g[j+6],15,-1560198380);p=b._ii(p,o,n,q,g[j+13],21,1309151649);q=b._ii(q,p,o,n,g[j+4],6,-145523070);n=b._ii(n,q,p,o,g[j+11],10,-1120210379);o=b._ii(o,n,q,p,g[j+2],15,718787259);p=b._ii(p,o,n,q,g[j+9],21,-343485551);q+=e;p+=k;o+=f;n+=r}return a.endian([q,p,o,n])};b._ff=function(g,f,l,j,e,i,h){var k=g+(f&l|~f&j)+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._gg=function(g,f,l,j,e,i,h){var k=g+(f&j|l&~j)+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._hh=function(g,f,l,j,e,i,h){var k=g+(f^l^j)+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._ii=function(g,f,l,j,e,i,h){var k=g+(l^(f|~j))+(e>>>0)+h;return((k<<i)|(k>>>(32-i)))+f};b._blocksize=16})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
// Public API
var MD5 = Crypto.MD5 = function (message, options) {
var digestbytes = util.wordsToBytes(MD5._md5(message));
return options && options.asBytes ? digestbytes :
options && options.asString ? util.bytesToString(digestbytes) :
util.bytesToHex(digestbytes);
};
// The core
MD5._md5 = function (message) {
var m = util.stringToWords(message),
l = message.length * 8,
a = 1732584193,
b = -271733879,
c = -1732584194,
d = 271733878;
// Swap endian
for (var i = 0; i < m.length; i++) {
m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |
((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;
}
// Padding
m[l >>> 5] |= 0x80 << (l % 32);
m[(((l + 64) >>> 9) << 4) + 14] = l;
for (var i = 0; i < m.length; i += 16) {
var aa = a,
bb = b,
cc = c,
dd = d;
a = MD5._ff(a, b, c, d, m[i+ 0], 7, -680876936);
d = MD5._ff(d, a, b, c, m[i+ 1], 12, -389564586);
c = MD5._ff(c, d, a, b, m[i+ 2], 17, 606105819);
b = MD5._ff(b, c, d, a, m[i+ 3], 22, -1044525330);
a = MD5._ff(a, b, c, d, m[i+ 4], 7, -176418897);
d = MD5._ff(d, a, b, c, m[i+ 5], 12, 1200080426);
c = MD5._ff(c, d, a, b, m[i+ 6], 17, -1473231341);
b = MD5._ff(b, c, d, a, m[i+ 7], 22, -45705983);
a = MD5._ff(a, b, c, d, m[i+ 8], 7, 1770035416);
d = MD5._ff(d, a, b, c, m[i+ 9], 12, -1958414417);
c = MD5._ff(c, d, a, b, m[i+10], 17, -42063);
b = MD5._ff(b, c, d, a, m[i+11], 22, -1990404162);
a = MD5._ff(a, b, c, d, m[i+12], 7, 1804603682);
d = MD5._ff(d, a, b, c, m[i+13], 12, -40341101);
c = MD5._ff(c, d, a, b, m[i+14], 17, -1502002290);
b = MD5._ff(b, c, d, a, m[i+15], 22, 1236535329);
a = MD5._gg(a, b, c, d, m[i+ 1], 5, -165796510);
d = MD5._gg(d, a, b, c, m[i+ 6], 9, -1069501632);
c = MD5._gg(c, d, a, b, m[i+11], 14, 643717713);
b = MD5._gg(b, c, d, a, m[i+ 0], 20, -373897302);
a = MD5._gg(a, b, c, d, m[i+ 5], 5, -701558691);
d = MD5._gg(d, a, b, c, m[i+10], 9, 38016083);
c = MD5._gg(c, d, a, b, m[i+15], 14, -660478335);
b = MD5._gg(b, c, d, a, m[i+ 4], 20, -405537848);
a = MD5._gg(a, b, c, d, m[i+ 9], 5, 568446438);
d = MD5._gg(d, a, b, c, m[i+14], 9, -1019803690);
c = MD5._gg(c, d, a, b, m[i+ 3], 14, -187363961);
b = MD5._gg(b, c, d, a, m[i+ 8], 20, 1163531501);
a = MD5._gg(a, b, c, d, m[i+13], 5, -1444681467);
d = MD5._gg(d, a, b, c, m[i+ 2], 9, -51403784);
c = MD5._gg(c, d, a, b, m[i+ 7], 14, 1735328473);
b = MD5._gg(b, c, d, a, m[i+12], 20, -1926607734);
a = MD5._hh(a, b, c, d, m[i+ 5], 4, -378558);
d = MD5._hh(d, a, b, c, m[i+ 8], 11, -2022574463);
c = MD5._hh(c, d, a, b, m[i+11], 16, 1839030562);
b = MD5._hh(b, c, d, a, m[i+14], 23, -35309556);
a = MD5._hh(a, b, c, d, m[i+ 1], 4, -1530992060);
d = MD5._hh(d, a, b, c, m[i+ 4], 11, 1272893353);
c = MD5._hh(c, d, a, b, m[i+ 7], 16, -155497632);
b = MD5._hh(b, c, d, a, m[i+10], 23, -1094730640);
a = MD5._hh(a, b, c, d, m[i+13], 4, 681279174);
d = MD5._hh(d, a, b, c, m[i+ 0], 11, -358537222);
c = MD5._hh(c, d, a, b, m[i+ 3], 16, -722521979);
b = MD5._hh(b, c, d, a, m[i+ 6], 23, 76029189);
a = MD5._hh(a, b, c, d, m[i+ 9], 4, -640364487);
d = MD5._hh(d, a, b, c, m[i+12], 11, -421815835);
c = MD5._hh(c, d, a, b, m[i+15], 16, 530742520);
b = MD5._hh(b, c, d, a, m[i+ 2], 23, -995338651);
a = MD5._ii(a, b, c, d, m[i+ 0], 6, -198630844);
d = MD5._ii(d, a, b, c, m[i+ 7], 10, 1126891415);
c = MD5._ii(c, d, a, b, m[i+14], 15, -1416354905);
b = MD5._ii(b, c, d, a, m[i+ 5], 21, -57434055);
a = MD5._ii(a, b, c, d, m[i+12], 6, 1700485571);
d = MD5._ii(d, a, b, c, m[i+ 3], 10, -1894986606);
c = MD5._ii(c, d, a, b, m[i+10], 15, -1051523);
b = MD5._ii(b, c, d, a, m[i+ 1], 21, -2054922799);
a = MD5._ii(a, b, c, d, m[i+ 8], 6, 1873313359);
d = MD5._ii(d, a, b, c, m[i+15], 10, -30611744);
c = MD5._ii(c, d, a, b, m[i+ 6], 15, -1560198380);
b = MD5._ii(b, c, d, a, m[i+13], 21, 1309151649);
a = MD5._ii(a, b, c, d, m[i+ 4], 6, -145523070);
d = MD5._ii(d, a, b, c, m[i+11], 10, -1120210379);
c = MD5._ii(c, d, a, b, m[i+ 2], 15, 718787259);
b = MD5._ii(b, c, d, a, m[i+ 9], 21, -343485551);
a += aa;
b += bb;
c += cc;
d += dd;
}
return util.endian([a, b, c, d]);
};
// Auxiliary functions
MD5._ff = function (a, b, c, d, x, s, t) {
var n = a + (b & c | ~b & d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
MD5._gg = function (a, b, c, d, x, s, t) {
var n = a + (b & d | c & ~d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
MD5._hh = function (a, b, c, d, x, s, t) {
var n = a + (b ^ c ^ d) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
MD5._ii = function (a, b, c, d, x, s, t) {
var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
// Package private blocksize
MD5._blocksize = 16;
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){Crypto.mode.OFB={encrypt:a,decrypt:a};function a(c,b,d){var g=c._blocksize*4,f=d.slice(0);for(var e=0;e<b.length;e++){if(e%g==0){c._encryptblock(f,0)}b[e]^=f[e%g]}}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Public API
Crypto.mode.OFB = {
encrypt: OFB,
decrypt: OFB
};
// The mode function
function OFB(cipher, m, iv) {
var blockSizeInBytes = cipher._blocksize * 4,
keystream = iv.slice(0);
// Encrypt each byte
for (var i = 0; i < m.length; i++) {
// Generate keystream
if (i % blockSizeInBytes == 0)
cipher._encryptblock(keystream, 0);
// Encrypt byte
m[i] ^= keystream[i % blockSizeInBytes];
}
}
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var a=Crypto.util;Crypto.PBKDF2=function(m,k,b,p){var o=p&&p.hasher||Crypto.SHA1,e=p&&p.iterations||1;function l(i,j){return Crypto.HMAC(o,j,i,{asBytes:true})}var d=[],c=1;while(d.length<b){var f=l(m,k+a.bytesToString(a.wordsToBytes([c])));for(var n=f,h=1;h<e;h++){n=l(m,a.bytesToString(n));for(var g=0;g<f.length;g++){f[g]^=n[g]}}d=d.concat(f);c++}d.length=b;return p&&p.asBytes?d:p&&p.asString?a.bytesToString(d):a.bytesToHex(d)}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
Crypto.PBKDF2 = function (password, salt, keylen, options) {
// Defaults
var hasher = options && options.hasher || Crypto.SHA1,
iterations = options && options.iterations || 1;
// Pseudo-random function
function PRF(password, salt) {
return Crypto.HMAC(hasher, salt, password, { asBytes: true });
}
// Generate key
var derivedKeyBytes = [],
blockindex = 1;
while (derivedKeyBytes.length < keylen) {
var block = PRF(password, salt + util.bytesToString(
util.wordsToBytes([blockindex])));
for (var u = block, i = 1; i < iterations; i++) {
u = PRF(password, util.bytesToString(u));
for (var j = 0; j < block.length; j++) block[j] ^= u[j];
}
derivedKeyBytes = derivedKeyBytes.concat(block);
blockindex++;
}
// Truncate excess bytes
derivedKeyBytes.length = keylen;
return options && options.asBytes ? derivedKeyBytes :
options && options.asString ? util.bytesToString(derivedKeyBytes) :
util.bytesToHex(derivedKeyBytes);
};
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var e=Crypto.util;var d=[],g=[],a;var f=Crypto.Rabbit={encrypt:function(j,i){var b=e.stringToBytes(j),h=e.randomBytes(8),c=Crypto.PBKDF2(i,e.bytesToString(h),16,{asBytes:true});f._rabbit(b,c,e.bytesToWords(h));return e.bytesToBase64(h.concat(b))},decrypt:function(j,i){var l=e.base64ToBytes(j),h=l.splice(0,8),b=Crypto.PBKDF2(i,e.bytesToString(h),16,{asBytes:true});f._rabbit(l,b,e.bytesToWords(h));return e.bytesToString(l)},_rabbit:function(h,l,o){f._keysetup(l);if(o){f._ivsetup(o)}for(var q=[],p=0;p<h.length;p++){if(p%16==0){f._nextstate();q[0]=d[0]^(d[5]>>>16)^(d[3]<<16);q[1]=d[2]^(d[7]>>>16)^(d[5]<<16);q[2]=d[4]^(d[1]>>>16)^(d[7]<<16);q[3]=d[6]^(d[3]>>>16)^(d[1]<<16);for(var n=0;n<4;n++){q[n]=((q[n]<<8)|(q[n]>>>24))&16711935|((q[n]<<24)|(q[n]>>>8))&4278255360}for(var c=120;c>=0;c-=8){q[c/8]=(q[c>>>5]>>>(24-c%32))&255}}h[p]^=q[p%16]}},_keysetup:function(b){d[0]=b[0];d[2]=b[1];d[4]=b[2];d[6]=b[3];d[1]=(b[3]<<16)|(b[2]>>>16);d[3]=(b[0]<<16)|(b[3]>>>16);d[5]=(b[1]<<16)|(b[0]>>>16);d[7]=(b[2]<<16)|(b[1]>>>16);g[0]=e.rotl(b[2],16);g[2]=e.rotl(b[3],16);g[4]=e.rotl(b[0],16);g[6]=e.rotl(b[1],16);g[1]=(b[0]&4294901760)|(b[1]&65535);g[3]=(b[1]&4294901760)|(b[2]&65535);g[5]=(b[2]&4294901760)|(b[3]&65535);g[7]=(b[3]&4294901760)|(b[0]&65535);a=0;for(var c=0;c<4;c++){f._nextstate()}for(var c=0;c<8;c++){g[c]^=d[(c+4)&7]}},_ivsetup:function(b){var l=e.endian(b[0]),j=e.endian(b[1]),k=(l>>>16)|(j&4294901760),h=(j<<16)|(l&65535);g[0]^=l;g[1]^=k;g[2]^=j;g[3]^=h;g[4]^=l;g[5]^=k;g[6]^=j;g[7]^=h;for(var c=0;c<4;c++){f._nextstate()}},_nextstate:function(){for(var c=[],h=0;h<8;h++){c[h]=g[h]}g[0]=(g[0]+1295307597+a)>>>0;g[1]=(g[1]+3545052371+((g[0]>>>0)<(c[0]>>>0)?1:0))>>>0;g[2]=(g[2]+886263092+((g[1]>>>0)<(c[1]>>>0)?1:0))>>>0;g[3]=(g[3]+1295307597+((g[2]>>>0)<(c[2]>>>0)?1:0))>>>0;g[4]=(g[4]+3545052371+((g[3]>>>0)<(c[3]>>>0)?1:0))>>>0;g[5]=(g[5]+886263092+((g[4]>>>0)<(c[4]>>>0)?1:0))>>>0;g[6]=(g[6]+1295307597+((g[5]>>>0)<(c[5]>>>0)?1:0))>>>0;g[7]=(g[7]+3545052371+((g[6]>>>0)<(c[6]>>>0)?1:0))>>>0;a=(g[7]>>>0)<(c[7]>>>0)?1:0;for(var j=[],h=0;h<8;h++){var l=(d[h]+g[h])>>>0;var n=l&65535,k=l>>>16;var b=((((n*n)>>>17)+n*k)>>>15)+k*k,m=(((l&4294901760)*l)>>>0)+(((l&65535)*l)>>>0)>>>0;j[h]=b^m}d[0]=j[0]+((j[7]<<16)|(j[7]>>>16))+((j[6]<<16)|(j[6]>>>16));d[1]=j[1]+((j[0]<<8)|(j[0]>>>24))+j[7];d[2]=j[2]+((j[1]<<16)|(j[1]>>>16))+((j[0]<<16)|(j[0]>>>16));d[3]=j[3]+((j[2]<<8)|(j[2]>>>24))+j[1];d[4]=j[4]+((j[3]<<16)|(j[3]>>>16))+((j[2]<<16)|(j[2]>>>16));d[5]=j[5]+((j[4]<<8)|(j[4]>>>24))+j[3];d[6]=j[6]+((j[5]<<16)|(j[5]>>>16))+((j[4]<<16)|(j[4]>>>16));d[7]=j[7]+((j[6]<<8)|(j[6]>>>24))+j[5]}}})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
// Inner state
var x = [],
c = [],
b;
var Rabbit = Crypto.Rabbit = {
/**
* Public API
*/
encrypt: function (message, password) {
var
// Convert to bytes
m = util.stringToBytes(message),
// Generate random IV
iv = util.randomBytes(8),
// Generate key
k = Crypto.PBKDF2(password, util.bytesToString(iv), 16, { asBytes: true });
// Encrypt
Rabbit._rabbit(m, k, util.bytesToWords(iv));
// Return ciphertext
return util.bytesToBase64(iv.concat(m));
},
decrypt: function (ciphertext, password) {
var
// Convert to bytes
c = util.base64ToBytes(ciphertext),
// Separate IV and message
iv = c.splice(0, 8),
// Generate key
k = Crypto.PBKDF2(password, util.bytesToString(iv), 16, { asBytes: true });
// Decrypt
Rabbit._rabbit(c, k, util.bytesToWords(iv));
// Return plaintext
return util.bytesToString(c);
},
/**
* Internal methods
*/
// Encryption/decryption scheme
_rabbit: function (m, k, iv) {
Rabbit._keysetup(k);
if (iv) Rabbit._ivsetup(iv);
for (var s = [], i = 0; i < m.length; i++) {
if (i % 16 == 0) {
// Iterate the system
Rabbit._nextstate();
// Generate 16 bytes of pseudo-random data
s[0] = x[0] ^ (x[5] >>> 16) ^ (x[3] << 16);
s[1] = x[2] ^ (x[7] >>> 16) ^ (x[5] << 16);
s[2] = x[4] ^ (x[1] >>> 16) ^ (x[7] << 16);
s[3] = x[6] ^ (x[3] >>> 16) ^ (x[1] << 16);
// Swap endian
for (var j = 0; j < 4; j++) {
s[j] = ((s[j] << 8) | (s[j] >>> 24)) & 0x00FF00FF |
((s[j] << 24) | (s[j] >>> 8)) & 0xFF00FF00;
}
// Convert words to bytes
for (var b = 120; b >= 0; b -= 8)
s[b / 8] = (s[b >>> 5] >>> (24 - b % 32)) & 0xFF;
}
m[i] ^= s[i % 16];
}
},
// Key setup scheme
_keysetup: function (k) {
// Generate initial state values
x[0] = k[0];
x[2] = k[1];
x[4] = k[2];
x[6] = k[3];
x[1] = (k[3] << 16) | (k[2] >>> 16);
x[3] = (k[0] << 16) | (k[3] >>> 16);
x[5] = (k[1] << 16) | (k[0] >>> 16);
x[7] = (k[2] << 16) | (k[1] >>> 16);
// Generate initial counter values
c[0] = util.rotl(k[2], 16);
c[2] = util.rotl(k[3], 16);
c[4] = util.rotl(k[0], 16);
c[6] = util.rotl(k[1], 16);
c[1] = (k[0] & 0xFFFF0000) | (k[1] & 0xFFFF);
c[3] = (k[1] & 0xFFFF0000) | (k[2] & 0xFFFF);
c[5] = (k[2] & 0xFFFF0000) | (k[3] & 0xFFFF);
c[7] = (k[3] & 0xFFFF0000) | (k[0] & 0xFFFF);
// Clear carry bit
b = 0;
// Iterate the system four times
for (var i = 0; i < 4; i++) Rabbit._nextstate();
// Modify the counters
for (var i = 0; i < 8; i++) c[i] ^= x[(i + 4) & 7];
},
// IV setup scheme
_ivsetup: function (iv) {
// Generate four subvectors
var i0 = util.endian(iv[0]),
i2 = util.endian(iv[1]),
i1 = (i0 >>> 16) | (i2 & 0xFFFF0000),
i3 = (i2 << 16) | (i0 & 0x0000FFFF);
// Modify counter values
c[0] ^= i0;
c[1] ^= i1;
c[2] ^= i2;
c[3] ^= i3;
c[4] ^= i0;
c[5] ^= i1;
c[6] ^= i2;
c[7] ^= i3;
// Iterate the system four times
for (var i = 0; i < 4; i++) Rabbit._nextstate();
},
// Next-state function
_nextstate: function () {
// Save old counter values
for (var c_old = [], i = 0; i < 8; i++) c_old[i] = c[i];
// Calculate new counter values
c[0] = (c[0] + 0x4D34D34D + b) >>> 0;
c[1] = (c[1] + 0xD34D34D3 + ((c[0] >>> 0) < (c_old[0] >>> 0) ? 1 : 0)) >>> 0;
c[2] = (c[2] + 0x34D34D34 + ((c[1] >>> 0) < (c_old[1] >>> 0) ? 1 : 0)) >>> 0;
c[3] = (c[3] + 0x4D34D34D + ((c[2] >>> 0) < (c_old[2] >>> 0) ? 1 : 0)) >>> 0;
c[4] = (c[4] + 0xD34D34D3 + ((c[3] >>> 0) < (c_old[3] >>> 0) ? 1 : 0)) >>> 0;
c[5] = (c[5] + 0x34D34D34 + ((c[4] >>> 0) < (c_old[4] >>> 0) ? 1 : 0)) >>> 0;
c[6] = (c[6] + 0x4D34D34D + ((c[5] >>> 0) < (c_old[5] >>> 0) ? 1 : 0)) >>> 0;
c[7] = (c[7] + 0xD34D34D3 + ((c[6] >>> 0) < (c_old[6] >>> 0) ? 1 : 0)) >>> 0;
b = (c[7] >>> 0) < (c_old[7] >>> 0) ? 1 : 0;
// Calculate the g-values
for (var g = [], i = 0; i < 8; i++) {
var gx = (x[i] + c[i]) >>> 0;
// Construct high and low argument for squaring
var ga = gx & 0xFFFF,
gb = gx >>> 16;
// Calculate high and low result of squaring
var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb,
gl = (((gx & 0xFFFF0000) * gx) >>> 0) + (((gx & 0x0000FFFF) * gx) >>> 0) >>> 0;
// High XOR low
g[i] = gh ^ gl;
}
// Calculate new state values
x[0] = g[0] + ((g[7] << 16) | (g[7] >>> 16)) + ((g[6] << 16) | (g[6] >>> 16));
x[1] = g[1] + ((g[0] << 8) | (g[0] >>> 24)) + g[7];
x[2] = g[2] + ((g[1] << 16) | (g[1] >>> 16)) + ((g[0] << 16) | (g[0] >>> 16));
x[3] = g[3] + ((g[2] << 8) | (g[2] >>> 24)) + g[1];
x[4] = g[4] + ((g[3] << 16) | (g[3] >>> 16)) + ((g[2] << 16) | (g[2] >>> 16));
x[5] = g[5] + ((g[4] << 8) | (g[4] >>> 24)) + g[3];
x[6] = g[6] + ((g[5] << 16) | (g[5] >>> 16)) + ((g[4] << 16) | (g[4] >>> 16));
x[7] = g[7] + ((g[6] << 8) | (g[6] >>> 24)) + g[5];
}
};
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var a=Crypto.util;var b=Crypto.SHA1=function(e,c){var d=a.wordsToBytes(b._sha1(e));return c&&c.asBytes?d:c&&c.asString?a.bytesToString(d):a.bytesToHex(d)};b._sha1=function(k){var u=a.stringToWords(k),v=k.length*8,o=[],q=1732584193,p=-271733879,h=-1732584194,g=271733878,f=-1009589776;u[v>>5]|=128<<(24-v%32);u[((v+64>>>9)<<4)+15]=v;for(var y=0;y<u.length;y+=16){var D=q,C=p,B=h,A=g,z=f;for(var x=0;x<80;x++){if(x<16){o[x]=u[y+x]}else{var s=o[x-3]^o[x-8]^o[x-14]^o[x-16];o[x]=(s<<1)|(s>>>31)}var r=((q<<5)|(q>>>27))+f+(o[x]>>>0)+(x<20?(p&h|~p&g)+1518500249:x<40?(p^h^g)+1859775393:x<60?(p&h|p&g|h&g)-1894007588:(p^h^g)-899497514);f=g;g=h;h=(p<<30)|(p>>>2);p=q;q=r}q+=D;p+=C;h+=B;g+=A;f+=z}return[q,p,h,g,f]};b._blocksize=16})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
// Public API
var SHA1 = Crypto.SHA1 = function (message, options) {
var digestbytes = util.wordsToBytes(SHA1._sha1(message));
return options && options.asBytes ? digestbytes :
options && options.asString ? util.bytesToString(digestbytes) :
util.bytesToHex(digestbytes);
};
// The core
SHA1._sha1 = function (message) {
var m = util.stringToWords(message),
l = message.length * 8,
w = [],
H0 = 1732584193,
H1 = -271733879,
H2 = -1732584194,
H3 = 271733878,
H4 = -1009589776;
// Padding
m[l >> 5] |= 0x80 << (24 - l % 32);
m[((l + 64 >>> 9) << 4) + 15] = l;
for (var i = 0; i < m.length; i += 16) {
var a = H0,
b = H1,
c = H2,
d = H3,
e = H4;
for (var j = 0; j < 80; j++) {
if (j < 16) w[j] = m[i + j];
else {
var n = w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16];
w[j] = (n << 1) | (n >>> 31);
}
var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + (
j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 :
j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 :
j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 :
(H1 ^ H2 ^ H3) - 899497514);
H4 = H3;
H3 = H2;
H2 = (H1 << 30) | (H1 >>> 2);
H1 = H0;
H0 = t;
}
H0 += a;
H1 += b;
H2 += c;
H3 += d;
H4 += e;
}
return [H0, H1, H2, H3, H4];
};
// Package private blocksize
SHA1._blocksize = 16;
})();
/*
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){var b=Crypto.util;var a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var c=Crypto.SHA256=function(f,d){var e=b.wordsToBytes(c._sha256(f));return d&&d.asBytes?e:d&&d.asString?b.bytesToString(e):b.bytesToHex(e)};c._sha256=function(q){var y=b.stringToWords(q),z=q.length*8,r=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],s=[],K,J,I,G,F,E,D,C,B,A,p,o;y[z>>5]|=128<<(24-z%32);y[((z+64>>9)<<4)+15]=z;for(var B=0;B<y.length;B+=16){K=r[0];J=r[1];I=r[2];G=r[3];F=r[4];E=r[5];D=r[6];C=r[7];for(var A=0;A<64;A++){if(A<16){s[A]=y[A+B]}else{var n=s[A-15],u=s[A-2],M=((n<<25)|(n>>>7))^((n<<14)|(n>>>18))^(n>>>3),L=((u<<15)|(u>>>17))^((u<<13)|(u>>>19))^(u>>>10);s[A]=M+(s[A-7]>>>0)+L+(s[A-16]>>>0)}var t=F&E^~F&D,k=K&J^K&I^J&I,x=((K<<30)|(K>>>2))^((K<<19)|(K>>>13))^((K<<10)|(K>>>22)),v=((F<<26)|(F>>>6))^((F<<21)|(F>>>11))^((F<<7)|(F>>>25));p=(C>>>0)+v+t+(a[A])+(s[A]>>>0);o=x+k;C=D;D=E;E=F;F=G+p;G=I;I=J;J=K;K=p+o}r[0]+=K;r[1]+=J;r[2]+=I;r[3]+=G;r[4]+=F;r[5]+=E;r[6]+=D;r[7]+=C}return r};c._blocksize=16})();
\ No newline at end of file
/*!
* Crypto-JS v1.1.0
* http://code.google.com/p/crypto-js/
* Copyright (c) 2009, Jeff Mott. All rights reserved.
* http://code.google.com/p/crypto-js/wiki/License
*/
(function(){
// Shortcut
var util = Crypto.util;
// Constants
var K = [ 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 ];
// Public API
var SHA256 = Crypto.SHA256 = function (message, options) {
var digestbytes = util.wordsToBytes(SHA256._sha256(message));
return options && options.asBytes ? digestbytes :
options && options.asString ? util.bytesToString(digestbytes) :
util.bytesToHex(digestbytes);
};
// The core
SHA256._sha256 = function (message) {
var m = util.stringToWords(message),
l = message.length * 8,
H = [ 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,
0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19 ],
w = [],
a, b, c, d, e, f, g, h, i, j,
t1, t2;
// Padding
m[l >> 5] |= 0x80 << (24 - l % 32);
m[((l + 64 >> 9) << 4) + 15] = l;
for (var i = 0; i < m.length; i += 16) {
a = H[0];
b = H[1];
c = H[2];
d = H[3];
e = H[4];
f = H[5];
g = H[6];
h = H[7];
for (var j = 0; j < 64; j++) {
if (j < 16) w[j] = m[j + i];
else {
var gamma0x = w[j - 15],
gamma1x = w[j - 2],
gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^
((gamma0x << 14) | (gamma0x >>> 18)) ^
(gamma0x >>> 3),
gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^
((gamma1x << 13) | (gamma1x >>> 19)) ^
(gamma1x >>> 10);
w[j] = gamma0 + (w[j - 7] >>> 0) +
gamma1 + (w[j - 16] >>> 0);
}
var ch = e & f ^ ~e & g,
maj = a & b ^ a & c ^ b & c,
sigma0 = ((a << 30) | (a >>> 2)) ^
((a << 19) | (a >>> 13)) ^
((a << 10) | (a >>> 22)),
sigma1 = ((e << 26) | (e >>> 6)) ^
((e << 21) | (e >>> 11)) ^
((e << 7) | (e >>> 25));
t1 = (h >>> 0) + sigma1 + ch + (K[j]) + (w[j] >>> 0);
t2 = sigma0 + maj;
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
H[0] += a;
H[1] += b;
H[2] += c;
H[3] += d;
H[4] += e;
H[5] += f;
H[6] += g;
H[7] += h;
}
return H;
};
// Package private blocksize
SHA256._blocksize = 16;
})();
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<title></title>
<script src="./jquery.min.js"></script>
<style type="text/css">.spinner{margin:210px auto;width:20px;height:20px;position:relative;}.container1 > div,.container2 > div,.container3 > div{width:6px;height:6px;background-color:#333;border-radius:100%;position:absolute;-webkit-animation:bouncedelay 1.2s infinite ease-in-out;animation:bouncedelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both;}.spinner .spinner-container{position:absolute;width:100%;height:100%;}.container2{-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg);}.container3{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg);}.circle1{top:0;left:0;}.circle2{top:0;right:0;}.circle3{right:0;bottom:0;}.circle4{left:0;bottom:0;}.container2 .circle1{-webkit-animation-delay:-1.1s;animation-delay:-1.1s;}.container3 .circle1{-webkit-animation-delay:-1.0s;animation-delay:-1.0s;}.container1 .circle2{-webkit-animation-delay:-0.9s;animation-delay:-0.9s;}.container2 .circle2{-webkit-animation-delay:-0.8s;animation-delay:-0.8s;}.container3 .circle2{-webkit-animation-delay:-0.7s;animation-delay:-0.7s;}.container1 .circle3{-webkit-animation-delay:-0.6s;animation-delay:-0.6s;}.container2 .circle3{-webkit-animation-delay:-0.5s;animation-delay:-0.5s;}.container3 .circle3{-webkit-animation-delay:-0.4s;animation-delay:-0.4s;}.container1 .circle4{-webkit-animation-delay:-0.3s;animation-delay:-0.3s;}.container2 .circle4{-webkit-animation-delay:-0.2s;animation-delay:-0.2s;}.container3 .circle4{-webkit-animation-delay:-0.1s;animation-delay:-0.1s;}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0.0)}40%{-webkit-transform:scale(1.0)}}@keyframes bouncedelay{0%,80%,100%{transform:scale(0.0);-webkit-transform:scale(0.0);}40%{transform:scale(1.0);-webkit-transform:scale(1.0);}} </style>
</head>
<body id="body">
<div class="spinner"><div class="spinner-container container1"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container2"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container3"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div></div>
<script src="./transfer.js"></script>
</body>
</html>
$(function() {
let comGetLocation={
//code
getCompanyCode() {
let pathname = location.pathname;
return pathname.split("/")[1];
},
//sit code
getSiteCode() {
let pathname = location.pathname;
return pathname.split("/")[2];
},
//compan + sit
getRouterBefore() {
let pathname = location.pathname;
return "/" + pathname.split("/")[1] + "/" + pathname.split("/")[2];
},
//reject
getRouterDetail() {
let pathname = location.pathname;
return "/" + pathname.split("/")[3] + "/" + pathname.split("/")[4];
},
//hash parm
getUrlParam(query) {
var search = location.search;
if (location.search.indexOf("?") == -1) {
return '';
}
var queryString = search.split("?")[1];
if (queryString.indexOf("&&") != -1) {
var arr = queryString.split("&&");
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(query) != -1) {
return arr[i].split(["=",1]).join();
}
}
}else if (queryString.indexOf("&") != -1) {
// split
var arr = queryString.split("&");
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(query) != -1) {
return arr[i].split(query+"=")[1];
}
}
} else if (queryString.indexOf("=") != -1) {
if (queryString.indexOf(query) != -1) {
return queryString.split("=")[1];
}
} else {
return '';
}
},
getUrl() {
var search = location.search;
var queryString = search.split("*")[2];
if(queryString){
return queryString;
} else {
return '';
}
}
};
function getAuthorization(parms,href_url,companyCode,siteCode) {
var data={
...parms
};
var origin= location.origin;
$.ajax({
type: "post",
url: origin+"/system/public/api/outside/ebscn/oa/pc/login?companyCode=" + companyCode + "&siteCode=" + siteCode,
// url: origin+"/system/public/api/outside/ebscn/oa/pc/login?companyCode=" + 'ebscn' + "&siteCode=" + "jjrxxzx",
async: true,
dataType: "json",
contentType: 'application/json;charset=UTF-8',
data:JSON.stringify(data),
success: function (res) {
if (res.code == 1000) {
$("#erro_wrap").html("<span style='color: red'>接口请求成功:</span>")
//token
sessionStorage.setItem("token", res.data.Authorization);
sessionStorage.setItem("accountId", res.data.userInfo.id);
sessionStorage.setItem("orgId", res.data.userInfo.orgId);
sessionStorage.setItem("headPortrait", res.data.userInfo.headPortrait);
sessionStorage.setItem("fullname", res.data.userInfo.fullName);
sessionStorage.setItem("username", res.data.userInfo.username);
sessionStorage.setItem("siteName", res.data.userInfo.siteName);
$("#erro_wrap").html("<span style='color: red'>接口请求成功替换跳转:</span>");
location.replace(href_url);
$("#erro_wrap").html("<span style='color: red'>接口请求成功替换跳转失败:</span>")
}else {
alert(JSON.stringify(res.subMsg));
$("#erro_wrap").html("<span style='color: red'>错误信息:</span>"+res.subMsg)
}
},
error:function (err) {
$("#erro_wrap").html("<span style='color: red'>错误信息:</span>")
alert(JSON.stringify(err));
}
});
};
let appId = comGetLocation.getUrlParam("appId");
let userName = comGetLocation.getUrlParam("UserID");//userName
let sign = comGetLocation.getUrlParam("Token");//sigin
let url = comGetLocation.getUrlParam("url");
let companyCode= comGetLocation.getUrlParam("companyCode");
let siteCode= comGetLocation.getUrlParam("siteCode");
var data = {userName,sign,appId}
getAuthorization(data,url,companyCode,siteCode);
});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){I=t}function r(t){J=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof H?function(){H(a)}:c()}function s(){var t=0,e=new V(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<G;t+=2){var e=$[t],n=$[t+1];e(n),$[t]=void 0,$[t+1]=void 0}G=0}function f(){try{var t=require,e=t("vertx");return H=e.runOnLoop||e.runOnContext,i()}catch(n){return c()}}function l(t,e){var n=arguments,r=this,o=new this.constructor(p);void 0===o[et]&&k(o);var i=r._state;return i?!function(){var t=n[i-1];J(function(){return x(i,o,t,r._result)})}():E(r,o,t,e),o}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return it.error=e,it}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){J(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===rt?S(t,e._result):e._state===ot?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===it?(j(t,it.error),it.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===nt&&(t._result=e,t._state=rt,0!==t._subscribers.length&&J(T,t))}function j(t,e){t._state===nt&&(t._state=ot,t._result=e,J(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+rt]=n,o[i+ot]=r,0===i&&t._state&&J(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?x(n,r,o,i):o(i);t._subscribers.length=0}}function M(){this.error=null}function P(t,e){try{return t(e)}catch(n){return st.error=n,st}}function x(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=P(r,o),s===st?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==nt||(i&&c?g(n,s):a?j(n,u):t===rt?S(n,s):t===ot&&j(n,s))}function C(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function O(){return ut++}function k(t){t[et]=ut++,t._state=void 0,t._result=void 0,t._subscribers=[]}function Y(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[et]||k(this.promise),B(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,q())}function q(){return new Error("Array Methods must be provided an Array")}function F(t){return new Y(this,t).promise}function D(t){var e=this;return new e(B(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function K(t){var e=this,n=new e(p);return j(n,t),n}function L(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function N(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function U(t){this[et]=O(),this._result=this._state=void 0,this._subscribers=[],p!==t&&("function"!=typeof t&&L(),this instanceof U?C(this,t):N())}function W(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=U}var z=void 0;z=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var B=z,G=0,H=void 0,I=void 0,J=function(t,e){$[G]=t,$[G+1]=e,G+=2,2===G&&(I?I(a):tt())},Q="undefined"!=typeof window?window:void 0,R=Q||{},V=R.MutationObserver||R.WebKitMutationObserver,X="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),Z="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,$=new Array(1e3),tt=void 0;tt=X?o():V?s():Z?u():void 0===Q&&"function"==typeof require?f():c();var et=Math.random().toString(36).substring(16),nt=void 0,rt=1,ot=2,it=new M,st=new M,ut=0;return Y.prototype._enumerate=function(t){for(var e=0;this._state===nt&&e<t.length;e++)this._eachEntry(t[e],e)},Y.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==nt)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===U){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},Y.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===nt&&(this._remaining--,t===ot?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},Y.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(rt,e,t)},function(t){return n._settledAt(ot,e,t)})},U.all=F,U.race=D,U.resolve=h,U.reject=K,U._setScheduler=n,U._setAsap=r,U._asap=J,U.prototype={constructor:U,then:l,"catch":function(t){return this.then(null,t)}},U.polyfill=W,U.Promise=U,U.polyfill(),U});
\ No newline at end of file
/**高清方案
*
* 源文件:https://os.alipayobjects.com/rmsportal/lvEQQbNgHsIxVfXLkmuX.js
*
* **/
window.devicePixelRatio = 2;
!function (e) {
function t(a) {
if (i[a]) return i[a].exports;
var n = i[a] = {exports: {}, id: a, loaded: !1};
return e[a].call(n.exports, n, n.exports, t), n.loaded = !0, n.exports
}
var i = {};
return t.m = e, t.c = i, t.p = "", t(0)
}([function (e, t) {
"use strict";
Object.defineProperty(t, "__esModule", {value: !0});
var i = window;
t["default"] = i.flex = function (e, t) {
var a = e || 100, n = t || 1, r = i.document, o = navigator.userAgent,
d = o.match(/Android[\S\s]+AppleWebkit\/(\d{3})/i), l = o.match(/U3\/((\d+|\.){5,})/i),
c = l && parseInt(l[1].split(".").join(""), 10) >= 80,
p = navigator.appVersion.match(/(iphone|ipad|ipod)/gi), s = i.devicePixelRatio || 1;
p || d && d[1] > 534 || c || (s = 1);
var u = 1 / s, m = r.querySelector('meta[name="viewport"]');
m || (m = r.createElement("meta"), m.setAttribute("name", "viewport"), r.head.appendChild(m)), m.setAttribute("content", "width=device-width,user-scalable=no,initial-scale=" + u + ",maximum-scale=" + u + ",minimum-scale=" + u), r.documentElement.style.fontSize = a / 2 * s * n + "px"
}, e.exports = t["default"]
}]);
flex(100, 1);
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<title></title>
<script src="./pcTransfer/jquery.min.js"></script>
<style type="text/css">.spinner{margin:210px auto;width:20px;height:20px;position:relative;}.container1 > div,.container2 > div,.container3 > div{width:6px;height:6px;background-color:#333;border-radius:100%;position:absolute;-webkit-animation:bouncedelay 1.2s infinite ease-in-out;animation:bouncedelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both;}.spinner .spinner-container{position:absolute;width:100%;height:100%;}.container2{-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg);}.container3{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg);}.circle1{top:0;left:0;}.circle2{top:0;right:0;}.circle3{right:0;bottom:0;}.circle4{left:0;bottom:0;}.container2 .circle1{-webkit-animation-delay:-1.1s;animation-delay:-1.1s;}.container3 .circle1{-webkit-animation-delay:-1.0s;animation-delay:-1.0s;}.container1 .circle2{-webkit-animation-delay:-0.9s;animation-delay:-0.9s;}.container2 .circle2{-webkit-animation-delay:-0.8s;animation-delay:-0.8s;}.container3 .circle2{-webkit-animation-delay:-0.7s;animation-delay:-0.7s;}.container1 .circle3{-webkit-animation-delay:-0.6s;animation-delay:-0.6s;}.container2 .circle3{-webkit-animation-delay:-0.5s;animation-delay:-0.5s;}.container3 .circle3{-webkit-animation-delay:-0.4s;animation-delay:-0.4s;}.container1 .circle4{-webkit-animation-delay:-0.3s;animation-delay:-0.3s;}.container2 .circle4{-webkit-animation-delay:-0.2s;animation-delay:-0.2s;}.container3 .circle4{-webkit-animation-delay:-0.1s;animation-delay:-0.1s;}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0.0)}40%{-webkit-transform:scale(1.0)}}@keyframes bouncedelay{0%,80%,100%{transform:scale(0.0);-webkit-transform:scale(0.0);}40%{transform:scale(1.0);-webkit-transform:scale(1.0);}} </style>
</head>
<body id="body">
<div class="spinner" id="erro_wrap"><div class="spinner-container container1"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container2"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container3"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div></div>
<script src="./pcTransfer/rjtransfer.js"></script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<title></title>
<script src="./pcTransfer/jquery.min.js"></script>
<style type="text/css">.spinner{margin:210px auto;width:20px;height:20px;position:relative;}.container1 > div,.container2 > div,.container3 > div{width:6px;height:6px;background-color:#333;border-radius:100%;position:absolute;-webkit-animation:bouncedelay 1.2s infinite ease-in-out;animation:bouncedelay 1.2s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both;}.spinner .spinner-container{position:absolute;width:100%;height:100%;}.container2{-webkit-transform:rotateZ(45deg);transform:rotateZ(45deg);}.container3{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg);}.circle1{top:0;left:0;}.circle2{top:0;right:0;}.circle3{right:0;bottom:0;}.circle4{left:0;bottom:0;}.container2 .circle1{-webkit-animation-delay:-1.1s;animation-delay:-1.1s;}.container3 .circle1{-webkit-animation-delay:-1.0s;animation-delay:-1.0s;}.container1 .circle2{-webkit-animation-delay:-0.9s;animation-delay:-0.9s;}.container2 .circle2{-webkit-animation-delay:-0.8s;animation-delay:-0.8s;}.container3 .circle2{-webkit-animation-delay:-0.7s;animation-delay:-0.7s;}.container1 .circle3{-webkit-animation-delay:-0.6s;animation-delay:-0.6s;}.container2 .circle3{-webkit-animation-delay:-0.5s;animation-delay:-0.5s;}.container3 .circle3{-webkit-animation-delay:-0.4s;animation-delay:-0.4s;}.container1 .circle4{-webkit-animation-delay:-0.3s;animation-delay:-0.3s;}.container2 .circle4{-webkit-animation-delay:-0.2s;animation-delay:-0.2s;}.container3 .circle4{-webkit-animation-delay:-0.1s;animation-delay:-0.1s;}@-webkit-keyframes bouncedelay{0%,80%,100%{-webkit-transform:scale(0.0)}40%{-webkit-transform:scale(1.0)}}@keyframes bouncedelay{0%,80%,100%{transform:scale(0.0);-webkit-transform:scale(0.0);}40%{transform:scale(1.0);-webkit-transform:scale(1.0);}} </style>
</head>
<body id="body">
<div class="spinner"><div class="spinner-container container1"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container2"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container3"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div></div>
<script src="./pcTransfer/transfer.js"></script>
</body>
</html>
// 1.计算加载时间
function getPerformanceTiming() {
var performance = window.performance;
if (!performance) {
// 当前浏览器不支持
console.log('你的浏览器不支持 performance 接口');
return;
}
var t = performance.timing;
var times = {};
//【重要】页面加载完成的时间
//【原因】这几乎代表了用户等待页面可用的时间
times.loadPage = t.loadEventEnd - t.navigationStart;
//【重要】解析 DOM 树结构的时间
//【原因】反省下你的 DOM 树嵌套是不是太多了!
times.domReady = t.domComplete - t.responseEnd;
//【重要】重定向的时间
//【原因】拒绝重定向!比如,http://example.com/ 就不该写成 http://example.com
times.redirect = t.redirectEnd - t.redirectStart;
//【重要】DNS 查询时间
//【原因】DNS 预加载做了么?页面内是不是使用了太多不同的域名导致域名查询的时间太长?
// 可使用 HTML5 Prefetch 预查询 DNS ,见:[HTML5 prefetch](http://segmentfault.com/a/1190000000633364)
times.lookupDomain = t.domainLookupEnd - t.domainLookupStart;
//【重要】读取页面第一个字节的时间
//【原因】这可以理解为用户拿到你的资源占用的时间,加异地机房了么,加CDN 处理了么?加带宽了么?加 CPU 运算速度了么?
// TTFB 即 Time To First Byte 的意思
// 维基百科:https://en.wikipedia.org/wiki/Time_To_First_Byte
times.ttfb = t.responseStart - t.navigationStart;
//【重要】内容加载完成的时间
//【原因】页面内容经过 gzip 压缩了么,静态资源 css/js 等压缩了么?
times.request = t.responseEnd - t.requestStart;
//【重要】执行 onload 回调函数的时间
//【原因】是否太多不必要的操作都放到 onload 回调函数里执行了,考虑过延迟加载、按需加载的策略么?
times.loadEvent = t.loadEventEnd - t.loadEventStart;
// DNS 缓存时间
times.appcache = t.domainLookupStart - t.fetchStart;
// 卸载页面的时间
times.unloadEvent = t.unloadEventEnd - t.unloadEventStart;
// TCP 建立连接完成握手的时间
times.connect = t.connectEnd - t.connectStart;
return times;
}
// 2.计算加载时间
function getEntryTiming(entry) {
var t = entry;
var times = {};
// 重定向的时间
times.redirect = t.redirectEnd - t.redirectStart;
// DNS 查询时间
times.lookupDomain = t.domainLookupEnd - t.domainLookupStart;
// 内容加载完成的时间
times.request = t.responseEnd - t.requestStart;
// TCP 建立连接完成握手的时间
times.connect = t.connectEnd - t.connectStart;
// 挂载 entry 返回
times.name = entry.name;
times.entryType = entry.entryType;
times.initiatorType = entry.initiatorType;
times.duration = entry.duration;
return times;
}
// 例如:
function entriesTimes() {
var entries = window.performance.getEntries();//这个函数返回的将是一个数组,包含了页面中所有的 HTTP 请求
entries.forEach(function (entry) {
var times = getEntryTiming(entry);
console.log(times);
});
}
entriesTimes()
$(function() {
let comGetLocation={
//hash parm
getUrlParam() {
var search = location.search;
if (location.search.indexOf("?") == -1) {
return '';
}
var queryString = search.split("?")[1];
if (queryString.indexOf("&") != -1) {
var data={};
var arr = queryString.split("&"); // split
arr.map((item)=>{
data[item.split("=")[0]]=item.substring(item.indexOf("=")+1)
})
return data;
}else {
return '';
}
}
};
function getAuthorization(parms,href_url) {
if(!parms.md5nm){
alert("login_name没有找到")
return;
}
console.log(href_url,"url")
let {appId,mp,companyCode,siteCode,md5nm,token,salt,sign}= parms;
// console.log(appId,'appid');
// console.log(mp,'mp');
// console.log(appId,'appid');
// console.log(companyCode,'companyCode');
// console.log(siteCode,'siteCode');
// console.log(md5nm,'md5nm');
// console.log(token,'token');
// console.log(salt,'salt');
// console.log(sign,'sign');
// md5nm -->name ,mp -> terminalType,hrefUrl
var data={appId,name:md5nm,token,salt,sign,hrefUrl:href_url,type:parms.authType?parms.authType:1};
if(parms.mp==1||parms.mp==0){
data.terminalType=3;
}else{
data.terminalType=parms.mp;
}
var origin= location.origin;
$.ajax({
type: "post",
url: origin+"/system/public/api/plus/getAccount?companyCode=" + companyCode + "&siteCode=" + siteCode,
async: true,
dataType: "json",
contentType: 'application/json;charset=UTF-8',
data:JSON.stringify(data),
success: function (res) {
if (res.code == 1000) {
//token
sessionStorage.setItem("token", res.data.Authorization);
sessionStorage.setItem("accountId", res.data.userInfo.id);
sessionStorage.setItem("orgId", res.data.userInfo.orgId);
sessionStorage.setItem("headPortrait", res.data.userInfo.headPortrait);
sessionStorage.setItem("fullname", res.data.userInfo.fullName);
sessionStorage.setItem("username", res.data.userInfo.username);
sessionStorage.setItem("siteName", res.data.userInfo.siteName);
href_url=decodeURIComponent(href_url);
location.replace(href_url);
}else {
$("#body").html("<span style='color: red'>错误信息:</span>"+JSON.stringify(res))
}
},
error:function (err) {
$("#body").html(`<span style='color: red'>错误信息:${JSON.stringify(err)}</span>`)
}
});
};
let datas= comGetLocation.getUrlParam();
console.log('集合',datas);
var parms = datas;
let {appId,mp,companyCode,siteCode,md5nm,token,salt,sign}= parms;
if(appId&&companyCode&&siteCode&&md5nm&&token&&salt&&sign){
}else{
alert("参数不全,不发请求跳转");
return;
}
getAuthorization(parms,datas.href_url);
});
\ No newline at end of file
$(function() {
let comGetLocation={
//code
getCompanyCode() {
let pathname = location.pathname;
return pathname.split("/")[1];
},
//sit code
getSiteCode() {
let pathname = location.pathname;
return pathname.split("/")[2];
},
//compan + sit
getRouterBefore() {
let pathname = location.pathname;
return "/" + pathname.split("/")[1] + "/" + pathname.split("/")[2];
},
//reject
getRouterDetail() {
let pathname = location.pathname;
return "/" + pathname.split("/")[3] + "/" + pathname.split("/")[4];
},
//hash parm
getUrlParam(query) {
var search = location.search;
if (location.search.indexOf("?") == -1) {
return '';
}
var queryString = search.split("?")[1];
if (queryString.indexOf("&&") != -1) {
var arr = queryString.split("&&");
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(query) != -1) {
return arr[i].split(["=",1]).join();
}
}
}else if (queryString.indexOf("&") != -1) {
// split
var arr = queryString.split("&");
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(query) != -1) {
// href_url
if(query==="href_url"){
return location.href.split("href_url=")[1];
}
return arr[i].split(query+"=")[1];
}
}
} else if (queryString.indexOf("=") != -1) {
if (queryString.indexOf(query) != -1) {
return queryString.split("=")[1];
}
} else {
return '';
}
},
getUrl() {
var search = location.search;
var queryString = search.split("*")[2];
if(queryString){
return queryString;
} else {
return '';
}
}
};
function getAuthorization(parms,href_url) {
var data={
name:parms.md5nm,
salt:parms.salt?parms.salt:null,
appId:parms.appId?parms.appId:null,
type:parms.authType?parms.authType:null
};
if(parms.mp==1||parms.mp==0){
data.terminalType=3;
}else{
data.terminalType=parms.mp;
}
var origin= location.origin;
$.ajax({
type: "post",
// url: origin+"/system/api/loginApp?companyCode=" + companyCode + "&siteCode=" + siteCode,
url: origin+"/system/public/api/getAccount?companyCode=" + companyCode + "&siteCode=" + siteCode,
async: true,
dataType: "json",
contentType: 'application/json;charset=UTF-8',
data:JSON.stringify(data),
success: function (res) {
if (res.code == 1000) {
$("#erro_wrap").html("<span style='color: red'>接口请求成功:</span>")
//token
sessionStorage.setItem("token", res.data.Authorization);
sessionStorage.setItem("accountId", res.data.userInfo.id);
sessionStorage.setItem("orgId", res.data.userInfo.orgId);
sessionStorage.setItem("headPortrait", res.data.userInfo.headPortrait);
sessionStorage.setItem("fullname", res.data.userInfo.fullName);
sessionStorage.setItem("username", res.data.userInfo.username);
sessionStorage.setItem("siteName", res.data.userInfo.siteName);
sessionStorage.setItem("mp", mp);
$("#erro_wrap").html("<span style='color: red'>接口请求成功替换跳转:</span>");
location.replace(href_url);
$("#erro_wrap").html("<span style='color: red'>接口请求成功替换跳转失败:</span>")
}else {
alert(JSON.stringify(res.subMsg));
$("#erro_wrap").html("<span style='color: red'>错误信息:</span>"+res.subMsg)
}
},
error:function (err) {
$("#erro_wrap").html("<span style='color: red'>错误信息:</span>")
alert(JSON.stringify(err));
}
});
};
let mp= comGetLocation.getUrlParam("mp");
let appId= comGetLocation.getUrlParam("appId");
let authType= comGetLocation.getUrlParam("authType");
let salt= comGetLocation.getUrlParam("salt");
let md5nm= comGetLocation.getUrlParam("md5nm");
let companyCode= comGetLocation.getUrlParam("companyCode");
let siteCode= comGetLocation.getUrlParam("siteCode");
let href_url= comGetLocation.getUrlParam("href_url");
var data = {appId,authType,md5nm,companyCode,siteCode,mp,salt}
getAuthorization(data,href_url);
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>video</title>
</head>
<body style="background: #000;margin: 0;">
<video id="video-player" style="width: 100%;background: #000;"
autoplay="false"
x5-video-player-type="h5"
x5-video-orientation="landscape|portrait"
controls/>
<script>
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null)
return unescape(r[2]);
return null; //返回参数值
}
window.onload = function () {
var src = getUrlParam("src");
var videoPlayer = document.getElementById("video-player");
videoPlayer.src = src;
videoPlayer.pause();
}
</script>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
const urlConfigObj = {
urlPrefix:""
};
{
"name": "wmy-pc",
"version": "0.0.1",
"description": "wmy-pc",
"main": "index.js",
"license": {
"type": "ISC",
"url": "http://git@g.km365.pw:122/frontend/wmyPc.git"
},
"scripts": {
"start": "npm run dev",
"server": "node build/server.prod.js",
"dev": "cross-env NODE_ENV=development webpack-dev-server --config ./build/webpack.dev.config.js --port 8092",
"buildP": "npm run build:prod",
"build:prod": "cross-env NODE_ENV=production webpack --config ./build/webpack.prod.config.js",
"//build": " npm run clean:distJS && npm run clean:distImgs && cross-env NODE_ENV=production && webpack --config ./build/webpack.dev.config.js",
"build": " npm run clean:distJS && npm run clean:distImgs && NODE_ENV=production && webpack --config ./build/webpack.prod.config.js",
"clean:distJS": "rm -rf ./dist/js",
"clean:distImgs": "rm -rf ./dist/images"
},
"devDependencies": {
"@babel/core": "^7.1.6",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/plugin-proposal-decorators": "^7.1.6",
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.2.0",
"@babel/preset-env": "^7.1.6",
"@babel/preset-react": "^7.0.0",
"autoprefixer": "^9.3.1",
"axios": "^0.18.1",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.4",
"babel-plugin-import": "^1.11.0",
"babel-plugin-transform-decorators-legacy": "^1.3.5",
"braft-editor": "^2.3.8",
"braft-finder": "0.0.21",
"braft-utils": "^3.0.12",
"cross-env": "^5.2.0",
"css-loader": "^1.0.1",
"cssnano": "^4.1.7",
"eslint-plugin-react": "^7.11.1",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^2.0.0",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"iscroll": "^5.2.0",
"jquery": "^3.3.1",
"js-base64": "^2.5.1",
"js-cookie": "^2.2.1",
"less": "^3.9.0",
"less-loader": "^4.1.0",
"mini-css-extract-plugin": "^0.4.5",
"moment": "^2.22.1",
"postcss-loader": "^3.0.0",
"progress-bar-webpack-plugin": "^1.11.0",
"react-cropper": "^1.3.0",
"react-hot-loader": "^4.3.12",
"react-iscroll": "^2.0.3",
"react-loadable": "^5.5.0",
"react-perfect-scrollbar": "^1.5.8",
"react-textscroll": "^1.0.0",
"redux-actions": "^0.12.0",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0",
"rimraf": "^2.6.2",
"scss-loader": "0.0.1",
"style-loader": "^0.23.1",
"terser-webpack-plugin": "^1.1.0",
"uglifyjs-webpack-plugin": "^2.0.1",
"url-loader": "^1.1.2",
"video-react": "^0.13.1",
"webpack": "^4.26.1",
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.3.1",
"webpack-merge": "^4.1.4",
"whatwg-fetch": "^3.0.0"
},
"dependencies": {
"antd": "^3.26.20",
"crypto-js": "^3.1.9-1",
"draft-js": "^0.10.5",
"draft-js-export-html": "^1.2.0",
"echarts": "^4.2.0-rc.2",
"echarts-for-react": "^2.0.15-beta.0",
"immutability-helper": "^2.8.1",
"js-base64": "^2.5.1",
"md5": "^2.2.1",
"node-rsa": "^1.0.1",
"plupload": "^2.3.6",
"react": "^16.6.3",
"react-dnd": "^6.0.0",
"react-dnd-html5-backend": "^6.0.0",
"react-dom": "^16.6.3",
"react-intl-universal": "^1.15.3",
"react-redux": "^5.1.1",
"react-router-dom": "^4.3.1",
"react-truncate": "^2.4.0",
"redux": "^4.0.1",
"sm-crypto": "^0.1.2",
"tslib": "^2.0.3"
}
}
git branch -D master
git branch master
git push -u --force origin master
\ No newline at end of file
git branch -D uat
git push origin --delete uat
git branch uat
git push -u origin uat
\ No newline at end of file
import * as types from "../constants/ActionTypes";
export const addTodo = text => ({ type: types.ADD_TODO, text });
export const deleteTodo = id => ({ type: types.DELETE_TODO, id });
export const editTodo = (id, text) => ({ type: types.EDIT_TODO, id, text });
export const completeTodo = id => ({ type: types.COMPLETE_TODO, id });
export const completeAllTodos = () => ({ type: types.COMPLETE_ALL_TODOS });
export const clearCompleted = () => ({ type: types.CLEAR_COMPLETED });
export const setVisibilityFilter = filter => ({
type: types.SET_VISIBILITY_FILTER,
filter
});
import React, {Component,Fragment} from "react";
import {Breadcrumb} from "antd";
import {Link} from "react-router-dom";
import func from "../../utils/commonFunc";
import "./style.less";
const Item = Breadcrumb.Item;
class Bread extends Component {
constructor(props){
super(props);
this.renderBread = this.renderBread.bind(this);
}
renderBread(){
let pathname = location.pathname;
let pathArr = pathname.split("/");
console.log(this.props.history);
switch (pathArr[3]) {
case "course":
case "coursetwo":
case "coursethree":
return <Item>课程列表</Item>;
case "courseplay":
return <Item>课程详情</Item>;
case "search":
return <Item>全局搜索</Item>;
case"living":
return <Item>直播列表</Item>;
case"news":
return <Item>新闻列表</Item>;
case"survey":
return <Item>调研列表</Item>;
case"training":
return <Item>项目列表</Item>;
case"my":
return <Item>我的</Item>;
case"homework":
return <Item>作业详情</Item>;
case"commentwork":
return <Item>提交作业</Item>;
case"notices":
return <Item>公告列表</Item>;
}
}
render() {
return <div className="main-bread-container">
<div className="main-bread-display">
<Breadcrumb separator={">"}>
<Item>
<Link to={{
pathname:func.getRouterBefore()+"/index"
}}>首页</Link>
</Item>
{this.renderBread()}
</Breadcrumb>
</div>
</div>;
}
}
export default Bread;
\ No newline at end of file
.main-bread-container{
width: 100%;
height: 50px;
background-color: #fff;
.main-bread-display{
width: 1200px;
height: 50px;
margin: 0 auto;
padding-top: 20px;
cursor: pointer;
.ant-breadcrumb {
line-height: 1;
a{
font-size: 14px;
color: #333;
}
}
}
}
.ant-breadcrumb-link>span:last-child {
color: #999999;
}
// .ant-breadcrumb>span:last-child {
// color: #999999;
// }
\ No newline at end of file
import React, {Component} from 'react';
import './style.less';
import {Icon} from 'antd';
import intl from 'react-intl-universal';
import func from "../../../utils/commonFunc.js";
export default class BreadBack extends Component {
constructor (props) {
super (props);
this.goBack = this.goBack.bind(this);
}
goBack () {
let indexPathGroup = ['noauthpage'];
let pathname = location.pathname;
let result = indexPathGroup.filter (item => {
return pathname.includes (item);
});
if (result.length > 0) {
this.props.history.push ({
pathname:func.getRouterBefore()+"/index"
});
} else {
window.history.back ();
}
}
render () {
return (
<div className="bread-back-container" onClick={this.goBack}>
<Icon
type="arrow-left"
style={{fontSize: 16, color: '#000', marginRight: 5}}
/>
{intl.get ('goBack')}
</div>
);
}
}
.bread-back-container {
width: 1200px;
margin: 0 auto;
font-size: 14px;
color: #666;
height: 54px;
padding-top: 20px;
cursor: pointer;
}
.bread-back-container{
width: 1200px;
margin: 0 auto;
font-size: 14px;
color: #666;
height: 54px;
padding-top: 20px;
cursor: pointer;
}
\ No newline at end of file
.main-bread-container {
width: 100%;
height: 54px;
}
.main-bread-container .main-bread-display {
width: 1200px;
height: 54px;
margin: 0 auto;
padding-top: 20px;
}
.main-bread-container .main-bread-display span {
color: #333;
font-size: 14px;
}
.main-bread-container .main-bread-display span .ant-breadcrumb-link > span:last-child {
color: #999;
}
.main-bread-container .main-bread-display .ant-breadcrumb-link > span {
cursor: pointer;
}
.main-bread-container .main-bread-display .ant-breadcrumb a {
font-size: 14px;
color: #333333;
}
.ant-breadcrumb-separator {
margin: 0 8px;
color: #333333 !important;
}
.main-bread-container{
width: 100%;
height: 54px;
.main-bread-display{
width: 1200px;
height: 54px;
margin: 0 auto;
padding-top: 20px;
cursor: pointer;
span{
color: #333;
font-size: 14px;
.ant-breadcrumb-link>span:last-child {
color: #999;
}
}
.ant-breadcrumb-link>span{
cursor: pointer;
}
.ant-breadcrumb {
a{
font-size: 14px;
color: #333333;
}
}
}
}
.ant-breadcrumb-separator {
margin: 0 8px;
//color: rgba(0,0,0,.65);
color: #333333 !important;
}
// .ant-breadcrumb>span:last-child {
// color: #333;
// }
\ No newline at end of file
.atcard {
position: relative;
border-radius: 6px;
}
.cardSpan {
border-radius: 10px;
// border: 2px solid rgb(236, 236, 236);
&:hover {
button {
color: #ffffff;
background-color: #4285F4;
}
}
}
.collectIcon {
color: #fff;
position: relative;
top: -1.2px;
}
.canceCollection {
margin-bottom: 35px;
height: 80px;
}
.delectColection {
.ant-modal-footer {
padding-top: 28px;
padding-bottom: 40px;
button{
border-radius: 30px;
height: 36px;
}
}
}
.collectIconbg {
position: absolute;
top: 7px;
right: 8px;
width: 20px;
height: 20px;
text-align: center;
background: #0279e6;
}
.currentct {
box-shadow: 0 2px 4px 0 hsla(0, 0%, 64.3%, .5) !important;
&:hover {
button {
color: #ffffff;
background-color: #4285F4;
}
}
}
.circleDiv {
color: #666;
font-size: 14px;
text-align: center;
width: 100%;
img {
width: 48px;
height: 48px;
margin-right: 10px;
margin-bottom: 0;
}
}
.cardSpan {
margin-right: 1%;
}
// .antd-card-cover{
// width:291px;
// }
.ant-card-cover img {
border-radius: 6px 6px 0 0;
}
.ant-card {
border-radius: 8px;
}
.cardLists .ant-card-cover img {
height: 171px;
width: 100%;
}
.cardLists .ant-card-body {
padding: 12px;
}
.cardLists .ant-rate {
font-size: 12px;
}
.cardLists .ant-rate-star {
margin-right: 4px;
margin-top: 16px;
font-size: 12px;
}
.cardLists .Inner {
padding: 0 0px;
margin-top: 10px;
}
#cardListwrap .atcard {
width: 100%;
border-radius: 6px;
}
.delectColection {
.ant-modal-title {
text-align: left!important;
}
.ant-modal-body {
text-align: center;
}
.ant-modal-footer {
text-align: center;
border-top: none;
padding-top: 0;
padding-bottom: 33px;
}
.ant-modal-footer button {
border-radius: 30px;
width: 110px;
height: 36px;
}
}
#cardListwrap .cardLists .ant-card-cover img:hover {
transform: scale(1.2);
// -webkit-transform: scale(-1.2);
}
#cardListwrap .cardLists .ant-card-cover img {
height: 171px;
transition: all 0.6s;
width: 291px;
}
#cardListwrap .cardLists .ant-card-cover {
height: 171px;
width: 291px;
overflow: hidden;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
}
\ No newline at end of file
import React, { Component } from 'react';
import { Card, Rate, Icon, Modal,Button} from 'antd';
import api from "Utils/api";
import request from "Utils/request";
import intl, { init } from "react-intl-universal";
import ReactEillipse from 'Components/ReactEllipse/ReactEllipse';
import './CardLIst.less';
// 课程类模板
class CardList extends Component {
constructor(props) {
super(props);
console.log("this.props.dataList***************", this.props);
let dataList = this.props.dataList;
dataList = this.formatArray(dataList);
//baseList 沒轉化之前的原始對象
this.state = {
dataList: dataList,
total: 50,
chooseId: '',
baseList: [],
visible:false,
loading:false,
chooseItem:{}
};
this.handleOk=this.handleOk.bind(this);
this.handleCancel=this.handleCancel.bind(this);
};
componentDidMount() {
var self = this;
}
componentWillReceiveProps(nextProps) {
if (nextProps.dataList.length != 0) {
var dataList = nextProps.dataList;
dataList = this.formatArray(dataList);
this.setState({ dataList: dataList, baseList: nextProps.dataList });
console.log("this.state.dataList", dataList);
}
}
formatArray(dataList) {//分行列 默认5个
var dataList = dataList || this.state.dataList;
var faarray = [];
var sonarray = [];
var colNum = this.props.colNum || 5;
dataList.map((item, key) => {
sonarray.push(item);
if (sonarray.length >= colNum) {
faarray.push(sonarray);
sonarray = [];
}
});
faarray.push(sonarray);
return faarray;
}
onMouseLeavehandle() {
this.setState({ chooseId: '' });
}
mouseOverHandle(params) {
this.setState({ chooseId: params });
}
clickHandle(id, e) {//卡片点击事件
if (e && e.stopPropagation)
//因此它支持W3C的stopPropagation()方法
e.stopPropagation();
else {
//否则,我们需要使用IE的方式来取消事件冒泡
window.event.cancelBubble = true;
}
this.props.clickHandle(id);
}
deleteHandle(colitem, e) {//我的收藏删除
if (e && e.stopPropagation)
//因此它支持W3C的stopPropagation()方法
e.stopPropagation();
else {
//否则,我们需要使用IE的方式来取消事件冒泡
window.event.cancelBubble = true;
}
this.setState({ visible:true,chooseItem:colitem});
}
handleOk(){
var self = this;
let colitem=this.state.chooseItem;
this.props.cancelFavorite(colitem.id,()=>{
self.handleCancel();
});
}
handleCancel(){
this.setState({visible:false});
}
render() {
let { chooseId, dataList } = this.state;
let { colNum = 5, content, children, Contenter,titleLimitSize } = this.props;
console.log('****titleLimitSize******',titleLimitSize)
const cardStyle = {
width: (100 - (colNum - 1) * 1) / colNum + "%",
display: "flex"
};
return (<div style={{ minHeight:400,background: '#f7f7f7', paddingTop: '32px' }} id="cardListwrap">
<Modal className="delectColection"
title={intl.get("collection.notice")}
width={520}
visible={this.state.visible}
onOk={this.handleOk}
onCancel={this.handleCancel}
footer={[
<Button style={{marginRight:"10px"}} key="back" type="primary" onClick={this.handleOk}>{intl.get('Yes')}</Button>,
<Button className="conceButton" key="conce" style={{color:"#999",marginLeft:0}}
loading={this.state.loading} onClick={this.handleCancel}>
{intl.get('Cancel')}
</Button>,
]}
>
<div className="circleDiv">
<img src={require("Static/images/promotIcon.png")} className="canceCollection" alt=""/>
{intl.get('AreYouSureToRemoveThisCourseFromYourFavoriteList?')}
</div>
</Modal>
<div style={{ minHeight: "400px" }} className="cardLists">
{dataList.map((item, key) => {
return (<div style={{ marginBottom: "30px" }} key={key}>
<div style={{ width: "100%", display: "flex" }}>
{
item.map((colitem, colkey) => {
if (children || Contenter) {//有自定義部分 chilren 传递自定义部分,content传递需要从数据中获取数据的部分
return (
<div className={(colkey + 1) % colNum == 0&&(colitem.id == chooseId) ? "unifyCardShadow" : (colkey + 1) % colNum == 0&&(colitem.id != chooseId)?'':(colkey + 1) % colNum != 0&&(colitem.id != chooseId)?'cardSpan unifyCardShadow':'cardSpan unifyCardShadow '} key={colkey} style={cardStyle}>
<div className={"atcard "}>
<Card id={colitem.id} className="sdf"
onClick={(e) => {
this.clickHandle(colitem.id, e);
}}
onMouseOver={() => { this.mouseOverHandle(colitem.id); }}
onMouseLeave={() => {
this.onMouseLeavehandle();
}}
cover={<img alt="example" className="cardImg" src={colitem.image || colitem.logoImg} style={{height:"171px"}}/>}
bordered={false}>
{children ? children : ''}
<Contenter onClick={() => { }}
{...this.props}
history={this.props.history}
data={colitem}></Contenter>
</Card>
</div>
</div>
);
} else {
return (
<div className={(colkey + 1) % colNum == 0 ? "" : 'cardSpan'} key={colitem.id} style={cardStyle}>
<div className={colitem.id == chooseId ? "atcard currentct" : "atcard"}>
<Card id={colitem.id} className="sdf"
onClick={(e) => {
this.clickHandle(colitem.id, e);
}}
onMouseOver={() => { this.mouseOverHandle(colitem.id); }}
onMouseLeave={() => {
this.onMouseLeavehandle();
}}
cover={<img alt="example" className="cardImg" src={colitem.image || colitem.logoImg} />}
bordered={false}>
<div style={{ height: "44px" }}>
<ReactEillipse limitSize={titleLimitSize?titleLimitSize:false} hideToggel={true} text={colitem.name}>
</ReactEillipse>
</div>
<div >
<Rate style={{ color: "#F79A58" }} allowHalf defaultValue={colitem.level} disabled /><span style={{ color: "#F79A58", fontSize: "12px", marginLeft: "3px" ,marginTop:'7px',position: "relative",top: "2px"}}>{colitem.level}</span>
</div>
<div style={{ display: colitem.id == chooseId ? 'block' : 'none' }} className="collectIconbg" onClick={(e) => { this.deleteHandle(colitem, e); }}>
<Icon type="heart" theme="filled" className="collectIcon" />
</div>
</Card>
</div>
</div>
);
}
})
}
</div>
</div>);
})
}
</div>
</div>);
}
}
export default CardList;
import React, { Component } from "react";
import "./style";
import { Carousel } from "antd";
const Slider = () => (
<Carousel>
{[1, 2, 3, 4, 5, 6].map(item => (
<div key={item}>
<h3>{item}</h3>
</div>
))}
</Carousel>
);
export default Slider;
/**
* chart
*/
import React from "react";
import ReactEcharts from "echarts-for-react";
export default class Chart extends React.PureComponent {
render() {
return <ReactEcharts option={this.props.option} />;
}
}
import React,{Component} from "react";
import $ from "jquery";
import "./dyList.less";
class DayingList extends Component{
constructor(props){
super(props);
this.renderRow = this.renderRow.bind(this);
this.listScroll = this.listScroll.bind(this);
}
listScroll(){
const {distanceToEnd,reachToEnd,isLoading,hasMore} = this.props;
let containerScrollTop = $("#dayingListId").scrollTop();
let containerHeight = $("#dayingListId")[0].offsetHeight;
let contentHeight = $("#dayingListContainerId")[0].offsetHeight;
if(contentHeight-containerHeight - containerScrollTop < distanceToEnd && !isLoading && hasMore){
reachToEnd();
}
}
renderRow(){
const {dataSource,renderRow} = this.props;
let result = dataSource.map((item,index)=>{
return renderRow(item,index);
});
return result;
}
render(){
const {className} = this.props;
return (
<div className={"daying-list-component"+" "+className} id={"dayingListId"} onScroll={this.listScroll} >
<div className="daying-list-component-container" id={"dayingListContainerId"}>
{this.renderRow()}
</div>
{
this.props.isLoading?
<div style={{width:"100%",height:100,textAlign:"center"}}>
加载中......
</div>:''
}
</div>
);
}
}
export default DayingList;
\ No newline at end of file
.daying-list-component{
width: 100%;
height: 100%;
overflow-x: hidden;
overflow-y: auto;
.daying-list-component-container{
width: 100%;
}
}
\ No newline at end of file
import React, {Component} from "react";
import {Icon, Spin} from 'antd';
const antIcon = <Icon type="loading" style={{fontSize: 80}} spin/>;
class Fetching extends Component{
render(){
const {isFetching,paddingTop} = this.props;
if(isFetching){
return (
<div style={{
width: "100%",
height: "100%",
textAlign: "center",
paddingTop: paddingTop?paddingTop:"25%",
overflow: "auto"
}}>
{/*<Spin indicator={antIcon} style={{marginLeft: "-40px"}}/>*/}
</div>
);
}else{
return this.props.children;
}
}
}
export default Fetching;
\ No newline at end of file
### 项目中全页面统一加载中间态组件
name|type|require
---|---|---
isFetching|boolean|yes
### useage
```
<Fetching isFetching="XXX">
{react components}
</Fetching>
```
\ No newline at end of file
// 字体图标自定义
import {Icon} from 'antd'
const IconFont = Icon.createFromIconfontCN({
scriptUrl: "https://customproject.kmelearning.com/1216718429028528128/iconfont.js",
});
export default IconFont;
// 预览图标
//https://customproject.kmelearning.com/1216718429028528128/demo_index.html
// 查看第三个tab Symbol 预览使用的字体
// 使用实例
{/* <IconFont type="icon-Exit"/> */}
\ No newline at end of file
// 字体图标自定义
import {Icon} from 'antd'
const IconFontNew = Icon.createFromIconfontCN({
scriptUrl: "https://customproject.kmelearning.com/1315911825392406528/iconfont.js",
});
export default IconFontNew;
// 预览图标
//http://customproject.kmelearning.com/1315911825392406528/demo_index.html //新的Icon地址
// 查看第三个tab Symbol 预览使用的字体
// 使用实例
{/* <IconFont type="icon-Exit"/> */}
\ No newline at end of file
import React, {Component, Fragment} from 'react';
import './style.less';
class LeftRightDisplay extends Component {
constructor (props) {
super (props);
this.state = {
leftWidth: 0,
rightWidth: 0,
containerHeight: 0,
};
}
componentDidMount () {
const {id} = this.props;
let beginWidth = 0;
let _this = this;
let containerDom = document.getElementById (id + 'daying-left-right');
let leftDom = containerDom.getElementsByClassName ('left-right-left');
let mainWidth = containerDom.offsetWidth;
for (let i = 0; i < leftDom.length; i++) {
if (leftDom[i].offsetWidth > beginWidth) {
beginWidth = leftDom[i].offsetWidth;
}
}
beginWidth=beginWidth+7;
console.log(beginWidth);
this.setState ({leftWidth: beginWidth, rightWidth: mainWidth - beginWidth - 18});
}
render () {
const {textData, id,rowDistance} = this.props;
var {leftStyle, rightStyle} = this.props;
if (!leftStyle) {
leftStyle = {};
}
if (!rightStyle) {
rightStyle = {};
}
const {leftWidth, rightWidth} = this.state;
let newLeftStyle = leftStyle;
let newRightStyle = rightStyle;
if (leftWidth > 0) {
newLeftStyle = Object.assign ({}, leftStyle, {width: leftWidth});
}
if (rightWidth > 0) {
newRightStyle = Object.assign ({}, rightStyle, {width: rightWidth});
}
return (
<div
className="left-right-display-container"
id={id + 'daying-left-right'}
>
{textData.map ((item, index) => {
return (
<div key={index} style={{marginBottom:rowDistance}}>
<div className="left-right-left" style={newLeftStyle}>
{item.leftText}
</div>
<div className="left-right-maohao" style={leftStyle}>:</div>
<div className="left-right-right" style={newRightStyle}>
{item.rightText}
</div>
<div style={{clear: 'both'}} />
</div>
);
})}
</div>
);
}
}
export default LeftRightDisplay;
.left-right-display-container {
width: 100%;
}
.left-right-display-container > div {
width: 100%;
}
.left-right-display-container .left-right-left {
line-height: 21px;
color: #666;
font-size: 14px;
float: left;
}
.left-right-display-container .left-right-right {
color: #737373;
font-size: 14px;
float: left;
word-break: break-all;
}
.left-right-display-container .left-right-maohao {
text-align: center;
width: 8px;
float: left;
margin-right: 10px;
}
.left-right-display-container {
width: 100%;
>div {
width: 100%;
}
.left-right-left {
line-height: 21px;
color: #666;
font-size: 14px;
float: left;
}
.left-right-right {
color: #737373;
font-size: 14px;
float: left;
word-break: break-all;
white-space: pre-wrap !important;
}
.left-right-maohao {
text-align: center;
width: 8px;
float: left;
margin-right: 10px;
}
}
\ No newline at end of file
import React, {Component} from 'react';
import uploader from './uploader';
import {message} from "antd";
import './style.less';
import {Icon} from 'antd';
import $ from 'jquery';
class OssUploader extends Component {
constructor (props) {
super (props);
this.state = {
fileQueue: [],
};
this.beforeUpload = this.beforeUpload.bind (this);
this.beginUpload = this.beginUpload.bind (this);
this.uploadProgress = this.uploadProgress.bind (this);
this.completeUpload = this.completeUpload.bind (this);
this.getOssUploader = this.getOssUploader.bind (this);
}
componentWillMount () {
this.ossUploader = null;
}
componentDidMount () {
window.$ = $;
let {fileFilter, id} = this.props;
if (!id) {
id = '';
}
if ($ ('#' + 'oss-upload-container' + id + ' input[type=file]').length == 0) {
if (fileFilter && fileFilter.length > 0) {
uploader.init (
'oss-selectedFile' + id,
'oss-upload-container' + id,
this.beforeUpload,
this.uploadProgress,
this.completeUpload,
fileFilter,
this.getOssUploader
);
} else {
uploader.init (
'oss-selectedFile' + id,
'oss-upload-container' + id,
this.beforeUpload,
this.uploadProgress,
this.completeUpload,
'',
this.getOssUploader
);
}
}
}
getOssUploader (up) {
this.ossUploader = up;
}
beforeUpload (isError, files,up,error) {
if (isError) {
if(error.code==-601){
message.info("文件类型不正确",3);
}
} else {
const {preFile, type} = this.props;
let preStatus = preFile (files[0]);
if (preStatus) {
this.beginUpload (files);
} else {
uploader.removeFiles (files);
}
}
}
beginUpload (files) {
let {uploadParam} = this.props;
let ossData = {
id: files[0].id,
fileName: files[0].id +
'.' +
files[0].name.split ('.')[files[0].name.split ('.').length - 1],
host: uploadParam.host,
dir: uploadParam.dir,
policy: uploadParam.policy,
accessid: uploadParam.accessid,
signature: uploadParam.signature,
};
console.log (this.ossUploader);
uploader.uploadFile (ossData, files, this.ossUploader);
}
uploadProgress (file) {
this.props.progressFile (file);
}
completeUpload (info, up, file, error) {
const {type} = this.props;
if (info.status == 200) {
this.props.completeFile (file, type, 'success');
} else {
this.props.completeFile ({id: file.id}, type, 'fail');
}
}
render () {
const {mode, id, renderUploadBtn} = this.props;
if (mode == 'report') {
return (
<div id="oss-upload-container">
<a href="javascript:void(0)" id="oss-selectedFile">
<div
className="default-upload-btn"
style={{width: 56, height: 56, paddingTop: 14}}
>
<Icon
type="plus"
className={'oss-upload-btn-icon'}
style={{fontSize: 28}}
/>
</div>
</a>
</div>
);
} else if (mode == 'case-cover') {
return (
<div id={'oss-upload-container' + id}>
<a href="javascript:void(0)" id={'oss-selectedFile' + id}>
{renderUploadBtn ()}
</a>
</div>
);
} else {
return (
<div id={'oss-upload-container' + id}>
<a href="javascript:void(0)" id={'oss-selectedFile' + id}>
<div className="default-upload-btn">
<Icon type="plus" className={'oss-upload-btn-icon'} />
</div>
</a>
</div>
);
}
}
}
export default OssUploader;
/*
* @Author: jay
* @Date: 2018-11-13 17:04:17
* @Last Modified by: jay
* @Last Modified time: 2018-11-14 11:36:06
* @Description scss variable
*/
.singleOverflow {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.default-upload-btn {
width: 80px;
height: 80px;
border: 1px dashed #ccc;
display: inline-block;
text-align: center;
padding-top: 20px;
}
.default-upload-btn .oss-upload-btn-icon {
font-size: 40px;
color: #ccc;
}
.default-upload-btn:hover {
border: 1px dashed #4285F4;
}
.default-upload-btn:hover .oss-upload-btn-icon {
color: #4285F4;
}
@import "../../styles/variable";
.default-upload-btn{
width: 80px;
height: 80px;
border: 1px dashed #ccc;
display: inline-block;
text-align: center;
padding-top: 20px;
.oss-upload-btn-icon {
font-size: 40px;
color: #ccc;
}
}
.default-upload-btn:hover {
border: 1px dashed @default_blue;
.oss-upload-btn-icon {
color: @default_blue;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment