From d37610b6cbffb2c4c1fd41f236f23f7343c47538 Mon Sep 17 00:00:00 2001 From: eshengsky Date: Mon, 17 Jun 2019 17:53:55 +0800 Subject: [PATCH] +Service Worker --- app.js | 14 + gulpfile.js | 39 + package-lock.json | 320 ++- package.json | 6 +- public/src/css/home-loading.css | 2 +- public/src/css/site.css | 5 + public/src/js/index.js | 24 +- public/src/js/prehandler.js | 37 + public/src/js/sw.js | 89 + sw.js | 3470 +++++++++++++++++++++++++++++++ views/shared/layout.pug | 19 +- 11 files changed, 3987 insertions(+), 38 deletions(-) create mode 100644 public/src/js/prehandler.js create mode 100644 public/src/js/sw.js create mode 100644 sw.js diff --git a/app.js b/app.js index aa22ab2..8a85591 100644 --- a/app.js +++ b/app.js @@ -1,4 +1,5 @@ const express = require('express'); +const fs = require('fs'); const path = require('path'); const favicon = require('serve-favicon'); const cookieParser = require('cookie-parser'); @@ -76,6 +77,19 @@ app.use(passport.session()); app.use('/static', express.static(path.join(__dirname, 'public'))); app.use('/nodeModules', express.static(path.join(__dirname, 'node_modules'))); +// Service Worker +app.get('/sw.js', (req, res) => { + fs.readFile(path.resolve(__dirname, './sw.js'), (err, data) => { + if (err) { + throw err; + } + res.writeHead(200, { + 'Content-type': 'text/javascript' + }); + res.end(data); + }); +}); + // 前台站点路由,无需登录 app.use('/', route); app.use('/', locale); diff --git a/gulpfile.js b/gulpfile.js index ccf3b9a..c8426bc 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,6 +6,7 @@ const uglify = require('gulp-uglify'); const cleanCSS = require('gulp-clean-css'); const babel = require('gulp-babel'); const notifier = require('node-notifier'); +const workboxBuild = require('workbox-build'); const minifyJsSrc = path.join(__dirname, './public/src/js/**/*.js'); const minifyCssSrc = path.join(__dirname, './public/src/css/**/*.css'); @@ -68,6 +69,44 @@ gulp.task('minify-css', () => { }); }); +gulp.task('service-worker', () => { + return workboxBuild.injectManifest({ + swSrc: path.join(__dirname, './public/src/js/sw.js'), + swDest: path.join(__dirname, './sw.js'), + globDirectory: path.join(__dirname, './'), + + // 注意:这里有个坑!后缀{js,css,xxx} 逗号之间不能加空格,否则识别有问题!!! + globPatterns: [ + 'public/**/*.{js,css,html,png,jpg,svg,ico,swf}', + 'node_modules/bootstrap/**/*.min.{js,css}', + 'node_modules/@fortawesome/**/*.{min.css,eot,ttf,woff,woff2}', + 'node_modules/blueimp-file-upload/**/*.{js,css}', + 'node_modules/sweetalert/dist/**/*.{js,css}', + 'node_modules/jquery/dist/**/*.{js,css}', + 'node_modules/metismenu/dist/**/*.{js,css}', + 'node_modules/lodash/**/*.min.js', + 'node_modules/fuelux/dist/**/*.{js,css}', + 'node_modules/simplemde/dist/**/*.{js,css}', + 'node_modules/js-md5/**/*.min.js', + 'node_modules/animate.css/**/*.min.css', + 'node_modules/lightbox2/**/*.min.{js,css}', + 'node_modules/scrollnav/**/*.min.js', + 'node_modules/jquery-qrcode/**/*.min.js', + 'node_modules/malihu-custom-scrollbar-plugin/**/*.{min.js,css,png}', + 'node_modules/jQuery-cycleText/**/*.min.js' + ], + globIgnores: ['**/*/test/**/*.js'], + modifyURLPrefix: { + 'public/favicon.ico': '/favicon.ico', + 'public/': '/static/', + 'node_modules/': '/nodeModules/' + } + }).then(({ count, size, warnings }) => { + warnings.forEach(console.warn); + console.log(`${count} files will be precached, totaling ${size} bytes.`); + }); +}); + /** * 监听资源文件改动并自动执行任务 */ diff --git a/package-lock.json b/package-lock.json index 345347a..02f8be3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -718,6 +718,23 @@ "semver": "5.7.0" } }, + "@babel/runtime": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", + "dev": true, + "requires": { + "regenerator-runtime": "0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", + "dev": true + } + } + }, "@babel/template": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", @@ -787,6 +804,38 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.8.1.tgz", "integrity": "sha512-GJtx6e55qLEOy2gPOsok2lohjpdWNGrYGtQx0FFT/++K4SYx+Z8LlPHdQBaFzKEwH5IbBB4fNgb//uyZjgYXoA==" }, + "@hapi/address": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz", + "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==", + "dev": true + }, + "@hapi/hoek": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", + "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "dev": true + }, + "@hapi/joi": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.0.3.tgz", + "integrity": "sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig==", + "dev": true, + "requires": { + "@hapi/address": "2.0.0", + "@hapi/hoek": "6.2.4", + "@hapi/topo": "3.1.0" + } + }, + "@hapi/topo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.0.tgz", + "integrity": "sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww==", + "dev": true, + "requires": { + "@hapi/hoek": "6.2.4" + } + }, "@types/babel-types": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.6.tgz", @@ -1199,6 +1248,31 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "dev": true, + "requires": { + "babylon": "6.18.0" + } + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -1824,6 +1898,12 @@ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -3335,6 +3415,12 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" }, + "get-own-enumerable-property-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -3635,7 +3721,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -4766,6 +4852,12 @@ "has": "1.0.3" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -6267,6 +6359,12 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, + "pretty-bytes": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.2.0.tgz", + "integrity": "sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w==", + "dev": true + }, "pretty-hrtime": { "version": "1.0.3", "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -7529,6 +7627,17 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "3.0.0", + "is-obj": "1.0.1", + "is-regexp": "1.0.0" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -7547,6 +7656,16 @@ "is-utf8": "0.2.1" } }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "dev": true, + "requires": { + "babel-extract-comments": "1.0.0", + "babel-plugin-transform-object-rest-spread": "6.26.0" + } + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -8482,6 +8601,205 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, + "workbox-background-sync": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", + "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-broadcast-update": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", + "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-build": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", + "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "dev": true, + "requires": { + "@babel/runtime": "7.4.5", + "@hapi/joi": "15.0.3", + "common-tags": "1.8.0", + "fs-extra": "4.0.3", + "glob": "7.1.4", + "lodash.template": "4.4.0", + "pretty-bytes": "5.2.0", + "stringify-object": "3.3.0", + "strip-comments": "1.0.2", + "workbox-background-sync": "4.3.1", + "workbox-broadcast-update": "4.3.1", + "workbox-cacheable-response": "4.3.1", + "workbox-core": "4.3.1", + "workbox-expiration": "4.3.1", + "workbox-google-analytics": "4.3.1", + "workbox-navigation-preload": "4.3.1", + "workbox-precaching": "4.3.1", + "workbox-range-requests": "4.3.1", + "workbox-routing": "4.3.1", + "workbox-strategies": "4.3.1", + "workbox-streams": "4.3.1", + "workbox-sw": "4.3.1", + "workbox-window": "4.3.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "3.0.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", + "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", + "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==", + "dev": true + }, + "workbox-expiration": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", + "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-google-analytics": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", + "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "dev": true, + "requires": { + "workbox-background-sync": "4.3.1", + "workbox-core": "4.3.1", + "workbox-routing": "4.3.1", + "workbox-strategies": "4.3.1" + } + }, + "workbox-navigation-preload": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", + "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-precaching": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", + "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-range-requests": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", + "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-routing": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", + "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-strategies": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", + "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-streams": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", + "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, + "workbox-sw": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", + "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" + }, + "workbox-window": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", + "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "dev": true, + "requires": { + "workbox-core": "4.3.1" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index 94f4c08..fd4a9e0 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,8 @@ "sweetalert": "^1.1.3", "switchery": "git+https://github.com/abpetkov/switchery.git", "winston": "^2.4.3", - "winston-mongodb": "^2.0.10" + "winston-mongodb": "^2.0.10", + "workbox-sw": "^4.3.1" }, "devDependencies": { "@babel/core": "^7.1.6", @@ -62,6 +63,7 @@ "gulp-nodemon": "^2.4.1", "gulp-uglify": "^3.0.1", "node-notifier": "^5.3.0", - "pump": "^3.0.0" + "pump": "^3.0.0", + "workbox-build": "^4.3.1" } } diff --git a/public/src/css/home-loading.css b/public/src/css/home-loading.css index 63b0531..5bbb144 100644 --- a/public/src/css/home-loading.css +++ b/public/src/css/home-loading.css @@ -6,7 +6,7 @@ bottom: 0; width: 100%; height: 100%; - background: #fff; + background: #f3f3f4; z-index: 9999; } diff --git a/public/src/css/site.css b/public/src/css/site.css index f21253e..81fc355 100644 --- a/public/src/css/site.css +++ b/public/src/css/site.css @@ -14,6 +14,11 @@ html, body { body { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC","Helvetica Neue",STHeiti,"Microsoft Yahei",Tahoma,Simsun,sans-serif; font-size: 14px; + display: none; +} + +body.shown { + display: block; } body.mCustomScrollbar .mCSB_scrollTools .mCSB_draggerContainer { diff --git a/public/src/js/index.js b/public/src/js/index.js index d7a1b6c..14b148c 100644 --- a/public/src/js/index.js +++ b/public/src/js/index.js @@ -1,6 +1,4 @@ -var home_loading_timeout = 2000; -var isLoading = false; -var timeout = 1000; +var timeout = 1000; var contentTimeout = 1500; var begin = new Date(); var contentBegin = new Date(); @@ -30,7 +28,6 @@ $(function () { $(this).remove(); begin = new Date(); $("#load-list").show(); - isLoading = true; $("#PageIndex").val(parseInt($("#PageIndex").val()) + 1); requestData(); } @@ -224,7 +221,7 @@ function addPage(index, data) { if (value.Source == "1") { itemHtml = "
0 ? "" : "animated fadeIn") + "\">" + + "\" class=\"blog-item animated fadeIn" + "\">" + "

" + " " + "
"; } else { - itemHtml = "
0 ? "" : "animated fadeIn") + "\" uid=\"" + value.Alias + "\">

" + value.Title + "

" + "" + value.CateName + "" + " " + value.PublishDate + "

" + encodeHtml(value.Summary) + "

"; } $("#page" + index).append(itemHtml); @@ -291,21 +288,6 @@ function addPage(index, data) { $(".list-wrap ol").append("
  • "); $("#page" + index).append("
    暂无数据
    "); } - isLoading = false; - if ($(".home-loading").length > 0) { - var home_loading_end = new Date(); - $("[data-toggle='tooltip']").tooltip("hide"); - if (home_loading_end - home_loading_begin > home_loading_timeout) { - $(".home-loading").remove(); - document.body.style.overflow = "auto"; - } else { - var home_loading_timespan = home_loading_timeout - (home_loading_end - home_loading_begin); - setTimeout(function () { - $(".home-loading").remove(); - document.body.style.overflow = "auto"; - }, home_loading_timespan); - } - } } function encodeHtml(s) { diff --git a/public/src/js/prehandler.js b/public/src/js/prehandler.js new file mode 100644 index 0000000..0e8e0c9 --- /dev/null +++ b/public/src/js/prehandler.js @@ -0,0 +1,37 @@ +if ('serviceWorker' in navigator) { + let newWorker; + const home_loading_timeout = 2000; + const home_loading_begin = new Date(); + + navigator.serviceWorker.register('/sw.js').then(reg => { + // 不论是否已经安装sw,都会进到这里,所以在此处显示body + document.body.classList.add('shown'); + reg.addEventListener('updatefound', () => { + // 显示 loading 动画 + document.body.style.overflow = 'hidden'; + document.querySelector('#home-loading').style.display = 'block'; + newWorker = reg.installing; + newWorker.addEventListener('statechange', () => { + switch (newWorker.state) { + case 'installed': + const home_loading_end = new Date(); + if (home_loading_end - home_loading_begin > home_loading_timeout) { + // 隐藏 loading 动画 + document.querySelector('#home-loading').style.display = 'none'; + document.body.style.overflow = 'auto'; + } else { + var home_loading_timespan = home_loading_timeout - (home_loading_end - home_loading_begin); + setTimeout(function () { + // 隐藏 loading 动画 + document.querySelector('#home-loading').style.display = 'none'; + document.body.style.overflow = 'auto'; + }, home_loading_timespan); + } + break; + } + }); + }); + }); +} else { + document.body.classList.add('shown'); +} diff --git a/public/src/js/sw.js b/public/src/js/sw.js new file mode 100644 index 0000000..19d2d9e --- /dev/null +++ b/public/src/js/sw.js @@ -0,0 +1,89 @@ +/* + * Service Worker + * 如果要修改,请修改 public/src/js/sw.js 文件,根目录下的 sw 文件是自动生成的! + */ +importScripts('/nodeModules/workbox-sw/build/workbox-sw.js'); +if (workbox) { + workbox.setConfig({ + // 设置本地模块路径,否则默认会走谷歌CDN + modulePathCb: moduleName => { + return `/nodeModules/${moduleName}/build/${moduleName}.prod.js`; + } + }); + + // 预缓存资源列表,需要自动生成 + workbox.precaching.precacheAndRoute([]); + + /** + * 第三方CDN资源,采用 StaleWhileRevalidate 策略 + * 策略:当请求的路由有对应的 Cache 缓存结果就直接返回, + * 在返回 Cache 缓存结果的同时会在后台发起网络请求拿到请求结果并更新 Cache 缓存, + * 如果本来就没有 Cache 缓存的话,直接就发起网络请求并返回结果,这对用户来说是一种非常安全的策略 + */ + workbox.routing.registerRoute( + 'https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js', + new workbox.strategies.StaleWhileRevalidate() + ); + + workbox.routing.registerRoute( + 'https://cdn.bootcss.com/highlight.js/9.12.0/styles/github.min.css', + new workbox.strategies.StaleWhileRevalidate() + ); + + workbox.routing.registerRoute( + 'http://v3.jiathis.com/code/jia.js', + new workbox.strategies.StaleWhileRevalidate() + ); + + workbox.routing.registerRoute( + 'https://hm.baidu.com/hm.js', + new workbox.strategies.StaleWhileRevalidate() + ); + + /** + * 本地资源,采用 CacheFirst 策略 + * 策略:当匹配到请求之后直接从 Cache 缓存中取得结果, + * 如果 Cache 缓存中没有结果,才会发起网络请求, + * 拿到网络请求结果并将结果更新至 Cache 缓存,并将结果返回给客户端 + */ + workbox.routing.registerRoute( + new RegExp('.+\.(?:js|css|png|jpg|jpeg|svg|ico|swf|woff|woff2|eot|ttf")$'), + new workbox.strategies.CacheFirst() + ); + + /** + * 页面,采用 NetworkFirst 策略 + * 策略:优先尝试拿到网络请求的返回结果, + * 如果拿到网络请求的结果,就将结果返回给客户端并且写入 Cache 缓存, + * 如果网络请求失败,那最后被缓存的 Cache 缓存结果就会被返回到客户端 + */ + workbox.routing.registerRoute( + function (context) { + var origin = self.location.origin; + var url = context.url.href; + + // 首页 + if (url === origin + '/') { + return true; + } + + // 博客及文章详情页 + if (url.indexOf(origin + '/blog') === 0) { + return true; + } + + // 留言 + if (url === origin + '/guestbook') { + return true; + } + + // 关于 + if (url === origin + '/about') { + return true; + } + + return false; + }, + new workbox.strategies.NetworkFirst() + ); +} diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..d232fb8 --- /dev/null +++ b/sw.js @@ -0,0 +1,3470 @@ +/* + * Service Worker + * 如果要修改,请修改 public/src/js/sw.js 文件,根目录下的 sw 文件是自动生成的! + */ +importScripts('/nodeModules/workbox-sw/build/workbox-sw.js'); +if (workbox) { + workbox.setConfig({ + // 设置本地模块路径,否则默认会走谷歌CDN + modulePathCb: moduleName => { + return `/nodeModules/${moduleName}/build/${moduleName}.prod.js`; + } + }); + + // 预缓存资源列表,需要自动生成 + workbox.precaching.precacheAndRoute([ + { + "url": "/static/dist/css/account.css", + "revision": "aa23ca80b739e9b79c4bd044af9499d7" + }, + { + "url": "/static/dist/css/admin.css", + "revision": "055dc6c46644058ad5c3e36a47ccee28" + }, + { + "url": "/static/dist/css/animate-custom.css", + "revision": "d2ee2fe9634ec2d2115c949fc4201364" + }, + { + "url": "/static/dist/css/bootstrap-addon.css", + "revision": "98912f397c55aad32678fc7dc1860544" + }, + { + "url": "/static/dist/css/dark_theme_code.css", + "revision": "bb33509d793fde7cf6ea5431e410740e" + }, + { + "url": "/static/dist/css/error.css", + "revision": "fd75f1ea9b0ed5f666182d8fabec52ca" + }, + { + "url": "/static/dist/css/github-markdown.css", + "revision": "327040a7d779e93642c3dd98abf7dba5" + }, + { + "url": "/static/dist/css/home-loading.css", + "revision": "729adeb18d22ec3dc7dcd370df1ec3c1" + }, + { + "url": "/static/dist/css/icon-font.css", + "revision": "e0ffda7bd1f1d55105a62b8f6260d448" + }, + { + "url": "/static/dist/css/monokai-sublime.css", + "revision": "b4787837acf01460e08a4d14b0db08ac" + }, + { + "url": "/static/dist/css/posts_style_custom.css", + "revision": "c1873b2be213829f17c7869ba875c797" + }, + { + "url": "/static/dist/css/selectlist.css", + "revision": "a6fd9acad9a4668112952fe3f6749edd" + }, + { + "url": "/static/dist/css/share.css", + "revision": "c1322445c891ab76df414737e84598de" + }, + { + "url": "/static/dist/css/site.css", + "revision": "4203ca4868780a56950b9d22c9f89a98" + }, + { + "url": "/static/dist/js/about.js", + "revision": "cdc773903a708003e57abc389aedcf12" + }, + { + "url": "/static/dist/js/aboutmanage.js", + "revision": "00c866b42d0300fa8f2a16c5d4056a9a" + }, + { + "url": "/static/dist/js/account.js", + "revision": "e2cdab522742840e4ef83d6013f5e946" + }, + { + "url": "/static/dist/js/admin.js", + "revision": "6e88ab7fac1cc2397b0db29f3c19c102" + }, + { + "url": "/static/dist/js/article.js", + "revision": "79aaf4d140a17b5f7029543057c57c58" + }, + { + "url": "/static/dist/js/articlemanage.js", + "revision": "dac35dc0df4b608416a398d9800b72c1" + }, + { + "url": "/static/dist/js/cachemanage.js", + "revision": "f1270de01feb5a0ad425705014e55d79" + }, + { + "url": "/static/dist/js/category.js", + "revision": "e5eec0350406024764ab4a8d741851ac" + }, + { + "url": "/static/dist/js/categorymanage.js", + "revision": "35b7a8fde8e24d0dce35e6dfd652dd19" + }, + { + "url": "/static/dist/js/dateFormat.js", + "revision": "2b3c2406d8a2346aec9bc655a4b85690" + }, + { + "url": "/static/dist/js/editarticle.js", + "revision": "b3d6132bbb27962b98e374e0e38b9d56" + }, + { + "url": "/static/dist/js/exception.js", + "revision": "57bc925245a5a3102a72b3762a277bae" + }, + { + "url": "/static/dist/js/guestbook.js", + "revision": "c00f0ecf07388713abb4d9b3baf41f68" + }, + { + "url": "/static/dist/js/highlight_line_number.js", + "revision": "38197c0c0f1499e19e5dd3b1c1c84e86" + }, + { + "url": "/static/dist/js/index.js", + "revision": "21ba95e67781501d4058b78922e83212" + }, + { + "url": "/static/dist/js/newarticle.js", + "revision": "09a14fe702a49fa327e839bad1409f40" + }, + { + "url": "/static/dist/js/selectlist.js", + "revision": "c93bd4f0f1b30dc44235e5c16864ce0c" + }, + { + "url": "/static/dist/js/settings.js", + "revision": "51b62f705867412129e1f15c6f9ddbbb" + }, + { + "url": "/static/dist/js/top.js", + "revision": "fbbdcfceccf821b4d092005b30a5b74f" + }, + { + "url": "/favicon.ico", + "revision": "bcbc257b2ed07389e6402f04f3790de3" + }, + { + "url": "/static/images/code-bk.png", + "revision": "012acbe788ee429da8d7d8d619455fc8" + }, + { + "url": "/static/images/ErrorBack.jpg", + "revision": "656655008a3546310107171c727d1e50" + }, + { + "url": "/static/images/filterBar.png", + "revision": "f9c64669285b23c2fa712208cd3ed6d5" + }, + { + "url": "/static/images/header-profile.png", + "revision": "2a634a94d5b175c41a71fac233a52f53" + }, + { + "url": "/static/images/preview1.png", + "revision": "621700a2a57bbe582a936990810223fa" + }, + { + "url": "/static/images/preview2.png", + "revision": "e668889e93d0193946e6bc163a1edeb2" + }, + { + "url": "/static/images/s1.jpg", + "revision": "ffaae6281cd7adfd3768b4318e8383c5" + }, + { + "url": "/static/images/s2.jpg", + "revision": "597fbd0a7bc16307d75c8065ca7589b6" + }, + { + "url": "/static/images/s3.jpg", + "revision": "a17310883c207097ba42a32154dc205b" + }, + { + "url": "/static/images/youlunhb.jpg", + "revision": "4143eb0f020c86bcd1457c1943bd1d3c" + }, + { + "url": "/static/images/zhr.jpg", + "revision": "cc21e17dd614e359b6223f0dea7d482c" + }, + { + "url": "/static/images/全部分类.svg", + "revision": "efcbb3a3a0f41a483e5ab440b57878a2" + }, + { + "url": "/static/images/未分类.svg", + "revision": "bf438f5e068df9a578f8e73cdadf9370" + }, + { + "url": "/static/libs/bootstrap-table/dist/bootstrap-table-locale-all.js", + "revision": "8d5441603a8f60d3f1431289970b74ae" + }, + { + "url": "/static/libs/bootstrap-table/dist/bootstrap-table-locale-all.min.js", + "revision": "6bd38224283b5bc7f4598b40efb3eb9f" + }, + { + "url": "/static/libs/bootstrap-table/dist/bootstrap-table.css", + "revision": "42cab01f7f35b69ca36e252cd935af85" + }, + { + "url": "/static/libs/bootstrap-table/dist/bootstrap-table.js", + "revision": "227f70c9133176979d1e28beb96270cd" + }, + { + "url": "/static/libs/bootstrap-table/dist/bootstrap-table.min.css", + "revision": "c45ed1e9b43d738b6fad917f1fc76ce2" + }, + { + "url": "/static/libs/bootstrap-table/dist/bootstrap-table.min.js", + "revision": "8d13863fc13f06ba777f9817eab70ab5" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js", + "revision": "6d06b83243a74ea85d9ed121e0ec901d" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/accent-neutralise/bootstrap-table-accent-neutralise.min.js", + "revision": "51e97d12dd7a5ac33bd00d7b10f9e197" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/angular/bootstrap-table-angular.js", + "revision": "f3fdbbb637e4872c8f034ef0f1ff541e" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/angular/bootstrap-table-angular.min.js", + "revision": "4d8c294c81c7f14c6df7fb1948704910" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/cookie/bootstrap-table-cookie.js", + "revision": "4ce17661b584e1170af5f753f1990661" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/cookie/bootstrap-table-cookie.min.js", + "revision": "5bca4298bdd88570cd442b7bdca42f90" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/editable/bootstrap-table-editable.js", + "revision": "734dbd3e7ac174b39e85be73acf88032" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/editable/bootstrap-table-editable.min.js", + "revision": "17744764661936bca2811938c01d1605" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.js", + "revision": "859ea0f9b6bc99adc1ca0f4f3f0e0d95" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/export/bootstrap-table-export.min.js", + "revision": "89ec05b662fa7413d1c722620e196e91" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/filter-control/bootstrap-table-filter-control.js", + "revision": "e8745553f0415b603e3b4e2dbca438c7" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/filter-control/bootstrap-table-filter-control.min.js", + "revision": "64f10ec3e584ed8c77a37dc31f590df3" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/filter/bootstrap-table-filter.js", + "revision": "bc505fa2780c9d0b2476df0981a84baf" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/filter/bootstrap-table-filter.min.js", + "revision": "c481d793abb1c9f00007f9ff5ba50557" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/flat-json/bootstrap-table-flat-json.js", + "revision": "6e762a9b44a171e71695d0e67a148a2d" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/flat-json/bootstrap-table-flat-json.min.js", + "revision": "a74c5fcdc8bc39e11ba6fb2dabe100a9" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/group-by-v2/bootstrap-table-group-by.css", + "revision": "ad8e50e4f2735cce3cce4f6d23fee47b" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/group-by-v2/bootstrap-table-group-by.js", + "revision": "0a552fb47e778ddb82edf86f2b21dc6d" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/group-by-v2/bootstrap-table-group-by.min.js", + "revision": "946f387641c9f7c95e8811efe1e08497" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/group-by/bootstrap-table-group-by.css", + "revision": "51bb99d3e39def05e2e48d8463ccfd34" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/group-by/bootstrap-table-group-by.js", + "revision": "4b1e8cc357c5658ce74cc0a07547e65e" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/group-by/bootstrap-table-group-by.min.js", + "revision": "6f1c6e20ec4ecb18552da2a0fceb8804" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/key-events/bootstrap-table-key-events.js", + "revision": "2b60346b125f15a827f7d0be0bc530b7" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/key-events/bootstrap-table-key-events.min.js", + "revision": "1284aaa8cfd42cb5b844b3d660afc927" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile.js", + "revision": "258b3770ad6b3cc1a3b9d77bcd6b2470" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile.min.js", + "revision": "cde9a3ac639b6fdedd90cbf4748dc0e1" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/multiple-search/bootstrap-table-multiple-search.js", + "revision": "0c7697213072698641798b481d480714" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/multiple-search/bootstrap-table-multiple-search.min.js", + "revision": "68f01d0c34b3ae8ebb8572d54df51e1c" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js", + "revision": "ec386a329d5cd7c39677192b61fb7b1a" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js", + "revision": "ef144ef027dfa106d3f37f0562842b35" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/natural-sorting/bootstrap-table-natural-sorting.js", + "revision": "c71431e5248f80d3a3fd4726a12b85df" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js", + "revision": "527f127ad4ac4d3389244bf209d47af3" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/reorder-columns/bootstrap-table-reorder-columns.js", + "revision": "0e537d484b2a8ab11990e14a27518179" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js", + "revision": "0af70cadd2b11f483942191685daaefa" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/reorder-rows/bootstrap-table-reorder-rows.css", + "revision": "8e7bfc5c9662ecb96c85ca3d66cce446" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/reorder-rows/bootstrap-table-reorder-rows.js", + "revision": "1f488fa31b851137d5ad4d400b6f9b17" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js", + "revision": "44c7ed0877344c9e40bf0fd093f3418c" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/resizable/bootstrap-table-resizable.js", + "revision": "107794319ba0aca60b20a5033aac0e78" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/resizable/bootstrap-table-resizable.min.js", + "revision": "97bf9a709ebc1e05066f4981379e199c" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.css", + "revision": "120c3b82d69957c3ef26c9c040ae7909" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.js", + "revision": "1930a042b88e3a036285e9c61873ff97" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.min.js", + "revision": "12efe0ca7faf732426e7b30bd6b74d99" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/toolbar/bootstrap-table-toolbar.js", + "revision": "03e93b845d194472f07aef753ae98bd9" + }, + { + "url": "/static/libs/bootstrap-table/dist/extensions/toolbar/bootstrap-table-toolbar.min.js", + "revision": "10575344a21b678a1449f8adbf6db492" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-af-ZA.js", + "revision": "3eb96ec83d4d0a38f5a7e45e36092e59" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-af-ZA.min.js", + "revision": "0c0ced43a53641f8b12ac6ce039cd59e" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ar-SA.js", + "revision": "5f62ef57c34d6ad6df7cd28e9e8eebaa" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ar-SA.min.js", + "revision": "92a1d5faa1356f78bf7f9f158acb7545" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ca-ES.js", + "revision": "d028a37f54f4e6bb30346a93f8297e33" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ca-ES.min.js", + "revision": "52ce4e4ac5b62ef540ea22b3222c8a7d" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-cs-CZ.js", + "revision": "de92b69dac98714d5ef67675b8b110c0" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-cs-CZ.min.js", + "revision": "c091b9caa2268e605c84ee7f6e662b3a" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-da-DK.js", + "revision": "3b2914c12ed448117197bfc5c4d43618" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-da-DK.min.js", + "revision": "e1dc4622be6370c7d2360a285affc635" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-de-DE.js", + "revision": "eaf888957c2458a1a0828561d84766fe" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-de-DE.min.js", + "revision": "8ff6cc79c8e9e0d2bd862a34d42aae7a" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-el-GR.js", + "revision": "f6087add6ac13ad850382a2f6d047c76" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-el-GR.min.js", + "revision": "98763cc5e703d56f403fc6f2df09d889" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-en-US.js", + "revision": "505fa7018585f70156d6e3a7e9942ab3" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-en-US.min.js", + "revision": "474ef129ab2eb242268873ae9a5f4967" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-AR.js", + "revision": "ffd33f5bc3dfac77ed9e8647ae322c95" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-AR.min.js", + "revision": "d5c53ea7e05f6e71e536e153f00d01d6" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-CR.js", + "revision": "f3901262aa79c691a4fad92a524dfb0b" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-CR.min.js", + "revision": "aff578af8206f6bbb578453a1511e6ca" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-ES.js", + "revision": "e8e494efdae6a10fb06a2f00ac4b677c" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-ES.min.js", + "revision": "03177b30f211a02c8b5af796ca319bd2" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-MX.js", + "revision": "5bc13ca72ea6a6dac921e759be05f74b" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-MX.min.js", + "revision": "9ae9d5ecaa92e93ba1b7ffed73ceaac8" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-NI.js", + "revision": "289b25c4cc79eee1559515044d2b5dc8" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-NI.min.js", + "revision": "33e80ef8d0d30c54de20d06480d092d3" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-SP.js", + "revision": "45bacb96a90a88905cb2039cc9d9dfc5" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-es-SP.min.js", + "revision": "1fe3b93c0faa3e7031cd0387fc8253f2" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-et-EE.js", + "revision": "f452503c53ee704c7351323926f99691" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-et-EE.min.js", + "revision": "bb05c00b8a596661c7a25a031d4e8b0b" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-fa-IR.js", + "revision": "4d097711168310bf32831d5b7112b53a" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-fa-IR.min.js", + "revision": "d96b0b4ff293883a725356d781fd8cea" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-fr-BE.js", + "revision": "df156831286d325c4d6e9fad9f2b9fc9" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-fr-BE.min.js", + "revision": "e72ee8b23ea73a172608d822bab24bfa" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-fr-FR.js", + "revision": "36a550d4ddcf5f4ce95280b65c15632b" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-fr-FR.min.js", + "revision": "689053c3d6d9e4b0e43e4a4b9c84d54c" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-hr-HR.js", + "revision": "d70d9e3144b42847fb214aae05cf59be" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-hr-HR.min.js", + "revision": "2ddb1bc11817b3d4367ac837993cacb3" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-hu-HU.js", + "revision": "0990e960c5408f02df7bb7e71fc06ecf" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-hu-HU.min.js", + "revision": "283a7f14ea4079d003319aa78c05f29a" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-it-IT.js", + "revision": "090b0513bab5777901a2648e89b6acc5" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-it-IT.min.js", + "revision": "02542bbc6461f8de25f77371811c56a6" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ja-JP.js", + "revision": "eb4c2b7b095b4f8284f42b87e914c2d8" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ja-JP.min.js", + "revision": "7c7cbbe8abc17f4c4d652c15c974dd51" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ka-GE.js", + "revision": "aca8004fda58d9dd43f65ddf46aefcd4" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ka-GE.min.js", + "revision": "f2438d6ed9fae07a65ab67e40632b956" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ko-KR.js", + "revision": "06c8806c290d067867b3fe70ca99762f" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ko-KR.min.js", + "revision": "2d0e35dc44bba8fd15c9fb5b7b45f455" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ms-MY.js", + "revision": "035142d93a35cccf0fc3adcdd67a7101" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ms-MY.min.js", + "revision": "1434129b4a36e274d4a5e56517949706" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-nb-NO.js", + "revision": "9daa60bcf0aaee4a04006a65387ae2f9" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-nb-NO.min.js", + "revision": "f1f938ccca01de346cb74b2699925475" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-nl-NL.js", + "revision": "ff5f52852ef8b297e453027caedf320b" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-nl-NL.min.js", + "revision": "c7428f62dcf2581e4e11f7da5e53caf2" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-pl-PL.js", + "revision": "2d29ad2e9173652edf6251204c096008" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-pl-PL.min.js", + "revision": "e73efde20348981138ee35af245d4d6e" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-pt-BR.js", + "revision": "c1371f251532b9e0d869a330a43a09ba" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-pt-BR.min.js", + "revision": "0d24ad26d75a126694101377933123b0" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-pt-PT.js", + "revision": "8f045a06cb43c0b3e4f27c06fc7b3349" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-pt-PT.min.js", + "revision": "3d27fcf5fcd4faed1bb1a0529a166f1e" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ro-RO.js", + "revision": "bd465c6963a2bc76db6f2d953b396ad4" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ro-RO.min.js", + "revision": "56825a258987cfb64843a2e71faf31fe" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ru-RU.js", + "revision": "d85d40c0f544ff33c9fbfb0fbd8a94b1" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ru-RU.min.js", + "revision": "e99b617e0ce1b131de61f5b0bc5bc6c9" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-sk-SK.js", + "revision": "42c29d01449a3ef23387cc45c1f32e4c" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-sk-SK.min.js", + "revision": "b6f04d7ba93cf4f4a12066c44b1386a5" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-sv-SE.js", + "revision": "9a23b72ab30fe0907552218631cb4cf5" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-sv-SE.min.js", + "revision": "2371e10d029e991ca95d2d65b16201de" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-th-TH.js", + "revision": "696b309290d095027cb73820e40ae3de" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-th-TH.min.js", + "revision": "9d2a738613e8cfcb0d0aae4e23c8ad2a" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-tr-TR.js", + "revision": "650ba9a62fd274c9f68a2e7c73882a03" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-tr-TR.min.js", + "revision": "36cc6d49071ed3b3e40def2b0c127bd6" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-uk-UA.js", + "revision": "20fea79c2744b25df2a90c43ddb3824c" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-uk-UA.min.js", + "revision": "155930b6fa5de6ebeb7dd1a684dbe3ed" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ur-PK.js", + "revision": "4e6e995f2f336b132201c1dcf9e725ac" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-ur-PK.min.js", + "revision": "5f47f1ca141b564938b839433d368e51" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-vi-VN.js", + "revision": "fa1eed89c947c8fd356f9f06d6e9f86d" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-vi-VN.min.js", + "revision": "896c9b8879112c02be60926030106a47" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN.js", + "revision": "b388efdac08ca7f109fcb9c40b06f1ce" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-zh-CN.min.js", + "revision": "7f56d5682fb7a5131d8d7f58bbc17bbb" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-zh-TW.js", + "revision": "e73cfa912f0190be5ce680d031ffc5c3" + }, + { + "url": "/static/libs/bootstrap-table/dist/locale/bootstrap-table-zh-TW.min.js", + "revision": "3fcc7d3ddcc4fadbc85ed8ec1e62371a" + }, + { + "url": "/static/libs/bootstrap-table/Gruntfile.js", + "revision": "7cccf8d5d69d20b756b56b34d9e56889" + }, + { + "url": "/static/libs/bootstrap-table/index.html", + "revision": "0e98f21202e32f2534095dde0cd66b4d" + }, + { + "url": "/static/libs/bootstrap-table/src/bootstrap-table.css", + "revision": "42cab01f7f35b69ca36e252cd935af85" + }, + { + "url": "/static/libs/bootstrap-table/src/bootstrap-table.js", + "revision": "5b73f481538a119b6b68dc892964770f" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js", + "revision": "6d06b83243a74ea85d9ed121e0ec901d" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/angular/bootstrap-table-angular.js", + "revision": "f3fdbbb637e4872c8f034ef0f1ff541e" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/cookie/bootstrap-table-cookie.js", + "revision": "4ce17661b584e1170af5f753f1990661" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/editable/bootstrap-table-editable.js", + "revision": "734dbd3e7ac174b39e85be73acf88032" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/export/bootstrap-table-export.js", + "revision": "859ea0f9b6bc99adc1ca0f4f3f0e0d95" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/filter-control/bootstrap-table-filter-control.js", + "revision": "f7fb065c5cfd210fa0c212de80008e43" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/filter/bootstrap-table-filter.js", + "revision": "bc505fa2780c9d0b2476df0981a84baf" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/flat-json/bootstrap-table-flat-json.js", + "revision": "6e762a9b44a171e71695d0e67a148a2d" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/group-by-v2/bootstrap-table-group-by.css", + "revision": "ad8e50e4f2735cce3cce4f6d23fee47b" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/group-by-v2/bootstrap-table-group-by.js", + "revision": "0a552fb47e778ddb82edf86f2b21dc6d" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/group-by/bootstrap-table-group-by.css", + "revision": "51bb99d3e39def05e2e48d8463ccfd34" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/group-by/bootstrap-table-group-by.js", + "revision": "4b1e8cc357c5658ce74cc0a07547e65e" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/key-events/bootstrap-table-key-events.js", + "revision": "2b60346b125f15a827f7d0be0bc530b7" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/mobile/bootstrap-table-mobile.js", + "revision": "258b3770ad6b3cc1a3b9d77bcd6b2470" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/multiple-search/bootstrap-table-multiple-search.js", + "revision": "0c7697213072698641798b481d480714" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/multiple-sort/bootstrap-table-multiple-sort.js", + "revision": "ec386a329d5cd7c39677192b61fb7b1a" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/natural-sorting/bootstrap-table-natural-sorting.js", + "revision": "c71431e5248f80d3a3fd4726a12b85df" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/reorder-columns/bootstrap-table-reorder-columns.js", + "revision": "0e537d484b2a8ab11990e14a27518179" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/reorder-rows/bootstrap-table-reorder-rows.css", + "revision": "8e7bfc5c9662ecb96c85ca3d66cce446" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/reorder-rows/bootstrap-table-reorder-rows.js", + "revision": "1f488fa31b851137d5ad4d400b6f9b17" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/resizable/bootstrap-table-resizable.js", + "revision": "107794319ba0aca60b20a5033aac0e78" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/sticky-header/bootstrap-table-sticky-header.css", + "revision": "120c3b82d69957c3ef26c9c040ae7909" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/sticky-header/bootstrap-table-sticky-header.js", + "revision": "1930a042b88e3a036285e9c61873ff97" + }, + { + "url": "/static/libs/bootstrap-table/src/extensions/toolbar/bootstrap-table-toolbar.js", + "revision": "03e93b845d194472f07aef753ae98bd9" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-af-ZA.js", + "revision": "3eb96ec83d4d0a38f5a7e45e36092e59" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ar-SA.js", + "revision": "5f62ef57c34d6ad6df7cd28e9e8eebaa" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ca-ES.js", + "revision": "d028a37f54f4e6bb30346a93f8297e33" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-cs-CZ.js", + "revision": "de92b69dac98714d5ef67675b8b110c0" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-da-DK.js", + "revision": "3b2914c12ed448117197bfc5c4d43618" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-de-DE.js", + "revision": "eaf888957c2458a1a0828561d84766fe" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-el-GR.js", + "revision": "f6087add6ac13ad850382a2f6d047c76" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-en-US.js", + "revision": "505fa7018585f70156d6e3a7e9942ab3" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-es-AR.js", + "revision": "ffd33f5bc3dfac77ed9e8647ae322c95" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-es-CR.js", + "revision": "f3901262aa79c691a4fad92a524dfb0b" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-es-ES.js", + "revision": "e8e494efdae6a10fb06a2f00ac4b677c" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-es-MX.js", + "revision": "5bc13ca72ea6a6dac921e759be05f74b" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-es-NI.js", + "revision": "289b25c4cc79eee1559515044d2b5dc8" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-es-SP.js", + "revision": "45bacb96a90a88905cb2039cc9d9dfc5" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-et-EE.js", + "revision": "f452503c53ee704c7351323926f99691" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-fa-IR.js", + "revision": "4d097711168310bf32831d5b7112b53a" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-fr-BE.js", + "revision": "df156831286d325c4d6e9fad9f2b9fc9" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-fr-FR.js", + "revision": "36a550d4ddcf5f4ce95280b65c15632b" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-hr-HR.js", + "revision": "d70d9e3144b42847fb214aae05cf59be" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-hu-HU.js", + "revision": "0990e960c5408f02df7bb7e71fc06ecf" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-it-IT.js", + "revision": "090b0513bab5777901a2648e89b6acc5" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ja-JP.js", + "revision": "eb4c2b7b095b4f8284f42b87e914c2d8" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ka-GE.js", + "revision": "aca8004fda58d9dd43f65ddf46aefcd4" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ko-KR.js", + "revision": "06c8806c290d067867b3fe70ca99762f" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ms-MY.js", + "revision": "035142d93a35cccf0fc3adcdd67a7101" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-nb-NO.js", + "revision": "9daa60bcf0aaee4a04006a65387ae2f9" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-nl-NL.js", + "revision": "ff5f52852ef8b297e453027caedf320b" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-pl-PL.js", + "revision": "2d29ad2e9173652edf6251204c096008" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-pt-BR.js", + "revision": "c1371f251532b9e0d869a330a43a09ba" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-pt-PT.js", + "revision": "8f045a06cb43c0b3e4f27c06fc7b3349" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ro-RO.js", + "revision": "bd465c6963a2bc76db6f2d953b396ad4" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ru-RU.js", + "revision": "d85d40c0f544ff33c9fbfb0fbd8a94b1" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-sk-SK.js", + "revision": "42c29d01449a3ef23387cc45c1f32e4c" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-sv-SE.js", + "revision": "9a23b72ab30fe0907552218631cb4cf5" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-th-TH.js", + "revision": "696b309290d095027cb73820e40ae3de" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-tr-TR.js", + "revision": "650ba9a62fd274c9f68a2e7c73882a03" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-uk-UA.js", + "revision": "20fea79c2744b25df2a90c43ddb3824c" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-ur-PK.js", + "revision": "4e6e995f2f336b132201c1dcf9e725ac" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-vi-VN.js", + "revision": "fa1eed89c947c8fd356f9f06d6e9f86d" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-zh-CN.js", + "revision": "b388efdac08ca7f109fcb9c40b06f1ce" + }, + { + "url": "/static/libs/bootstrap-table/src/locale/bootstrap-table-zh-TW.js", + "revision": "e73cfa912f0190be5ce680d031ffc5c3" + }, + { + "url": "/static/libs/form.validation/demo/ajaxSubmit.html", + "revision": "971f4ff3039df3d1077fa8dcae938f0d" + }, + { + "url": "/static/libs/form.validation/demo/attribute.html", + "revision": "5ffdf45150166712ddffca84450c7a54" + }, + { + "url": "/static/libs/form.validation/demo/choice.html", + "revision": "742c2b441602340b1e9fd2076d0ba0de" + }, + { + "url": "/static/libs/form.validation/demo/collapse.html", + "revision": "741ae16ff2c898524340d7015eaf0865" + }, + { + "url": "/static/libs/form.validation/demo/container.html", + "revision": "88af1e121ef6be659f2e33f5d876ecf7" + }, + { + "url": "/static/libs/form.validation/demo/container2.html", + "revision": "2c01ef6735f23cdcd597f7e40beef026" + }, + { + "url": "/static/libs/form.validation/demo/container3.html", + "revision": "30c855060f03b54eebe01d40159314f2" + }, + { + "url": "/static/libs/form.validation/demo/container4.html", + "revision": "0f15e7c31a04bbbf09d51ea185ce93e4" + }, + { + "url": "/static/libs/form.validation/demo/date.html", + "revision": "32bf0c83f251f6c9bd03d611463e08e4" + }, + { + "url": "/static/libs/form.validation/demo/defaultMessage.html", + "revision": "69319a78ac22ff9c6d7745da68fbbb58" + }, + { + "url": "/static/libs/form.validation/demo/dynamic.html", + "revision": "32edf6b3ec1ecda96e99fd56620aace7" + }, + { + "url": "/static/libs/form.validation/demo/dynamic2.html", + "revision": "3a4975d4ccb1407fb30b6fcc565aa3f7" + }, + { + "url": "/static/libs/form.validation/demo/dynamic3.html", + "revision": "596e45a6d0abacbbc51a5df530b28e3c" + }, + { + "url": "/static/libs/form.validation/demo/dynamic4.html", + "revision": "a47ad28ce8286d166b2a84a562988457" + }, + { + "url": "/static/libs/form.validation/demo/enable.html", + "revision": "fa59ff138faf24eea10fce6461002711" + }, + { + "url": "/static/libs/form.validation/demo/enable2.html", + "revision": "1a9aef2004e3922961be4edbee9b5f02" + }, + { + "url": "/static/libs/form.validation/demo/event.html", + "revision": "fb1e8e665fc947524f7b8c6e2cd8737a" + }, + { + "url": "/static/libs/form.validation/demo/event2.html", + "revision": "8d64d49514f36cbb9eb17d89b8995d52" + }, + { + "url": "/static/libs/form.validation/demo/event3.html", + "revision": "725010face1dcc10ad9bb60df722ae2c" + }, + { + "url": "/static/libs/form.validation/demo/file.html", + "revision": "df4f8d2f9be8169be7145a46621b475a" + }, + { + "url": "/static/libs/form.validation/demo/foundation/horizontalForm.html", + "revision": "b766262ba86c74aeded2a1910f6cac20" + }, + { + "url": "/static/libs/form.validation/demo/foundation/horizontalFormTooltip.html", + "revision": "4d7f23bc5f8d274228525dbd20e45a88" + }, + { + "url": "/static/libs/form.validation/demo/html5.html", + "revision": "15720e60c863c54f692cf551251bf228" + }, + { + "url": "/static/libs/form.validation/demo/i18n.html", + "revision": "43279f09a078f85add530908c1ee4beb" + }, + { + "url": "/static/libs/form.validation/demo/icon.html", + "revision": "c4c52e2978da53c47cf61ef506463621" + }, + { + "url": "/static/libs/form.validation/demo/ignored.html", + "revision": "6d615a77bfd10ab7f7d3b974220e72fb" + }, + { + "url": "/static/libs/form.validation/demo/index.html", + "revision": "d42cd046433c96d4d771b8709e272999" + }, + { + "url": "/static/libs/form.validation/demo/invisible.html", + "revision": "04d4108aa904647c15f47ecbd42dc4b7" + }, + { + "url": "/static/libs/form.validation/demo/mailgun.html", + "revision": "caa31e274afac2497b80ea542669c327" + }, + { + "url": "/static/libs/form.validation/demo/message.html", + "revision": "451318f90dca78e6fbc8a1de98497747" + }, + { + "url": "/static/libs/form.validation/demo/multiple.html", + "revision": "3989482147899b8301c5b919e4d4e7b9" + }, + { + "url": "/static/libs/form.validation/demo/multipleAsOne.html", + "revision": "c357d7700d9510db38d33b0df83528ac" + }, + { + "url": "/static/libs/form.validation/demo/pure/horizontalForm.html", + "revision": "57e7c950e4950750f479644c98cad915" + }, + { + "url": "/static/libs/form.validation/demo/pure/stackedForm.html", + "revision": "5b0cad30de04edab7bf1ab2f29c952a1" + }, + { + "url": "/static/libs/form.validation/demo/remote.html", + "revision": "7769f62262042d61f89e774868ed5e64" + }, + { + "url": "/static/libs/form.validation/demo/reset.html", + "revision": "8135e1f30c5cf80f12860394f75625e1" + }, + { + "url": "/static/libs/form.validation/demo/row.html", + "revision": "d075ad121bb99dc9cd105bb163ec70a3" + }, + { + "url": "/static/libs/form.validation/demo/selector.html", + "revision": "df6f0d930c5b80d4f9dc857e06e41d8a" + }, + { + "url": "/static/libs/form.validation/demo/selector2.html", + "revision": "faeb5795c73a988fb72453d04a1630db" + }, + { + "url": "/static/libs/form.validation/demo/semantic/horizontalForm.html", + "revision": "e360f70deb919bcae66e443f46d07258" + }, + { + "url": "/static/libs/form.validation/demo/semantic/horizontalFormTooltip.html", + "revision": "ee43c7e733f8acaee27ef3eddecd0b7f" + }, + { + "url": "/static/libs/form.validation/demo/semantic/stackedForm.html", + "revision": "36dae0b317eefdfc2b702d3c009afa72" + }, + { + "url": "/static/libs/form.validation/demo/semantic/stackedFormTooltip.html", + "revision": "509eb8db3d3681ca05b1cd67f46640b2" + }, + { + "url": "/static/libs/form.validation/demo/specialName.html", + "revision": "76197eb95878b521b9c3cca619299cc8" + }, + { + "url": "/static/libs/form.validation/demo/submitHandler.html", + "revision": "4443514fdaac827651bff6cdc04c3e35" + }, + { + "url": "/static/libs/form.validation/demo/tab.html", + "revision": "b94e38035b9dab80eb6bc88dfafde8a6" + }, + { + "url": "/static/libs/form.validation/demo/tooltip.html", + "revision": "febe2f4b98ab45ee0ebfd339a95ff073" + }, + { + "url": "/static/libs/form.validation/demo/typehead.html", + "revision": "e66653edf1888b1cd832f299a3eedb18" + }, + { + "url": "/static/libs/form.validation/demo/uikit/horizontalForm.html", + "revision": "9fe25e852bd5051a75acad358495bb47" + }, + { + "url": "/static/libs/form.validation/demo/uikit/horizontalFormTooltip.html", + "revision": "c807a7ec3df765d00f6c6358a62c881a" + }, + { + "url": "/static/libs/form.validation/demo/uikit/stackedForm.html", + "revision": "05423ce00ff581d5033e4dc4b03f6461" + }, + { + "url": "/static/libs/form.validation/demo/uikit/stackedFormTooltip.html", + "revision": "f57dd7f0c16dfb64a1ce78239c7e6ff9" + }, + { + "url": "/static/libs/form.validation/demo/validators.html", + "revision": "2a3e0894d6677c66e8dbf6f1cc869742" + }, + { + "url": "/static/libs/form.validation/dist/css/formValidation.css", + "revision": "5c09da9398170597bbbaa3ed2ba3ac29" + }, + { + "url": "/static/libs/form.validation/dist/css/formValidation.min.css", + "revision": "a4bd6562016f8104983f0dc7cc7dc39a" + }, + { + "url": "/static/libs/form.validation/dist/js/formValidation.js", + "revision": "8a282aeba84efca1faf47500e572bfe2" + }, + { + "url": "/static/libs/form.validation/dist/js/formValidation.min.js", + "revision": "dd15ede84bd011eda8d3b7d61b3f747d" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/bootstrap.js", + "revision": "041f1f2b40a053b8ee5adcd12956e1ad" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/bootstrap.min.js", + "revision": "875783af28579679800f2fd0fe0a2e6c" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/foundation.js", + "revision": "9e9e6d97f8e9157e47a85f31ae6df5f7" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/foundation.min.js", + "revision": "8814274e06fbfd3498f0ca5250425a39" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/pure.js", + "revision": "5f7fd8fa39e503a231421d57c39482bf" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/pure.min.js", + "revision": "f68d4e74b12e7fac97bb963c83f27d96" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/semantic.js", + "revision": "24a258bf0dd6cf5d8443a5e2b56494d0" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/semantic.min.js", + "revision": "cacac83d797041ed631847e739872d2e" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/uikit.js", + "revision": "b09e6660d752c52c9c5f112dd843d120" + }, + { + "url": "/static/libs/form.validation/dist/js/framework/uikit.min.js", + "revision": "f125acb89bf155095fc40899ff72187f" + }, + { + "url": "/static/libs/form.validation/dist/js/language/ar_MA.js", + "revision": "3064107b788c05bb746ecf8a5adf3b93" + }, + { + "url": "/static/libs/form.validation/dist/js/language/be_FR.js", + "revision": "348e058e96bbc7232c95a79bed196eb2" + }, + { + "url": "/static/libs/form.validation/dist/js/language/be_NL.js", + "revision": "d40324bf38708ab09cb6ebc2e7a272f2" + }, + { + "url": "/static/libs/form.validation/dist/js/language/bg_BG.js", + "revision": "c929ce14273936819aecaba84bb3897c" + }, + { + "url": "/static/libs/form.validation/dist/js/language/ca_ES.js", + "revision": "cbc50743889b3d3b4f6e69ec6f413609" + }, + { + "url": "/static/libs/form.validation/dist/js/language/cs_CZ.js", + "revision": "26eba582cdd4523816c31b4ba9a75a7d" + }, + { + "url": "/static/libs/form.validation/dist/js/language/da_DK.js", + "revision": "9b61897e4f6f309e67acbbcb288667fd" + }, + { + "url": "/static/libs/form.validation/dist/js/language/de_DE.js", + "revision": "5ad3e8a25721afe58e4f08a27976203c" + }, + { + "url": "/static/libs/form.validation/dist/js/language/en_US.js", + "revision": "751945e3954394db64f67bb96e058ecf" + }, + { + "url": "/static/libs/form.validation/dist/js/language/es_CL.js", + "revision": "a28abdda27fc3c6b1ffeddb3ef02ba7d" + }, + { + "url": "/static/libs/form.validation/dist/js/language/es_ES.js", + "revision": "244407f960ea807682dbca505fd57805" + }, + { + "url": "/static/libs/form.validation/dist/js/language/eu_ES.js", + "revision": "effaceff0878a6b6199ec1e05ed1a73d" + }, + { + "url": "/static/libs/form.validation/dist/js/language/fa_IR.js", + "revision": "4c27dba6495991e50b6f40b951ee20ca" + }, + { + "url": "/static/libs/form.validation/dist/js/language/fi_FI.js", + "revision": "2841f311121c5a83f9b4aba7b0b28ded" + }, + { + "url": "/static/libs/form.validation/dist/js/language/fr_FR.js", + "revision": "62a7704d36e9277b6fd896238ddef025" + }, + { + "url": "/static/libs/form.validation/dist/js/language/gr_EL.js", + "revision": "d2026fea42ecf80e6541c75e20b98862" + }, + { + "url": "/static/libs/form.validation/dist/js/language/he_IL.js", + "revision": "eb1e16ea4e83d4d7318b8508ae0e5d81" + }, + { + "url": "/static/libs/form.validation/dist/js/language/hi_IN.js", + "revision": "0717dea7fc59a977974565e7c39e42c0" + }, + { + "url": "/static/libs/form.validation/dist/js/language/hu_HU.js", + "revision": "5a5a35cb5d4e10a98f038ad093030c8e" + }, + { + "url": "/static/libs/form.validation/dist/js/language/id_ID.js", + "revision": "f826f5091827bcf5d6fcb92e8560ac05" + }, + { + "url": "/static/libs/form.validation/dist/js/language/it_IT.js", + "revision": "c34f67c4d2a482e64cfd41607e4e3266" + }, + { + "url": "/static/libs/form.validation/dist/js/language/ja_JP.js", + "revision": "57474f430dcbfe31845a4b0f0b77baf7" + }, + { + "url": "/static/libs/form.validation/dist/js/language/nl_NL.js", + "revision": "88a59b54b58ff222378013e19a65df3d" + }, + { + "url": "/static/libs/form.validation/dist/js/language/no_NO.js", + "revision": "da431656e025f781fd42e5df506115cc" + }, + { + "url": "/static/libs/form.validation/dist/js/language/pl_PL.js", + "revision": "5cc8f080b4472e5cb97c5f3f07955a9c" + }, + { + "url": "/static/libs/form.validation/dist/js/language/pt_BR.js", + "revision": "1bf2c7182b86a7d498cb3e85fd530155" + }, + { + "url": "/static/libs/form.validation/dist/js/language/pt_PT.js", + "revision": "8fb14aa9762ed93159d6378fe3e5a4c5" + }, + { + "url": "/static/libs/form.validation/dist/js/language/ro_RO.js", + "revision": "d09abb90f5fb83d95dd0b88a397b2ee4" + }, + { + "url": "/static/libs/form.validation/dist/js/language/ru_RU.js", + "revision": "8d5ad80a1f544c013296b73373e5f4de" + }, + { + "url": "/static/libs/form.validation/dist/js/language/sk_SK.js", + "revision": "af300755313ad58c57775453e668a4ba" + }, + { + "url": "/static/libs/form.validation/dist/js/language/sq_AL.js", + "revision": "bf99809deafea045e62808e2ec520c68" + }, + { + "url": "/static/libs/form.validation/dist/js/language/sr_RS.js", + "revision": "0329c0ab540d1fcd6effc38b1b0508b9" + }, + { + "url": "/static/libs/form.validation/dist/js/language/sv_SE.js", + "revision": "0dbc6cab443036ef82b30bbf1c9fc581" + }, + { + "url": "/static/libs/form.validation/dist/js/language/th_TH.js", + "revision": "23a5c73d1b047973be14e07dc3149957" + }, + { + "url": "/static/libs/form.validation/dist/js/language/tr_TR.js", + "revision": "acb32058653e236a676f4c71882a2431" + }, + { + "url": "/static/libs/form.validation/dist/js/language/ua_UA.js", + "revision": "b42b48b91bbe6528742ca572829aa4fd" + }, + { + "url": "/static/libs/form.validation/dist/js/language/vi_VN.js", + "revision": "ad94ce299113d9a62a4368acc513d6a9" + }, + { + "url": "/static/libs/form.validation/dist/js/language/zh_CN.js", + "revision": "cd412401e34f56d0a0792a1148e2ba57" + }, + { + "url": "/static/libs/form.validation/dist/js/language/zh_TW.js", + "revision": "4712c79b181a3222c43547bb795976eb" + }, + { + "url": "/static/libs/form.validation/Gruntfile.js", + "revision": "abe74b28df075f10ed7520bcba179951" + }, + { + "url": "/static/libs/form.validation/src/css/formValidation.css", + "revision": "5c09da9398170597bbbaa3ed2ba3ac29" + }, + { + "url": "/static/libs/form.validation/src/js/base.js", + "revision": "d5ea47f1baec46c885263ec5cbc995ca" + }, + { + "url": "/static/libs/form.validation/src/js/framework/bootstrap.js", + "revision": "17accf83728e6a52e23d6df2d2396e53" + }, + { + "url": "/static/libs/form.validation/src/js/framework/foundation.js", + "revision": "c618a1aa50bbd5a83ea5835bbf07a40f" + }, + { + "url": "/static/libs/form.validation/src/js/framework/pure.js", + "revision": "2424e413f51b470b7286aeb44c96e80c" + }, + { + "url": "/static/libs/form.validation/src/js/framework/semantic.js", + "revision": "99d0baaf34a26a4b8e584956901f5b8d" + }, + { + "url": "/static/libs/form.validation/src/js/framework/uikit.js", + "revision": "51f607158a2056c02cdbd9fd129f00c9" + }, + { + "url": "/static/libs/form.validation/src/js/helper.js", + "revision": "deda697d7ad6fb33ba1c6b97516deaa6" + }, + { + "url": "/static/libs/form.validation/src/js/language/ar_MA.js", + "revision": "3064107b788c05bb746ecf8a5adf3b93" + }, + { + "url": "/static/libs/form.validation/src/js/language/be_FR.js", + "revision": "348e058e96bbc7232c95a79bed196eb2" + }, + { + "url": "/static/libs/form.validation/src/js/language/be_NL.js", + "revision": "d40324bf38708ab09cb6ebc2e7a272f2" + }, + { + "url": "/static/libs/form.validation/src/js/language/bg_BG.js", + "revision": "c929ce14273936819aecaba84bb3897c" + }, + { + "url": "/static/libs/form.validation/src/js/language/ca_ES.js", + "revision": "cbc50743889b3d3b4f6e69ec6f413609" + }, + { + "url": "/static/libs/form.validation/src/js/language/cs_CZ.js", + "revision": "26eba582cdd4523816c31b4ba9a75a7d" + }, + { + "url": "/static/libs/form.validation/src/js/language/da_DK.js", + "revision": "9b61897e4f6f309e67acbbcb288667fd" + }, + { + "url": "/static/libs/form.validation/src/js/language/de_DE.js", + "revision": "5ad3e8a25721afe58e4f08a27976203c" + }, + { + "url": "/static/libs/form.validation/src/js/language/en_US.js", + "revision": "751945e3954394db64f67bb96e058ecf" + }, + { + "url": "/static/libs/form.validation/src/js/language/es_CL.js", + "revision": "a28abdda27fc3c6b1ffeddb3ef02ba7d" + }, + { + "url": "/static/libs/form.validation/src/js/language/es_ES.js", + "revision": "244407f960ea807682dbca505fd57805" + }, + { + "url": "/static/libs/form.validation/src/js/language/eu_ES.js", + "revision": "effaceff0878a6b6199ec1e05ed1a73d" + }, + { + "url": "/static/libs/form.validation/src/js/language/fa_IR.js", + "revision": "4c27dba6495991e50b6f40b951ee20ca" + }, + { + "url": "/static/libs/form.validation/src/js/language/fi_FI.js", + "revision": "2841f311121c5a83f9b4aba7b0b28ded" + }, + { + "url": "/static/libs/form.validation/src/js/language/fr_FR.js", + "revision": "62a7704d36e9277b6fd896238ddef025" + }, + { + "url": "/static/libs/form.validation/src/js/language/gr_EL.js", + "revision": "d2026fea42ecf80e6541c75e20b98862" + }, + { + "url": "/static/libs/form.validation/src/js/language/he_IL.js", + "revision": "eb1e16ea4e83d4d7318b8508ae0e5d81" + }, + { + "url": "/static/libs/form.validation/src/js/language/hi_IN.js", + "revision": "0717dea7fc59a977974565e7c39e42c0" + }, + { + "url": "/static/libs/form.validation/src/js/language/hu_HU.js", + "revision": "5a5a35cb5d4e10a98f038ad093030c8e" + }, + { + "url": "/static/libs/form.validation/src/js/language/id_ID.js", + "revision": "f826f5091827bcf5d6fcb92e8560ac05" + }, + { + "url": "/static/libs/form.validation/src/js/language/it_IT.js", + "revision": "c34f67c4d2a482e64cfd41607e4e3266" + }, + { + "url": "/static/libs/form.validation/src/js/language/ja_JP.js", + "revision": "57474f430dcbfe31845a4b0f0b77baf7" + }, + { + "url": "/static/libs/form.validation/src/js/language/nl_NL.js", + "revision": "88a59b54b58ff222378013e19a65df3d" + }, + { + "url": "/static/libs/form.validation/src/js/language/no_NO.js", + "revision": "da431656e025f781fd42e5df506115cc" + }, + { + "url": "/static/libs/form.validation/src/js/language/pl_PL.js", + "revision": "5cc8f080b4472e5cb97c5f3f07955a9c" + }, + { + "url": "/static/libs/form.validation/src/js/language/pt_BR.js", + "revision": "1bf2c7182b86a7d498cb3e85fd530155" + }, + { + "url": "/static/libs/form.validation/src/js/language/pt_PT.js", + "revision": "8fb14aa9762ed93159d6378fe3e5a4c5" + }, + { + "url": "/static/libs/form.validation/src/js/language/ro_RO.js", + "revision": "d09abb90f5fb83d95dd0b88a397b2ee4" + }, + { + "url": "/static/libs/form.validation/src/js/language/ru_RU.js", + "revision": "8d5ad80a1f544c013296b73373e5f4de" + }, + { + "url": "/static/libs/form.validation/src/js/language/sk_SK.js", + "revision": "af300755313ad58c57775453e668a4ba" + }, + { + "url": "/static/libs/form.validation/src/js/language/sq_AL.js", + "revision": "bf99809deafea045e62808e2ec520c68" + }, + { + "url": "/static/libs/form.validation/src/js/language/sr_RS.js", + "revision": "0329c0ab540d1fcd6effc38b1b0508b9" + }, + { + "url": "/static/libs/form.validation/src/js/language/sv_SE.js", + "revision": "0dbc6cab443036ef82b30bbf1c9fc581" + }, + { + "url": "/static/libs/form.validation/src/js/language/th_TH.js", + "revision": "23a5c73d1b047973be14e07dc3149957" + }, + { + "url": "/static/libs/form.validation/src/js/language/tr_TR.js", + "revision": "acb32058653e236a676f4c71882a2431" + }, + { + "url": "/static/libs/form.validation/src/js/language/ua_UA.js", + "revision": "b42b48b91bbe6528742ca572829aa4fd" + }, + { + "url": "/static/libs/form.validation/src/js/language/vi_VN.js", + "revision": "ad94ce299113d9a62a4368acc513d6a9" + }, + { + "url": "/static/libs/form.validation/src/js/language/zh_CN.js", + "revision": "cd412401e34f56d0a0792a1148e2ba57" + }, + { + "url": "/static/libs/form.validation/src/js/language/zh_TW.js", + "revision": "4712c79b181a3222c43547bb795976eb" + }, + { + "url": "/static/libs/form.validation/src/js/validator/base64.js", + "revision": "6ad1bc511485649a6bd8f3606425368f" + }, + { + "url": "/static/libs/form.validation/src/js/validator/between.js", + "revision": "6685fd2346e3b8bebf7cfeb95f77d488" + }, + { + "url": "/static/libs/form.validation/src/js/validator/bic.js", + "revision": "0a15038128dc6aa6acd8abb68eead367" + }, + { + "url": "/static/libs/form.validation/src/js/validator/blank.js", + "revision": "9ccda887bfd3c88ccfa1888815376592" + }, + { + "url": "/static/libs/form.validation/src/js/validator/callback.js", + "revision": "e11d1ace4745626fcb6257453f9866c7" + }, + { + "url": "/static/libs/form.validation/src/js/validator/choice.js", + "revision": "1fd594f29f29ca73db9e78b87eec7489" + }, + { + "url": "/static/libs/form.validation/src/js/validator/color.js", + "revision": "4fb0e711c2f91240bbbe6e972f258623" + }, + { + "url": "/static/libs/form.validation/src/js/validator/creditCard.js", + "revision": "96fa2893be20bb414e1ace1c3ab36f07" + }, + { + "url": "/static/libs/form.validation/src/js/validator/cusip.js", + "revision": "94467886700756bf66150177cd9d8c16" + }, + { + "url": "/static/libs/form.validation/src/js/validator/cvv.js", + "revision": "1c58b84a35d4c03e4c5cdbbc2d5f0edb" + }, + { + "url": "/static/libs/form.validation/src/js/validator/date.js", + "revision": "b1a51b2ef5961a79c19f35262d6ff4d1" + }, + { + "url": "/static/libs/form.validation/src/js/validator/different.js", + "revision": "056275446d57d56fc7a42112a37c4b7a" + }, + { + "url": "/static/libs/form.validation/src/js/validator/digits.js", + "revision": "e2e72cbd7bc928cc33b490e93b197160" + }, + { + "url": "/static/libs/form.validation/src/js/validator/ean.js", + "revision": "8d91e2914c3f35885d2ef93e8c702734" + }, + { + "url": "/static/libs/form.validation/src/js/validator/ein.js", + "revision": "fe8bff85c56884d7093d39b3a25fa115" + }, + { + "url": "/static/libs/form.validation/src/js/validator/emailAddress.js", + "revision": "03968b8453cf828ea045d0ca345fba17" + }, + { + "url": "/static/libs/form.validation/src/js/validator/file.js", + "revision": "b4e993c400f71098c9878f6d2b5ce2a6" + }, + { + "url": "/static/libs/form.validation/src/js/validator/greaterThan.js", + "revision": "ab94b195d5977f80aa3fb1decf1527f6" + }, + { + "url": "/static/libs/form.validation/src/js/validator/grid.js", + "revision": "3061e1e7734c7f2cd6373a8ea06bafb6" + }, + { + "url": "/static/libs/form.validation/src/js/validator/hex.js", + "revision": "c1ee704c89921c675f25c0229062604d" + }, + { + "url": "/static/libs/form.validation/src/js/validator/iban.js", + "revision": "554fcd5ce2723b91aaba61085ee73f26" + }, + { + "url": "/static/libs/form.validation/src/js/validator/id.js", + "revision": "d7a954f0ad4f10dd530e0fa041c7e71b" + }, + { + "url": "/static/libs/form.validation/src/js/validator/identical.js", + "revision": "95a9e22c10cedc6b5c00578e989e8b1c" + }, + { + "url": "/static/libs/form.validation/src/js/validator/imei.js", + "revision": "4000d644e289c9a283cd6fc5ce0f19f7" + }, + { + "url": "/static/libs/form.validation/src/js/validator/imo.js", + "revision": "77371648001990f861592710696238c2" + }, + { + "url": "/static/libs/form.validation/src/js/validator/integer.js", + "revision": "43de35e51c0994cafdc711b9dc101a49" + }, + { + "url": "/static/libs/form.validation/src/js/validator/ip.js", + "revision": "4813181d973e98869e023988960b90bb" + }, + { + "url": "/static/libs/form.validation/src/js/validator/isbn.js", + "revision": "dbfe7516ca3533b53def8847c3835ab0" + }, + { + "url": "/static/libs/form.validation/src/js/validator/isin.js", + "revision": "11c0c4f93c2223edd4f8284472c1aa2f" + }, + { + "url": "/static/libs/form.validation/src/js/validator/ismn.js", + "revision": "1678c5d968a1236631852b2ba81fcade" + }, + { + "url": "/static/libs/form.validation/src/js/validator/issn.js", + "revision": "0f83dddb31d8297e1767c0d6ab9559b1" + }, + { + "url": "/static/libs/form.validation/src/js/validator/lessThan.js", + "revision": "f832a30592ecc5722c2ce908822f29f1" + }, + { + "url": "/static/libs/form.validation/src/js/validator/mac.js", + "revision": "d86d6526ef533a6320067521560fa76f" + }, + { + "url": "/static/libs/form.validation/src/js/validator/meid.js", + "revision": "9ebd9e8212b4c91fbd549eb19f9e30b9" + }, + { + "url": "/static/libs/form.validation/src/js/validator/notEmpty.js", + "revision": "08b692d44088468028da62083e909549" + }, + { + "url": "/static/libs/form.validation/src/js/validator/numeric.js", + "revision": "8a2e7d5b74be12bbd52213cf583e2f4f" + }, + { + "url": "/static/libs/form.validation/src/js/validator/phone.js", + "revision": "d6d6fba48f072c6154aa2ece02429c67" + }, + { + "url": "/static/libs/form.validation/src/js/validator/regexp.js", + "revision": "7b267629a112f3e3ec0b04e45f48dc58" + }, + { + "url": "/static/libs/form.validation/src/js/validator/remote.js", + "revision": "28ef78cb078910a10476b6777add54af" + }, + { + "url": "/static/libs/form.validation/src/js/validator/rtn.js", + "revision": "e3fcf9023c22426e453b32a3e33210fe" + }, + { + "url": "/static/libs/form.validation/src/js/validator/sedol.js", + "revision": "884d64a864f51e66a8c97744bf89f87e" + }, + { + "url": "/static/libs/form.validation/src/js/validator/siren.js", + "revision": "f0fa654a5eb991d6afd8e0fe162ab939" + }, + { + "url": "/static/libs/form.validation/src/js/validator/siret.js", + "revision": "2a36bad447fcc6f46b773b8c0d8a90dc" + }, + { + "url": "/static/libs/form.validation/src/js/validator/step.js", + "revision": "a885ed7f6e2c931e9a3faedad52f72f7" + }, + { + "url": "/static/libs/form.validation/src/js/validator/stringCase.js", + "revision": "3f8027c28dd4e514648c53a252b8bb0a" + }, + { + "url": "/static/libs/form.validation/src/js/validator/stringLength.js", + "revision": "d87a1fa9b8d7510df1f2271670e5969e" + }, + { + "url": "/static/libs/form.validation/src/js/validator/uri.js", + "revision": "046e37efdf802212e187ec98b2190ba0" + }, + { + "url": "/static/libs/form.validation/src/js/validator/uuid.js", + "revision": "e866ae2ee40fc688382c81e2e874a65f" + }, + { + "url": "/static/libs/form.validation/src/js/validator/vat.js", + "revision": "1b26f28eccc901636c1897984abe0a28" + }, + { + "url": "/static/libs/form.validation/src/js/validator/vin.js", + "revision": "613b2d48c4979fb01f11e12e6354ac92" + }, + { + "url": "/static/libs/form.validation/src/js/validator/zipCode.js", + "revision": "b7d4912f939570b9c9ad660db890d98c" + }, + { + "url": "/static/libs/form.validation/test/index.html", + "revision": "46b2a257d211c3bad345845b1b63cbd6" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/css/bootstrap-theme.css", + "revision": "8c6ad2433e82a311530e4ebe3aebf39f" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/css/bootstrap-theme.min.css", + "revision": "95eb835999f0c2f1f3218d46e6c30137" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/css/bootstrap.css", + "revision": "d2ab08de4855f3f73d2ecec6da794293" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/css/bootstrap.min.css", + "revision": "3ab3438f85ad9f9e27e1af1facf0a9c4" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg", + "revision": "ff423a4251cf2986555523dfe315c42b" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/js/bootstrap.js", + "revision": "3f0c5a5f186e8aaa48ab29b12a012ae3" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/js/bootstrap.min.js", + "revision": "2616d3564578d8f845813483352802a9" + }, + { + "url": "/static/libs/form.validation/vendor/bootstrap/js/npm.js", + "revision": "ccb7f3909e30b1eb8f65a24393c6e12b" + }, + { + "url": "/static/libs/form.validation/vendor/jasmine/boot.js", + "revision": "099aa4c2ddc88fbb646b8fd2020ce150" + }, + { + "url": "/static/libs/form.validation/vendor/jasmine/console.js", + "revision": "3f0a24d7ade30befe3aa61c318428ba7" + }, + { + "url": "/static/libs/form.validation/vendor/jasmine/jasmine_favicon.png", + "revision": "81fc051df8e496c484336e8f207c3063" + }, + { + "url": "/static/libs/form.validation/vendor/jasmine/jasmine-html.js", + "revision": "0378bd1a2f36fa27061888eb1a9db612" + }, + { + "url": "/static/libs/form.validation/vendor/jasmine/jasmine.css", + "revision": "a781f26fba0afc3a507d429deefe33d0" + }, + { + "url": "/static/libs/form.validation/vendor/jasmine/jasmine.js", + "revision": "87e228001332edbf133b75947c31568e" + }, + { + "url": "/static/libs/form.validation/vendor/jquery/jquery.min.js", + "revision": "5790ead7ad3ba27397aedfa3d263b867" + }, + { + "url": "/static/libs/supersized/core/core.html", + "revision": "af68b865c9d8a1374fdc2bfa577d1e75" + }, + { + "url": "/static/libs/supersized/core/css/supersized.core.css", + "revision": "36d136b7a91116e2f7c0129fcdad1067" + }, + { + "url": "/static/libs/supersized/core/img/bg-black.png", + "revision": "77982bd2c8ad9234b1e96bd47ffb6dd3" + }, + { + "url": "/static/libs/supersized/core/img/supersized-logo.png", + "revision": "57b441f46bd71b5f6b880a0d477b8e8d" + }, + { + "url": "/static/libs/supersized/core/js/supersized.core.3.2.1.js", + "revision": "10ccdd3d963937180c2f1c29ff06d377" + }, + { + "url": "/static/libs/supersized/core/js/supersized.core.3.2.1.min.js", + "revision": "2271f8f568a22d74f6b7d48d7a185ba6" + }, + { + "url": "/static/libs/supersized/core/random.html", + "revision": "75e9bac0ac5e563621af0e6b02ecde41" + }, + { + "url": "/static/libs/supersized/flickr/css/supersized.css", + "revision": "8c5519478f4c3221f8fd8801e227071e" + }, + { + "url": "/static/libs/supersized/flickr/flickr.html", + "revision": "b1ca643b4ad4f70823de5e2a5eb2ed9e" + }, + { + "url": "/static/libs/supersized/flickr/img/back_dull.png", + "revision": "400924fec5f313aa32612d44fddef9bc" + }, + { + "url": "/static/libs/supersized/flickr/img/back.png", + "revision": "d9c09243b114872beb71f61e4f28537b" + }, + { + "url": "/static/libs/supersized/flickr/img/buildinternet-logo.png", + "revision": "102e517067f9ae33b80111eb4ce14da4" + }, + { + "url": "/static/libs/supersized/flickr/img/forward_dull.png", + "revision": "1187c46e39d55fe06b409e2d1e7c73cc" + }, + { + "url": "/static/libs/supersized/flickr/img/forward.png", + "revision": "0a328c544c97fd4dc32e79cc777c5c08" + }, + { + "url": "/static/libs/supersized/flickr/img/nav-bg.png", + "revision": "6551079bc9262d6be0052ae1b54c15d7" + }, + { + "url": "/static/libs/supersized/flickr/img/pause_dull.png", + "revision": "05fdacafba0a10da39bce22c049402a0" + }, + { + "url": "/static/libs/supersized/flickr/img/pause.png", + "revision": "56c61a3a2c6806023bea05afaa7d9d7e" + }, + { + "url": "/static/libs/supersized/flickr/img/play_dull.png", + "revision": "56d024acac2489940dae93ea63738b0f" + }, + { + "url": "/static/libs/supersized/flickr/img/supersized-logo.png", + "revision": "57b441f46bd71b5f6b880a0d477b8e8d" + }, + { + "url": "/static/libs/supersized/flickr/js/supersized.flickr.1.1.2.js", + "revision": "07bf5a409cb11e7da2225f4a95e9a7c8" + }, + { + "url": "/static/libs/supersized/slideshow/css/supersized.css", + "revision": "6d49d37de152b8ebf185ea792a07b3c5" + }, + { + "url": "/static/libs/supersized/slideshow/demo.html", + "revision": "f1ac9c9ceb17a5774de089ce0ee341e7" + }, + { + "url": "/static/libs/supersized/slideshow/fade.html", + "revision": "631cc22638e5161d01997ff772b375c7" + }, + { + "url": "/static/libs/supersized/slideshow/img/back.png", + "revision": "d3a540cac4076752f1a401fe5ec475f9" + }, + { + "url": "/static/libs/supersized/slideshow/img/bg-black.png", + "revision": "77982bd2c8ad9234b1e96bd47ffb6dd3" + }, + { + "url": "/static/libs/supersized/slideshow/img/bg-hover.png", + "revision": "761a49ea91608ec53e17cd75cc4f1248" + }, + { + "url": "/static/libs/supersized/slideshow/img/button-tray-down.png", + "revision": "eef34fcfa68e4e4741d1afefba6c5e52" + }, + { + "url": "/static/libs/supersized/slideshow/img/button-tray-up.png", + "revision": "b0cba8a801d78f84b7ced0263fdb556b" + }, + { + "url": "/static/libs/supersized/slideshow/img/forward.png", + "revision": "8a8258f970c51064ce0bacb3c9a3eab2" + }, + { + "url": "/static/libs/supersized/slideshow/img/nav-bg.png", + "revision": "7bac5580f262a75539d9523a6cb4b4cf" + }, + { + "url": "/static/libs/supersized/slideshow/img/nav-dot.png", + "revision": "88ff53607f39435d05e43830e4b9c868" + }, + { + "url": "/static/libs/supersized/slideshow/img/pause.png", + "revision": "2b9432ad62bca7b6a913ea0e35bbdcbc" + }, + { + "url": "/static/libs/supersized/slideshow/img/play.png", + "revision": "357935b5ac3084a77814956e6d3cb1ee" + }, + { + "url": "/static/libs/supersized/slideshow/img/progress-back.png", + "revision": "b1f59906cf6357a9e9fdd8711fa7dda2" + }, + { + "url": "/static/libs/supersized/slideshow/img/progress-bar.png", + "revision": "3358a6a8a18a1d1bcc7f1e4c99504757" + }, + { + "url": "/static/libs/supersized/slideshow/img/supersized-logo.png", + "revision": "57b441f46bd71b5f6b880a0d477b8e8d" + }, + { + "url": "/static/libs/supersized/slideshow/img/thumb-back.png", + "revision": "15ad4207c4932efb7085edfe614feb43" + }, + { + "url": "/static/libs/supersized/slideshow/img/thumb-forward.png", + "revision": "e4d1f7cbe5fa7cb2c04fe4382ae0fd85" + }, + { + "url": "/static/libs/supersized/slideshow/js/jquery.easing.min.js", + "revision": "ec64dc8377266f617caf00ebc5067a14" + }, + { + "url": "/static/libs/supersized/slideshow/js/supersized.3.2.7.js", + "revision": "2052ccb76fb6a20ff06322e4df14a9dd" + }, + { + "url": "/static/libs/supersized/slideshow/js/supersized.3.2.7.min.js", + "revision": "4866e39cd6a51a5a844677a134bf5ff4" + }, + { + "url": "/static/libs/supersized/slideshow/slide.html", + "revision": "b8ddb25fb08f7977f14bf0bdf802c9a9" + }, + { + "url": "/static/libs/supersized/slideshow/theme/supersized.shutter.css", + "revision": "8e753ad3f6812de3fd50398fc4a63d38" + }, + { + "url": "/static/libs/supersized/slideshow/theme/supersized.shutter.js", + "revision": "ec029355be00b372ff008cc4af8fc663" + }, + { + "url": "/static/libs/supersized/slideshow/theme/supersized.shutter.min.js", + "revision": "3ad930a5ca222de836e6880c0fbcdae1" + }, + { + "url": "/static/libs/ueditor/dialogs/anchor/anchor.html", + "revision": "af1c340b564d269f44bf1c21b0da668e" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/attachment.css", + "revision": "f441eddcbed1be7c21c156aee673573a" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/attachment.html", + "revision": "ff96f00de90ce2a71397542315d47f3b" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/attachment.js", + "revision": "86167740382818831051c186b0e228c7" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/fileTypeImages/icon_default.png", + "revision": "2c861195d4fe149d298fb89f59fb59db" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/alignicon.png", + "revision": "aef70d0a71f4b1da729a92dafd4cf4a9" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/bg.png", + "revision": "ceea3f7e3d18fbefe125725c85a57aeb" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/file-icons.png", + "revision": "f43725a2e01286fd452243252df94999" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/icons.png", + "revision": "c9ceb83c0a247ae47f54c3e1d3cb4bac" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/image.png", + "revision": "6b00566e6a7a54df0b83fe8a1d8b9427" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/progress.png", + "revision": "46732e763f50c337fecabcc42150d842" + }, + { + "url": "/static/libs/ueditor/dialogs/attachment/images/success.png", + "revision": "b80425bbf53402d499d54c86ca365870" + }, + { + "url": "/static/libs/ueditor/dialogs/background/background.css", + "revision": "413a7304d5deb7cc5b3b455c87781691" + }, + { + "url": "/static/libs/ueditor/dialogs/background/background.html", + "revision": "daeebe7166c9bc860f75f8f82c2c6c2a" + }, + { + "url": "/static/libs/ueditor/dialogs/background/background.js", + "revision": "55b10df7fb588ab3303f9bf055398c29" + }, + { + "url": "/static/libs/ueditor/dialogs/background/images/bg.png", + "revision": "ceea3f7e3d18fbefe125725c85a57aeb" + }, + { + "url": "/static/libs/ueditor/dialogs/background/images/success.png", + "revision": "b80425bbf53402d499d54c86ca365870" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/chart.config.js", + "revision": "f5e0dcdab3797838440b7f2f1309924e" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/charts.css", + "revision": "b5f91ee526e77e69974806211f959c4a" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/charts.html", + "revision": "4ddbb0ad633d91264e355fa84f31c621" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/charts.js", + "revision": "250cab3fce4c33a85c6705128148aa10" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/images/charts0.png", + "revision": "c8c9cdb63b5c31aaa9d075e3d12d6772" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/images/charts1.png", + "revision": "4bebe6b730fe928031ee4f83594b300a" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/images/charts2.png", + "revision": "2042995205190212415b560e3a28ebad" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/images/charts3.png", + "revision": "fc1c24b56a589dcd17a6721c5d576f5b" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/images/charts4.png", + "revision": "43b400c4c8fbd5458d072fe177e633fd" + }, + { + "url": "/static/libs/ueditor/dialogs/charts/images/charts5.png", + "revision": "9d215c9480ab1ec3660513ad82a048b2" + }, + { + "url": "/static/libs/ueditor/dialogs/emotion/emotion.css", + "revision": "7444c75e2a105de6f384184a64238a23" + }, + { + "url": "/static/libs/ueditor/dialogs/emotion/emotion.html", + "revision": "adc661a420a5591b4427a487ae762263" + }, + { + "url": "/static/libs/ueditor/dialogs/emotion/emotion.js", + "revision": "8f213b23fe2203275b24a1832071e77c" + }, + { + "url": "/static/libs/ueditor/dialogs/emotion/images/neweditor-tab-bg.png", + "revision": "4869b022d6ba52d8c4312e9f40564efd" + }, + { + "url": "/static/libs/ueditor/dialogs/gmap/gmap.html", + "revision": "5a0112eabe7d7943e6dbf2dc5d5ab30f" + }, + { + "url": "/static/libs/ueditor/dialogs/help/help.css", + "revision": "b1e71b4ac7665ebf08c46ca1c296d3eb" + }, + { + "url": "/static/libs/ueditor/dialogs/help/help.html", + "revision": "5a33f6dca895db239b1a50513b11f164" + }, + { + "url": "/static/libs/ueditor/dialogs/help/help.js", + "revision": "c71c99620fb53ed1620604d4b7e5aeb7" + }, + { + "url": "/static/libs/ueditor/dialogs/image/image.css", + "revision": "9b5d5bf39acb984f8fd47cebca9eb179" + }, + { + "url": "/static/libs/ueditor/dialogs/image/image.html", + "revision": "2f05692e7e046af2a73e882716702dbb" + }, + { + "url": "/static/libs/ueditor/dialogs/image/image.js", + "revision": "c3fb707c86db1dbeea886ce306ef32f0" + }, + { + "url": "/static/libs/ueditor/dialogs/image/images/alignicon.jpg", + "revision": "0bffaa2001fb64832c4b07f61c28067c" + }, + { + "url": "/static/libs/ueditor/dialogs/image/images/bg.png", + "revision": "ceea3f7e3d18fbefe125725c85a57aeb" + }, + { + "url": "/static/libs/ueditor/dialogs/image/images/icons.png", + "revision": "c9ceb83c0a247ae47f54c3e1d3cb4bac" + }, + { + "url": "/static/libs/ueditor/dialogs/image/images/image.png", + "revision": "6b00566e6a7a54df0b83fe8a1d8b9427" + }, + { + "url": "/static/libs/ueditor/dialogs/image/images/progress.png", + "revision": "46732e763f50c337fecabcc42150d842" + }, + { + "url": "/static/libs/ueditor/dialogs/image/images/success.png", + "revision": "b80425bbf53402d499d54c86ca365870" + }, + { + "url": "/static/libs/ueditor/dialogs/insertalert/insertalert.html", + "revision": "6c5e6a68da3b9e6925168c5b12a7dc68" + }, + { + "url": "/static/libs/ueditor/dialogs/insertalert/insertalert.js", + "revision": "45db219678fcb4914f5a49157cdc821a" + }, + { + "url": "/static/libs/ueditor/dialogs/inserticon/inserticon.html", + "revision": "58499d42832af3b3294967c8b23a7d6e" + }, + { + "url": "/static/libs/ueditor/dialogs/inserticon/inserticon.js", + "revision": "0f463c339030be393aac143898b6869b" + }, + { + "url": "/static/libs/ueditor/dialogs/insertlabel/insertlabel.html", + "revision": "7e9ff0f13c865392c70a8838cd83eec2" + }, + { + "url": "/static/libs/ueditor/dialogs/insertlabel/insertlabel.js", + "revision": "ce5fc09df9229f9841fcf723ba8733cb" + }, + { + "url": "/static/libs/ueditor/dialogs/internal.js", + "revision": "0ad353924c6424d5359aa5c8a9128897" + }, + { + "url": "/static/libs/ueditor/dialogs/link/link.html", + "revision": "d12cccc1973b2a033dd0e501c4bc38f5" + }, + { + "url": "/static/libs/ueditor/dialogs/map/map.html", + "revision": "c4b3cd91b659cf854071f9b87422d5ba" + }, + { + "url": "/static/libs/ueditor/dialogs/map/show.html", + "revision": "0fc02024cda940174c098b871bf84c7c" + }, + { + "url": "/static/libs/ueditor/dialogs/music/music.css", + "revision": "dd49d4680b5a0199ced0527bcd1fc47c" + }, + { + "url": "/static/libs/ueditor/dialogs/music/music.html", + "revision": "166d59a78b1accf09e05838690ac6833" + }, + { + "url": "/static/libs/ueditor/dialogs/music/music.js", + "revision": "1f9f8d94f7cb35726e713558e93b9f18" + }, + { + "url": "/static/libs/ueditor/dialogs/preview/preview.html", + "revision": "9d191de1f0742a630f6b3f248ee6fcb4" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/addimg.png", + "revision": "64d268d5749c701a9ef3af91efba1b88" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/brush.png", + "revision": "f76286aaa7fbdc6046c3802d57a2a86a" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/delimg.png", + "revision": "2091e959cbafd08fb1eed9131b9fd44c" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/delimgH.png", + "revision": "54a5447ca3c56b999ab26a0705b4cdee" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/empty.png", + "revision": "37ebb732ae836025a8fb73a633a7a899" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/emptyH.png", + "revision": "b05b8330ec204731c28191de7c30193c" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/eraser.png", + "revision": "5c7e4ef7709bcab2bad98dd69d074ce9" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/redo.png", + "revision": "f7c8eda36e253d931ed9396450690d70" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/redoH.png", + "revision": "20190473ae3f1ef61695f94f5c2b6789" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/scale.png", + "revision": "04cacdc1426b6158dfe537f959e0acf2" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/scaleH.png", + "revision": "be0eea27c8907255c8d241187f34e440" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/size.png", + "revision": "0b8509263ad87c33cee01dce5a6eaf13" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/undo.png", + "revision": "ed6b7fb70d0c207bebd94ad2c5f14630" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/images/undoH.png", + "revision": "01014410b794e57dcb8b6163859083c7" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/scrawl.css", + "revision": "15ae9c3d69be443b1d8de5c9e9ba11c6" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/scrawl.html", + "revision": "d5a59704fbc6b624c22c59a599d55d13" + }, + { + "url": "/static/libs/ueditor/dialogs/scrawl/scrawl.js", + "revision": "3b6caaf59281a9683677ddee83935e4f" + }, + { + "url": "/static/libs/ueditor/dialogs/searchreplace/searchreplace.html", + "revision": "26d32bad1ba1d437879b479b6c62e828" + }, + { + "url": "/static/libs/ueditor/dialogs/searchreplace/searchreplace.js", + "revision": "4adfe200d3743972a7069e7ad93e9e34" + }, + { + "url": "/static/libs/ueditor/dialogs/snapscreen/snapscreen.html", + "revision": "8aacfe4f5bdd0dc4e8e90acbfa3089ac" + }, + { + "url": "/static/libs/ueditor/dialogs/spechars/spechars.html", + "revision": "76020b27c310705c1a4127d039e7080a" + }, + { + "url": "/static/libs/ueditor/dialogs/spechars/spechars.js", + "revision": "0ccd4c2c5eb3a3469e4338934a33da1c" + }, + { + "url": "/static/libs/ueditor/dialogs/table/dragicon.png", + "revision": "c622f9eb6ec86c015aae5200e5d3beee" + }, + { + "url": "/static/libs/ueditor/dialogs/table/edittable.css", + "revision": "dd7096054b03244de0c56da45fc8e2f8" + }, + { + "url": "/static/libs/ueditor/dialogs/table/edittable.html", + "revision": "2f9dc1669b05856a3d19907319b5ea16" + }, + { + "url": "/static/libs/ueditor/dialogs/table/edittable.js", + "revision": "3099e6fb1f29eb2516147001b5eafa8d" + }, + { + "url": "/static/libs/ueditor/dialogs/table/edittd.html", + "revision": "8e61b9c3e9c7daad97f6711804edd3c2" + }, + { + "url": "/static/libs/ueditor/dialogs/table/edittip.html", + "revision": "b4610606db9110f4c59da1ac2fcb39ff" + }, + { + "url": "/static/libs/ueditor/dialogs/template/config.js", + "revision": "54951826dce59e920c83d716246e331e" + }, + { + "url": "/static/libs/ueditor/dialogs/template/images/pre0.png", + "revision": "fb91f0dc61c7fe6907ff3e1474d30d0a" + }, + { + "url": "/static/libs/ueditor/dialogs/template/images/pre1.png", + "revision": "e73bee7da98c7f1f8f56c24dc1f25025" + }, + { + "url": "/static/libs/ueditor/dialogs/template/images/pre2.png", + "revision": "dde76455a773b6f56b8fcd2548f03319" + }, + { + "url": "/static/libs/ueditor/dialogs/template/images/pre3.png", + "revision": "f12f7bc32ff0b6992f57c01e9a64c6d1" + }, + { + "url": "/static/libs/ueditor/dialogs/template/images/pre4.png", + "revision": "762f96c0b86af5f3f8f7bc6b0c3730dc" + }, + { + "url": "/static/libs/ueditor/dialogs/template/template.css", + "revision": "891cd8e8843697280b54d6b3bc79688a" + }, + { + "url": "/static/libs/ueditor/dialogs/template/template.html", + "revision": "64a53900fbb9fdd78ca189d007e23278" + }, + { + "url": "/static/libs/ueditor/dialogs/template/template.js", + "revision": "c7f01c7114abb92fa3d3e7daa759111e" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/bg.png", + "revision": "ceea3f7e3d18fbefe125725c85a57aeb" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/center_focus.jpg", + "revision": "13813ba01bf8267721a8a9d9ea56bf90" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/file-icons.png", + "revision": "f43725a2e01286fd452243252df94999" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/icons.png", + "revision": "c9ceb83c0a247ae47f54c3e1d3cb4bac" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/image.png", + "revision": "6b00566e6a7a54df0b83fe8a1d8b9427" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/left_focus.jpg", + "revision": "e6f556abcbe48e0115995bcc106a8531" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/none_focus.jpg", + "revision": "85b08393f830bcc62c1376252b807f81" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/progress.png", + "revision": "46732e763f50c337fecabcc42150d842" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/right_focus.jpg", + "revision": "17e1af76de01403df026af28cc4aecda" + }, + { + "url": "/static/libs/ueditor/dialogs/video/images/success.png", + "revision": "b80425bbf53402d499d54c86ca365870" + }, + { + "url": "/static/libs/ueditor/dialogs/video/video.css", + "revision": "55898f242d519e026d8e1114f98427ec" + }, + { + "url": "/static/libs/ueditor/dialogs/video/video.html", + "revision": "c420d277aab1f0346cf6b44c9f8a0a75" + }, + { + "url": "/static/libs/ueditor/dialogs/video/video.js", + "revision": "1f830dbfabdb2fa876c9e714752015ab" + }, + { + "url": "/static/libs/ueditor/dialogs/webapp/webapp.html", + "revision": "c028c61ac40aea29e449904c4b99ecfc" + }, + { + "url": "/static/libs/ueditor/dialogs/wordimage/fClipboard_ueditor.swf", + "revision": "ee7d49d00de40b9b2e0f7179f90e7dc5" + }, + { + "url": "/static/libs/ueditor/dialogs/wordimage/imageUploader.swf", + "revision": "e9397358f963ab35bb8ad2a610395212" + }, + { + "url": "/static/libs/ueditor/dialogs/wordimage/tangram.js", + "revision": "02d5d833b260cc11a116b005f05df232" + }, + { + "url": "/static/libs/ueditor/dialogs/wordimage/wordimage.html", + "revision": "fd953597da3a5c7f31ae0575a1ce8443" + }, + { + "url": "/static/libs/ueditor/dialogs/wordimage/wordimage.js", + "revision": "63e83652877adeac0e6419ed157da0ba" + }, + { + "url": "/static/libs/ueditor/index.html", + "revision": "24ea7e0b4aaf3b15aea8474e4d00e950" + }, + { + "url": "/static/libs/ueditor/lang/en/en.js", + "revision": "88cb6326d0cf22c4b75c847b39311767" + }, + { + "url": "/static/libs/ueditor/lang/en/images/addimage.png", + "revision": "88e7d05b61025278ff1b1230cfd21aa5" + }, + { + "url": "/static/libs/ueditor/lang/en/images/alldeletebtnhoverskin.png", + "revision": "1eb887698a395ffb7f1a6175d05442af" + }, + { + "url": "/static/libs/ueditor/lang/en/images/alldeletebtnupskin.png", + "revision": "6d7265b07429ceca1b03fce1e9266e14" + }, + { + "url": "/static/libs/ueditor/lang/en/images/background.png", + "revision": "d3320c66e053049d1fed97de1422006b" + }, + { + "url": "/static/libs/ueditor/lang/en/images/button.png", + "revision": "dfa3aef5fe3087a5450753aa28529304" + }, + { + "url": "/static/libs/ueditor/lang/en/images/copy.png", + "revision": "b512aa9fa0ee7783ff516f9f0828b060" + }, + { + "url": "/static/libs/ueditor/lang/en/images/deletedisable.png", + "revision": "4c5b9e9ad29724e8a1296059523d56f5" + }, + { + "url": "/static/libs/ueditor/lang/en/images/deleteenable.png", + "revision": "b012453148feba7207940356f0db91e2" + }, + { + "url": "/static/libs/ueditor/lang/en/images/listbackground.png", + "revision": "3ad9255e6398f1694395b0e0c3d330a4" + }, + { + "url": "/static/libs/ueditor/lang/en/images/localimage.png", + "revision": "98b6c213a9b89b7959da7aeb7368c738" + }, + { + "url": "/static/libs/ueditor/lang/en/images/music.png", + "revision": "2cd78f0b4eb01b8f00a44bfb029e3824" + }, + { + "url": "/static/libs/ueditor/lang/en/images/rotateleftdisable.png", + "revision": "6cae1397f4ae4f052293ca7a42fdf16c" + }, + { + "url": "/static/libs/ueditor/lang/en/images/rotateleftenable.png", + "revision": "9e6628c34db960d682a591bc24d4f557" + }, + { + "url": "/static/libs/ueditor/lang/en/images/rotaterightdisable.png", + "revision": "34206a03b2459da6ad36ff6ad2998fa0" + }, + { + "url": "/static/libs/ueditor/lang/en/images/rotaterightenable.png", + "revision": "bfc1b0155bfe9e60373c6e7f131f2771" + }, + { + "url": "/static/libs/ueditor/lang/en/images/upload.png", + "revision": "9da36dab96ef97bf14115b4bd5169e78" + }, + { + "url": "/static/libs/ueditor/lang/zh-cn/images/copy.png", + "revision": "40644255bb10f102763cbce4a3a2f7d9" + }, + { + "url": "/static/libs/ueditor/lang/zh-cn/images/localimage.png", + "revision": "c754e6ca1921cd639739499d3cf45875" + }, + { + "url": "/static/libs/ueditor/lang/zh-cn/images/music.png", + "revision": "6d299069db6f24cf2ba1a90a64b49db7" + }, + { + "url": "/static/libs/ueditor/lang/zh-cn/images/upload.png", + "revision": "e0a1a76441b4da770097e1af0a650b93" + }, + { + "url": "/static/libs/ueditor/lang/zh-cn/zh-cn.js", + "revision": "3320117b5cb2f192cbcf002113e259ba" + }, + { + "url": "/static/libs/ueditor/themes/default/css/ueditor.css", + "revision": "0161b2c1999df8920b6da11035bb6866" + }, + { + "url": "/static/libs/ueditor/themes/default/css/ueditor.min.css", + "revision": "78063ccf206ef0c8923d7ddabaf9afaa" + }, + { + "url": "/static/libs/ueditor/themes/default/dialogbase.css", + "revision": "c6d32705b72d5d324102b19b880a7b73" + }, + { + "url": "/static/libs/ueditor/themes/default/images/arrow_down.png", + "revision": "06a16826b506f5264e29cc3c84137455" + }, + { + "url": "/static/libs/ueditor/themes/default/images/arrow_up.png", + "revision": "888bff7ff3165632455621e1b899287d" + }, + { + "url": "/static/libs/ueditor/themes/default/images/arrow.png", + "revision": "1c5b6a4191ae6122048d44e9a40d8974" + }, + { + "url": "/static/libs/ueditor/themes/default/images/charts.png", + "revision": "6555bb1e761aba45078f600eee974a66" + }, + { + "url": "/static/libs/ueditor/themes/default/images/cursor_h.png", + "revision": "d25ebcb51beae52a5a3f8c658d1c00d9" + }, + { + "url": "/static/libs/ueditor/themes/default/images/cursor_v.png", + "revision": "270f36fdf73544c528fe81d5494d5c6f" + }, + { + "url": "/static/libs/ueditor/themes/default/images/dialog-title-bg.png", + "revision": "1c4486a78ac7758a7ab3bd84e1a38066" + }, + { + "url": "/static/libs/ueditor/themes/default/images/filescan.png", + "revision": "b5b96bbb19c82b712538d9eba562873a" + }, + { + "url": "/static/libs/ueditor/themes/default/images/icons.png", + "revision": "6ffe01bf317ac098a88868d5036cc5f8" + }, + { + "url": "/static/libs/ueditor/themes/default/images/loaderror.png", + "revision": "8dc0567ff9656e738b562e50db1e5b86" + }, + { + "url": "/static/libs/ueditor/themes/default/images/neweditor-tab-bg.png", + "revision": "4869b022d6ba52d8c4312e9f40564efd" + }, + { + "url": "/static/libs/ueditor/themes/default/images/scale.png", + "revision": "44274c1e95b775c004f110f84db1c058" + }, + { + "url": "/static/libs/ueditor/themes/default/images/sortable.png", + "revision": "297a921544f1f9518b1180bb74317c9a" + }, + { + "url": "/static/libs/ueditor/themes/default/images/sparator_v.png", + "revision": "9d34b0cc46ae6d88e3c7183933be762f" + }, + { + "url": "/static/libs/ueditor/themes/default/images/table-cell-align.png", + "revision": "676456b57740b2a325b23a54902d21a6" + }, + { + "url": "/static/libs/ueditor/themes/default/images/tangram-colorpicker.png", + "revision": "c58df79dc817794353a65858035b71b6" + }, + { + "url": "/static/libs/ueditor/themes/default/images/toolbar_bg.png", + "revision": "fc2b48359037a6f185634fbe31fcb1ae" + }, + { + "url": "/static/libs/ueditor/themes/default/images/upload.png", + "revision": "e0a1a76441b4da770097e1af0a650b93" + }, + { + "url": "/static/libs/ueditor/themes/default/images/wordpaste.png", + "revision": "c78d50851eeb7922d57ef3281f676dd1" + }, + { + "url": "/static/libs/ueditor/themes/iframe.css", + "revision": "4eb2364b5a547a2d3e99a92d12cad8f5" + }, + { + "url": "/static/libs/ueditor/third-party/codemirror/codemirror.css", + "revision": "2ab8b08e3d99c1e61c9b56601848412e" + }, + { + "url": "/static/libs/ueditor/third-party/codemirror/codemirror.js", + "revision": "bb17a634a67754684b3df3f361db4ae1" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/adapters/mootools-adapter.js", + "revision": "c96a6c07c23483a59f247c64192c8cc6" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/adapters/mootools-adapter.src.js", + "revision": "c555d2393faeda77191724178c6cfaaa" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/adapters/prototype-adapter.js", + "revision": "b740069c9dfb747f06449d05f398d96e" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/adapters/prototype-adapter.src.js", + "revision": "566f0854479ba660c70602344876f80d" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/adapters/standalone-framework.js", + "revision": "68ec1cd67c9092535bef258a7021f0b2" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/adapters/standalone-framework.src.js", + "revision": "c65b1fa5cddda5691b788d0f57cf15a1" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/highcharts-more.js", + "revision": "28edf9ce1a85c74da85177298cc4d681" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/highcharts-more.src.js", + "revision": "a135ee3d19ac2e43b4919cc08df09597" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/highcharts.js", + "revision": "618e64fd24de4603efd34c884be3b381" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/highcharts.src.js", + "revision": "5a665f0e03eeda8a491fcb5005e6f369" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/annotations.js", + "revision": "4afb96b809f40e01e6a0bd65baa8fd35" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/annotations.src.js", + "revision": "05fc417638d360f18279cc6fdd24b96d" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/canvas-tools.js", + "revision": "44c97a99d743557f2a62cd491ad67868" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/canvas-tools.src.js", + "revision": "2b6cc59ea7332fa69a28b5045c8bb4ee" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/data.js", + "revision": "d3f180987716c39ac6e5c550f67c4c81" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/data.src.js", + "revision": "5aec4f24d98e30b10f702226108be657" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/drilldown.js", + "revision": "6f7c0fab1b4928cc72845994f710eaf6" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/drilldown.src.js", + "revision": "cbdf1eed29dde8296e4a6978e3435273" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/exporting.js", + "revision": "510e480f268aa36e3cf1900d0abb99de" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/exporting.src.js", + "revision": "e3a16272b55bf29fe0ce67f7b9dae4ce" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/funnel.js", + "revision": "9327ba44f8cdc1edcf83e397e889cb08" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/funnel.src.js", + "revision": "bfdde27ffd6e557f95c7484f80400ebf" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/heatmap.js", + "revision": "39e9f9057497402dde01f47c41ca3bcc" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/heatmap.src.js", + "revision": "719ac2b68ef253125c095cd502de756d" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/map.js", + "revision": "8dc9ec41cf2747515f8b4c689387a864" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/map.src.js", + "revision": "534facf0901e5fbc5a06c27e75969c92" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/no-data-to-display.js", + "revision": "17e1b0d3950fdffda42694c19d2077b3" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/modules/no-data-to-display.src.js", + "revision": "f3372ce263f7f21253a4f3648d7c3cc3" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/themes/dark-blue.js", + "revision": "598d05af8b1440bed467a8a1f14909e7" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/themes/dark-green.js", + "revision": "751ade611cfbb4785f21511d32ab7891" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/themes/gray.js", + "revision": "24f5a2a8e34b2273295f7295d48163be" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/themes/grid.js", + "revision": "843c137978954b072fb8ff2097f5f05d" + }, + { + "url": "/static/libs/ueditor/third-party/highcharts/themes/skies.js", + "revision": "edeff203b4d4d56d7f1eaf9c2d8e8b76" + }, + { + "url": "/static/libs/ueditor/third-party/jquery-1.10.2.js", + "revision": "91515770ce8c55de23b306444d8ea998" + }, + { + "url": "/static/libs/ueditor/third-party/jquery-1.10.2.min.js", + "revision": "628072e7212db1e8cdacb22b21752cda" + }, + { + "url": "/static/libs/ueditor/third-party/SyntaxHighlighter/shCore.js", + "revision": "b4f775128900e33fd2a7c12b46b41b96" + }, + { + "url": "/static/libs/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css", + "revision": "a7dc264e528c0e603cbfad33b9cc8572" + }, + { + "url": "/static/libs/ueditor/third-party/video-js/font/vjs.svg", + "revision": "0eb58bb31b855635ebd80e65d797e2c2" + }, + { + "url": "/static/libs/ueditor/third-party/video-js/video-js.css", + "revision": "6979b2e79474bd0a8b84edce64b89ae1" + }, + { + "url": "/static/libs/ueditor/third-party/video-js/video-js.min.css", + "revision": "4b6813504d31e3b11655aafacf165db4" + }, + { + "url": "/static/libs/ueditor/third-party/video-js/video-js.swf", + "revision": "aed0b06dad0af0de278cd7c90d0e4c9b" + }, + { + "url": "/static/libs/ueditor/third-party/video-js/video.dev.js", + "revision": "18c42d25190ad7ed229436868ffe0a4f" + }, + { + "url": "/static/libs/ueditor/third-party/video-js/video.js", + "revision": "9bffc8ad91cf0e7e84dbb3e5f1eea23d" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/Uploader.swf", + "revision": "501a397c5bac2b02206a4fc855875136" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.css", + "revision": "ca70e29d4161ce4494199f2d088e98ca" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.custom.js", + "revision": "ee305c10a48030b2cb303c29e1a6c8a2" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.custom.min.js", + "revision": "5fd18b38672ad1342eccf241abead795" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.flashonly.js", + "revision": "c4a3bf9b5186325ae81a0c459f14798a" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.flashonly.min.js", + "revision": "527c3d756b0d22aeb122dc5d8da33e17" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.html5only.js", + "revision": "2cdc7bb54db94e5c8f842da451b46e93" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.html5only.min.js", + "revision": "e11d9bc7dee10f72092a0867203251e8" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.js", + "revision": "6c75aae8048de3d23cee4b255278a437" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.min.js", + "revision": "43487dfd7e2db6a93302608a16bb9424" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.withoutimage.js", + "revision": "ac30cd2e245e5988d8cfb2dc6f185ec2" + }, + { + "url": "/static/libs/ueditor/third-party/webuploader/webuploader.withoutimage.min.js", + "revision": "3c3e8c363933509550c4a3709d514ee1" + }, + { + "url": "/static/libs/ueditor/third-party/zeroclipboard/ZeroClipboard.js", + "revision": "56acbc88efd2b5c82448f8db32f1efa9" + }, + { + "url": "/static/libs/ueditor/third-party/zeroclipboard/ZeroClipboard.min.js", + "revision": "cd022aa32cf4146a2d405bdade9a7316" + }, + { + "url": "/static/libs/ueditor/third-party/zeroclipboard/ZeroClipboard.swf", + "revision": "cc114c6d12a97635096956aab117b4d4" + }, + { + "url": "/static/libs/ueditor/ueditor.all.js", + "revision": "c599c5cdf8d5acbcc34ef3009c0c3939" + }, + { + "url": "/static/libs/ueditor/ueditor.all.min.js", + "revision": "f031cc9a52f599b489d5bab94568e1c8" + }, + { + "url": "/static/libs/ueditor/ueditor.config.js", + "revision": "92b003effa1801b385b79b82ac25ac4d" + }, + { + "url": "/static/libs/ueditor/ueditor.parse.js", + "revision": "c57a695dab8618dbf57ec355fe3cd498" + }, + { + "url": "/static/libs/ueditor/ueditor.parse.min.js", + "revision": "b58abee074812a05133b8cecdc06b49c" + }, + { + "url": "/static/src/css/account.css", + "revision": "fea17873f32909f7381434bf8d837bb6" + }, + { + "url": "/static/src/css/admin.css", + "revision": "ace3c39f5d191bdad000aafa850c2e24" + }, + { + "url": "/static/src/css/animate-custom.css", + "revision": "8ebdaa42b70692a35702fb168b2c4f87" + }, + { + "url": "/static/src/css/bootstrap-addon.css", + "revision": "2de958c72428113023139b629bdf3036" + }, + { + "url": "/static/src/css/dark_theme_code.css", + "revision": "95f6fecd02ab30ea03365f26280738a6" + }, + { + "url": "/static/src/css/error.css", + "revision": "111e28bd221159f24912396b00ea3a64" + }, + { + "url": "/static/src/css/github-markdown.css", + "revision": "53b68d66c30e94646961bf0151ac42ce" + }, + { + "url": "/static/src/css/home-loading.css", + "revision": "f34cf8ce3e41fd8efd410a828d5df126" + }, + { + "url": "/static/src/css/icon-font.css", + "revision": "ba4c6929587fe18676c6f86c294d7eef" + }, + { + "url": "/static/src/css/monokai-sublime.css", + "revision": "7956f127b62d3a799347b00fd2d71825" + }, + { + "url": "/static/src/css/posts_style_custom.css", + "revision": "22211a68383fcc12c4a25b5d25e17c4a" + }, + { + "url": "/static/src/css/selectlist.css", + "revision": "fcb98657b4807489fb525ed891f189ee" + }, + { + "url": "/static/src/css/share.css", + "revision": "0edc4d28acbc11b61c8f1196b7824192" + }, + { + "url": "/static/src/css/site.css", + "revision": "a7b643d0c7e0befb1101674480bce4ef" + }, + { + "url": "/static/src/js/about.js", + "revision": "c953f9050ba9a3dab72c5d9e3354e1fa" + }, + { + "url": "/static/src/js/aboutmanage.js", + "revision": "55f2aedf7662436c53e8e59b2cdf7750" + }, + { + "url": "/static/src/js/account.js", + "revision": "cf120e324080c73e8b7a5f832205daf5" + }, + { + "url": "/static/src/js/admin.js", + "revision": "227cdee0c00cc768db90a171e02bf94b" + }, + { + "url": "/static/src/js/article.js", + "revision": "b6514181e51b205a59adf57e1f41812c" + }, + { + "url": "/static/src/js/articlemanage.js", + "revision": "4549a9606d841fda707086212cefcdea" + }, + { + "url": "/static/src/js/cachemanage.js", + "revision": "f43a0d23f0719f249815b84f927a18eb" + }, + { + "url": "/static/src/js/category.js", + "revision": "cd618558a738c198fcba01ee1463d818" + }, + { + "url": "/static/src/js/categorymanage.js", + "revision": "818267d7988fb9dfedfb5694a55b9d62" + }, + { + "url": "/static/src/js/dateFormat.js", + "revision": "9d8d4c63e06b4804c985074e55518c25" + }, + { + "url": "/static/src/js/editarticle.js", + "revision": "cce50368a57a22fa6b9eb48705ee7357" + }, + { + "url": "/static/src/js/exception.js", + "revision": "0bcfc6c3d782acdf0b5a7a076acb61b3" + }, + { + "url": "/static/src/js/guestbook.js", + "revision": "c5440a16034df3ae132aa391cc5e5c92" + }, + { + "url": "/static/src/js/highlight_line_number.js", + "revision": "46e28b74d69247b91c80b056398aa0f0" + }, + { + "url": "/static/src/js/index.js", + "revision": "f86dac258567ac544ac8f3ac7d03c4ed" + }, + { + "url": "/static/src/js/newarticle.js", + "revision": "bf6d87056fd46c52b8d18697a9939e43" + }, + { + "url": "/static/src/js/prehandler.js", + "revision": "bc8f6d7b5aa98c92293aa685597b7913" + }, + { + "url": "/static/src/js/selectlist.js", + "revision": "804f9a60c7597f419a7451e9bd6caa6b" + }, + { + "url": "/static/src/js/settings.js", + "revision": "372bb368ae06752a73c90715c21a86ca" + }, + { + "url": "/static/src/js/top.js", + "revision": "1497bc2af110a7585d484cc97b73d492" + }, + { + "url": "/static/uploads/415gQEpsx/file/prev_EkGnX4Tog.png", + "revision": "84b76dee6b27b795e89e3649078a11c2" + }, + { + "url": "/static/uploads/415gQEpsx/img/zhr_VJH5Q4asx.jpg", + "revision": "cc21e17dd614e359b6223f0dea7d482c" + }, + { + "url": "/static/ZeroClipboard.swf", + "revision": "a573941f02f4331f81046356ebb667eb" + }, + { + "url": "/nodeModules/bootstrap/dist/css/bootstrap-theme.min.css", + "revision": "2010fa9fb07541adc78a1ec0a8a4fbbf" + }, + { + "url": "/nodeModules/bootstrap/dist/css/bootstrap.min.css", + "revision": "7f89537eaf606bff49f5cc1a7c24dbca" + }, + { + "url": "/nodeModules/bootstrap/dist/js/bootstrap.min.js", + "revision": "2f34b630ffe30ba2ff2b91e3f3c322a1" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/all.min.css", + "revision": "e4c542a7f6bf6f74fdd8cdf6e8096396" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/brands.min.css", + "revision": "c9fcdfd0e53dec8552f9dd3b40f75973" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/fontawesome.min.css", + "revision": "f87b6becf6c4595d38a59016c2460a0b" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/regular.min.css", + "revision": "b7c0350118f1465ba68e3b7c93fcc360" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/solid.min.css", + "revision": "cddcd8fd12da8dd6bcad774583afd75c" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/svg-with-js.min.css", + "revision": "12a9e48af01b59c9e03476b1d0189c98" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/css/v4-shims.min.css", + "revision": "d12f3b2a85c84ec27b7d27eec733af10" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot", + "revision": "a7b95dbdd87e0c809570affaf366a434" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf", + "revision": "98b6db59be947f563350d2284fc9ea36" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff", + "revision": "2ef8ba3410dcc71578a880e7064acd7a" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2", + "revision": "5e2f92123d241cabecf0b289b9b08d4a" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot", + "revision": "dcce4b7fbd5e895561e18af4668265af" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf", + "revision": "65b9977aa23185e8964b36eddbce7a20" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff", + "revision": "427d721b86fc9c68b2e85ad42b69238c" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2", + "revision": "e6257a726a0cf6ec8c6fec22821c055f" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot", + "revision": "46e7cec623d8bd790d9fdbc8de2d3ee7" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf", + "revision": "ff8d9f8adb0d09f11d4816a152672f53" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff", + "revision": "a7140145ebaaf5fb14e40430af5d25c4" + }, + { + "url": "/nodeModules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2", + "revision": "418dad87601f9c8abd0e5798c0dc1feb" + }, + { + "url": "/nodeModules/blueimp-file-upload/css/jquery.fileupload-noscript.css", + "revision": "77b97d2b03652874f0b4838f9092bbb2" + }, + { + "url": "/nodeModules/blueimp-file-upload/css/jquery.fileupload-ui-noscript.css", + "revision": "f95c01176c6a8e075aebd07ee2e84689" + }, + { + "url": "/nodeModules/blueimp-file-upload/css/jquery.fileupload-ui.css", + "revision": "1f4e0dd2d9441a6fc90d2a3ce0ca072f" + }, + { + "url": "/nodeModules/blueimp-file-upload/css/jquery.fileupload.css", + "revision": "ec8bd4e8c3a38562e96bcb8602516822" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/cors/jquery.postmessage-transport.js", + "revision": "9522699d1ed0c2e95bdfb08cabd4b8e2" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/cors/jquery.xdr-transport.js", + "revision": "8a21ee58e9eba7e01d5dd8b3c7364cf5" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-angular.js", + "revision": "398579ad6380c370efbb2918da088fd0" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-audio.js", + "revision": "a7234dfb696e4248614b79f95478da89" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-image.js", + "revision": "7c40367b00f74b0c7c43bff009dde942" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-jquery-ui.js", + "revision": "253cd8d55b224c72333ce88337a1edb3" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-process.js", + "revision": "840f65232eaf1619ea0aff1ab4f5e444" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-ui.js", + "revision": "d41e8e8fa1811ff6e0ff5b8f541f3203" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-validate.js", + "revision": "a144e6149c89ed27e0b2d7fcfef09101" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload-video.js", + "revision": "0a9ee295c77f8a09bd4aac114171ed62" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.fileupload.js", + "revision": "4bfd85460689a29e314ddfad50c184e0" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/jquery.iframe-transport.js", + "revision": "f371e8d9f57329f90114d7b52dd5c7a4" + }, + { + "url": "/nodeModules/blueimp-file-upload/js/vendor/jquery.ui.widget.js", + "revision": "3d0f0f5ca5d86c5a4b4fc33cda374a17" + }, + { + "url": "/nodeModules/sweetalert/dist/sweetalert-dev.js", + "revision": "800cbdcad6a26e06fc9471102d8c50c4" + }, + { + "url": "/nodeModules/sweetalert/dist/sweetalert.css", + "revision": "196c08c89f0c8a9b688a16d3435ac327" + }, + { + "url": "/nodeModules/sweetalert/dist/sweetalert.min.js", + "revision": "0068f44b0aa1b83fa7679860ceb26590" + }, + { + "url": "/nodeModules/jquery/dist/jquery.js", + "revision": "888d4551b8db7c41cda28d95e494f998" + }, + { + "url": "/nodeModules/jquery/dist/jquery.min.js", + "revision": "2f6b11a7e914718e0290410e85366fe9" + }, + { + "url": "/nodeModules/metismenu/dist/cjs/index.js", + "revision": "e3a81aadc90300392b78d40ff223b5cf" + }, + { + "url": "/nodeModules/metismenu/dist/metisMenu.css", + "revision": "31ffb62ccdea9a6362112e37a70a7ffc" + }, + { + "url": "/nodeModules/metismenu/dist/metisMenu.js", + "revision": "f0ec5be1b3831cbda70f751151c93130" + }, + { + "url": "/nodeModules/metismenu/dist/metisMenu.min.css", + "revision": "990c79a10309155c5b46ced8f6b88f57" + }, + { + "url": "/nodeModules/metismenu/dist/metisMenu.min.js", + "revision": "a6b9a45de9e973ebe0079ff0ec5d1637" + }, + { + "url": "/nodeModules/metismenu/dist/modules/index.js", + "revision": "38f8b096d5a1e575075a7328f2fc1f90" + }, + { + "url": "/nodeModules/lodash/core.min.js", + "revision": "a6979ad394d6e0da7f690e7be5e29b8f" + }, + { + "url": "/nodeModules/lodash/lodash.min.js", + "revision": "62acde2a2687c63954bee264a1a2f86d" + }, + { + "url": "/nodeModules/fuelux/dist/css/fuelux.css", + "revision": "0c9709e631eb1b860cdec4bf4e9d26f0" + }, + { + "url": "/nodeModules/fuelux/dist/css/fuelux.min.css", + "revision": "ea5e075186850395d225c2598a6622ce" + }, + { + "url": "/nodeModules/fuelux/dist/js/fuelux.js", + "revision": "fcdd9209f24b83aea99bbbd8c3b87c96" + }, + { + "url": "/nodeModules/fuelux/dist/js/fuelux.min.js", + "revision": "5135a3abcff5a71f964ed09631cbe4d6" + }, + { + "url": "/nodeModules/simplemde/dist/simplemde.min.css", + "revision": "b8697c785bbf0627fb05a7d32efea0c2" + }, + { + "url": "/nodeModules/simplemde/dist/simplemde.min.js", + "revision": "fd052f831c01ff10535c0ae2b538dc8b" + }, + { + "url": "/nodeModules/js-md5/build/md5.min.js", + "revision": "c3a7222388987b8d12694736f6ef1595" + }, + { + "url": "/nodeModules/animate.css/animate.min.css", + "revision": "c78e4003414fbf2814dc097a5e1c784a" + }, + { + "url": "/nodeModules/lightbox2/dist/css/lightbox.min.css", + "revision": "767938d77eef356b1ba76c3897384948" + }, + { + "url": "/nodeModules/lightbox2/dist/js/lightbox-plus-jquery.min.js", + "revision": "85b4b81c0b2d9fd16b9ea0458b56b064" + }, + { + "url": "/nodeModules/lightbox2/dist/js/lightbox.min.js", + "revision": "754f3b83f87764db45e3adafea8c5720" + }, + { + "url": "/nodeModules/scrollnav/dist/jquery.scrollNav.min.js", + "revision": "5a34ddb1e7f72f61f6de275201d619b1" + }, + { + "url": "/nodeModules/jquery-qrcode/dist/jquery-qrcode.min.js", + "revision": "21f28eca4fb04c36d8e09b15e364950b" + }, + { + "url": "/nodeModules/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js", + "revision": "9df3cfdcc9b72f1aa24e2e114455ae7a" + }, + { + "url": "/nodeModules/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css", + "revision": "295351a5027c5ad6256f3389ab471cfb" + }, + { + "url": "/nodeModules/malihu-custom-scrollbar-plugin/mCSB_buttons.png", + "revision": "3a8a4582fe1dbc77086eccca317c459e" + }, + { + "url": "/nodeModules/jQuery-cycleText/dist/js/jquery.cycleText.min.js", + "revision": "27c6d2d12a22270de12f1e58f5f1fc23" + } +]); + + /** + * 第三方CDN资源,采用 StaleWhileRevalidate 策略 + * 策略:当请求的路由有对应的 Cache 缓存结果就直接返回, + * 在返回 Cache 缓存结果的同时会在后台发起网络请求拿到请求结果并更新 Cache 缓存, + * 如果本来就没有 Cache 缓存的话,直接就发起网络请求并返回结果,这对用户来说是一种非常安全的策略 + */ + workbox.routing.registerRoute( + 'https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js', + new workbox.strategies.StaleWhileRevalidate() + ); + + workbox.routing.registerRoute( + 'https://cdn.bootcss.com/highlight.js/9.12.0/styles/github.min.css', + new workbox.strategies.StaleWhileRevalidate() + ); + + workbox.routing.registerRoute( + 'http://v3.jiathis.com/code/jia.js', + new workbox.strategies.StaleWhileRevalidate() + ); + + workbox.routing.registerRoute( + 'https://hm.baidu.com/hm.js', + new workbox.strategies.StaleWhileRevalidate() + ); + + /** + * 本地资源,采用 CacheFirst 策略 + * 策略:当匹配到请求之后直接从 Cache 缓存中取得结果, + * 如果 Cache 缓存中没有结果,才会发起网络请求, + * 拿到网络请求结果并将结果更新至 Cache 缓存,并将结果返回给客户端 + */ + workbox.routing.registerRoute( + new RegExp('.+\.(?:js|css|png|jpg|jpeg|svg|ico|swf|woff|woff2|eot|ttf")$'), + new workbox.strategies.CacheFirst() + ); + + /** + * 页面,采用 NetworkFirst 策略 + * 策略:优先尝试拿到网络请求的返回结果, + * 如果拿到网络请求的结果,就将结果返回给客户端并且写入 Cache 缓存, + * 如果网络请求失败,那最后被缓存的 Cache 缓存结果就会被返回到客户端 + */ + workbox.routing.registerRoute( + function (context) { + var origin = self.location.origin; + var url = context.url.href; + + // 首页 + if (url === origin + '/') { + return true; + } + + // 博客及文章详情页 + if (url.indexOf(origin + '/blog') === 0) { + return true; + } + + // 留言 + if (url === origin + '/guestbook') { + return true; + } + + // 关于 + if (url === origin + '/about') { + return true; + } + + return false; + }, + new workbox.strategies.NetworkFirst() + ); +} diff --git a/views/shared/layout.pug b/views/shared/layout.pug index 3d860f3..9a7ae5f 100644 --- a/views/shared/layout.pug +++ b/views/shared/layout.pug @@ -8,25 +8,17 @@ html(lang='zh-CN') meta(name='description', content=`${description ? description : "iBlog"}`) link(href='/nodeModules/bootstrap/dist/css/bootstrap.min.css', rel='stylesheet') link(href=`${staticPrefix}/css/bootstrap-addon.css`, rel='stylesheet') + link(href=`${staticPrefix}/css/home-loading.css`, rel='stylesheet') link(href=`${staticPrefix}/css/site.css`, rel='stylesheet') link(href='/nodeModules/@fortawesome/fontawesome-free/css/all.min.css', rel='stylesheet') link(href=`${staticPrefix}/css/share.css`, rel='stylesheet') link(href=`${staticPrefix}/css/animate-custom.css`, rel='stylesheet') title=title body.fuelux - if(isRoot) - link(href=`${staticPrefix}/css/home-loading.css`, rel='stylesheet') - #home-loading.home-loading - #loading-con.loading-con(style='display:none;') - .loading-circle - script. - var home_loading_begin = new Date(); - document.body.style.overflow = "hidden"; - function imgLoad() { - document.getElementById("home-loading").style.background = "#f3f3f4"; - document.getElementById("loading-con").style.display = "block"; - } - img#loadingImg(alt='loading', src=settings.LogoPath, onload='imgLoad();') + #home-loading.home-loading(style='display: none;') + #loading-con.loading-con + .loading-circle + img#loadingImg(alt='loading', src=settings.LogoPath) .navbar.navbar-default.navbar-fixed-top .container-fluid .navbar-header @@ -61,6 +53,7 @@ html(lang='zh-CN') i.fa.fa-language.fa-fw | #{__("language")} block content + script(src=`${staticPrefix}/js/prehandler.js`, charset='utf-8') if(settings.EnableStatistics === 'true') // 百度统计代码 script.