From c11a30a319e1943dec044d5ef1c913880065283e Mon Sep 17 00:00:00 2001 From: "Ilya Ig. Petrov" Date: Tue, 1 Dec 2015 11:24:45 +0500 Subject: [PATCH] better popup for extension --- .../chromium/antizapret-chrome-extension.crx | Bin 2882 -> 0 bytes .../chromium/assets/icons/rkn-chain.png | Bin 0 -> 6357 bytes .../chromium/assets/icons/rkn-chain2.png | Bin 0 -> 6261 bytes extensions/chromium/assets/icons/rkn-core.png | Bin 0 -> 7439 bytes .../chromium/assets/icons/rkn-core2.png | Bin 0 -> 6635 bytes .../chromium/assets/icons/rkn-disabled.png | Bin 0 -> 7850 bytes .../chromium/assets/icons/rkn-empty.png | Bin 0 -> 7850 bytes extensions/chromium/assets/icons/rkn-red.png | Bin 0 -> 7289 bytes extensions/chromium/assets/icons/rkn-rred.png | Bin 0 -> 5643 bytes .../chromium/assets/icons/rkn-white.png | Bin 0 -> 6204 bytes extensions/chromium/assets/icons/rkn.png | Bin 0 -> 7936 bytes .../chromium/assets/icons/rock-closed-red.png | Bin 0 -> 3892 bytes .../chromium/assets/icons/rock-closed.png | Bin 0 -> 4969 bytes .../chromium/assets/icons/rock-goat-red.png | Bin 0 -> 5467 bytes .../chromium/assets/icons/rock-goat.png | Bin 0 -> 5092 bytes .../chromium/assets/icons/rock-open.png | Bin 0 -> 19488 bytes .../chromium/assets/icons/rock-tune.png | Bin 0 -> 16323 bytes extensions/chromium/assets/icons/rock5.png | Bin 0 -> 2514 bytes .../icons}/unlock.ico | Bin .../icons}/unlock.png | Bin extensions/chromium/assets/icons/warn.png | Bin 0 -> 7224 bytes .../background.js | 110 +- .../manifest.json | 19 +- .../_locales/en/lang.js | 45 + .../_locales/en/messages.json | 11 + .../_locales/ru/lang.js | 45 + .../_locales/ru/messages.json | 11 + .../_metadata/verified_contents.json | 1 + .../Proxy-for-Chrome_v1.12/background.html | 29 + .../pages/Proxy-for-Chrome_v1.12/css/main.css | 245 + .../css/notify.almost-flat.css | 99 + .../Proxy-for-Chrome_v1.12/css/switcher.css | 123 + .../css/uikit.almost-flat.css | 7362 +++++++++++++ .../fonts/OpenSans-Bold.woff | Bin 0 -> 19184 bytes .../fonts/OpenSans-CondensedBold.woff | Bin 0 -> 15180 bytes .../fonts/OpenSans-CondensedLight.woff | Bin 0 -> 13944 bytes .../fonts/OpenSans-Light.woff | Bin 0 -> 19120 bytes .../fonts/OpenSans.woff | Bin 0 -> 19396 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/be.png | Bin 0 -> 226 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/bg.png | Bin 0 -> 226 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/ch.png | Bin 0 -> 240 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/cn.png | Bin 0 -> 894 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/cz.png | Bin 0 -> 502 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/de.png | Bin 0 -> 226 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/dk.png | Bin 0 -> 245 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/ee.png | Bin 0 -> 226 bytes .../Proxy-for-Chrome_v1.12/im/co/err.png | Bin 0 -> 2797 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/es.png | Bin 0 -> 1048 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/eu.png | Bin 0 -> 1672 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/fi.png | Bin 0 -> 241 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/fr.png | Bin 0 -> 228 bytes .../Proxy-for-Chrome_v1.12/im/co/google.png | Bin 0 -> 744 bytes .../Proxy-for-Chrome_v1.12/im/co/google64.png | Bin 0 -> 6660 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/ie.png | Bin 0 -> 225 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/it.png | Bin 0 -> 228 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/lt.png | Bin 0 -> 236 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/nl.png | Bin 0 -> 228 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/p.png | Bin 0 -> 997 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/pl.png | Bin 0 -> 222 bytes .../Proxy-for-Chrome_v1.12/im/co/proxy.png | Bin 0 -> 432 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/pt.png | Bin 0 -> 1465 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/ru.png | Bin 0 -> 218 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/se.png | Bin 0 -> 244 bytes .../Proxy-for-Chrome_v1.12/im/co/tor.png | Bin 0 -> 636 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/ua.png | Bin 0 -> 221 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/uk.png | Bin 0 -> 1168 bytes .../Proxy-for-Chrome_v1.12/im/co/unknown.png | Bin 0 -> 602 bytes .../pages/Proxy-for-Chrome_v1.12/im/co/us.png | Bin 0 -> 456 bytes .../Proxy-for-Chrome_v1.12/im/co/user.png | Bin 0 -> 640 bytes .../Proxy-for-Chrome_v1.12/im/google.png | Bin 0 -> 1561 bytes .../pages/Proxy-for-Chrome_v1.12/im/hide.png | Bin 0 -> 2466 bytes .../Proxy-for-Chrome_v1.12/im/ico128-2.png | Bin 0 -> 7072 bytes .../Proxy-for-Chrome_v1.12/im/ico19-2.png | Bin 0 -> 921 bytes .../Proxy-for-Chrome_v1.12/im/ico19g-2.png | Bin 0 -> 926 bytes .../Proxy-for-Chrome_v1.12/im/ico38-2.png | Bin 0 -> 1866 bytes .../Proxy-for-Chrome_v1.12/im/ico38g-2.png | Bin 0 -> 1892 bytes .../Proxy-for-Chrome_v1.12/im/ico64-2.png | Bin 0 -> 3252 bytes .../pages/Proxy-for-Chrome_v1.12/im/no.png | Bin 0 -> 311 bytes .../pages/Proxy-for-Chrome_v1.12/im/on.png | Bin 0 -> 242 bytes .../pages/Proxy-for-Chrome_v1.12/im/onion.png | Bin 0 -> 2050 bytes .../Proxy-for-Chrome_v1.12/js/core/api.js | 509 + .../Proxy-for-Chrome_v1.12/js/core/cache.js | 13 + .../Proxy-for-Chrome_v1.12/js/core/conf.js | 185 + .../Proxy-for-Chrome_v1.12/js/core/core.js | 118 + .../Proxy-for-Chrome_v1.12/js/core/header.js | 96 + .../Proxy-for-Chrome_v1.12/js/core/interf.js | 84 + .../Proxy-for-Chrome_v1.12/js/core/lib.js | 463 + .../Proxy-for-Chrome_v1.12/js/core/onoff.js | 18 + .../Proxy-for-Chrome_v1.12/js/core/proxy.js | 298 + .../Proxy-for-Chrome_v1.12/js/core/vars.js | 13 + .../js/lib/icoanimation.js | 328 + .../js/lib/jquery-2.1.3.js | 9205 +++++++++++++++++ .../js/lib/jquery.ddslick.js | 170 + .../js/lib/jquery.scrollTo.js | 18 + .../Proxy-for-Chrome_v1.12/js/lib/lang.js | 46 + .../Proxy-for-Chrome_v1.12/js/lib/lib.js | 260 + .../pages/Proxy-for-Chrome_v1.12/js/lib/ls.js | 212 + .../Proxy-for-Chrome_v1.12/js/lib/switcher.js | 184 + .../Proxy-for-Chrome_v1.12/js/popup/api.js | 290 + .../Proxy-for-Chrome_v1.12/js/popup/lib.js | 133 + .../Proxy-for-Chrome_v1.12/js/popup/lists.js | 403 + .../Proxy-for-Chrome_v1.12/js/popup/popup.js | 187 + .../js/popup/uproxys.js | 268 + .../Proxy-for-Chrome_v1.12/js/popup/vars.js | 11 + .../js/uikit/components/notify.js | 181 + .../Proxy-for-Chrome_v1.12/js/uikit/uikit.js | 2928 ++++++ .../Proxy-for-Chrome_v1.12/manifest.json | 27 + .../pages/Proxy-for-Chrome_v1.12/popup.html | 220 + .../pages/assets/Unicode_IEC_symbol.svg | 17 + .../pages/assets/Unicode_IEC_symbol.ttf | Bin 0 -> 2256 bytes .../assets/font-awesome-4.5.0/HELP-US-OUT.txt | 7 + .../font-awesome-4.5.0/css/font-awesome.css | 2086 ++++ .../css/font-awesome.min.css | 4 + .../font-awesome-4.5.0/fonts/FontAwesome.otf | Bin 0 -> 109688 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 70807 bytes .../fonts/fontawesome-webfont.svg | 655 ++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 142072 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 83588 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 66624 bytes .../font-awesome-4.5.0/less/animated.less | 34 + .../less/bordered-pulled.less | 25 + .../assets/font-awesome-4.5.0/less/core.less | 12 + .../font-awesome-4.5.0/less/fixed-width.less | 6 + .../font-awesome-4.5.0/less/font-awesome.less | 17 + .../assets/font-awesome-4.5.0/less/icons.less | 697 ++ .../font-awesome-4.5.0/less/larger.less | 13 + .../assets/font-awesome-4.5.0/less/list.less | 19 + .../font-awesome-4.5.0/less/mixins.less | 26 + .../assets/font-awesome-4.5.0/less/path.less | 15 + .../less/rotated-flipped.less | 20 + .../font-awesome-4.5.0/less/stacked.less | 20 + .../font-awesome-4.5.0/less/variables.less | 708 ++ .../font-awesome-4.5.0/scss/_animated.scss | 34 + .../scss/_bordered-pulled.scss | 25 + .../assets/font-awesome-4.5.0/scss/_core.scss | 12 + .../font-awesome-4.5.0/scss/_fixed-width.scss | 6 + .../font-awesome-4.5.0/scss/_icons.scss | 697 ++ .../font-awesome-4.5.0/scss/_larger.scss | 13 + .../assets/font-awesome-4.5.0/scss/_list.scss | 19 + .../font-awesome-4.5.0/scss/_mixins.scss | 26 + .../assets/font-awesome-4.5.0/scss/_path.scss | 15 + .../scss/_rotated-flipped.scss | 20 + .../font-awesome-4.5.0/scss/_stacked.scss | 20 + .../font-awesome-4.5.0/scss/_variables.scss | 708 ++ .../font-awesome-4.5.0/scss/font-awesome.scss | 17 + .../pages/assets/fontawesome-webfont.ttf | Bin 0 -> 142072 bytes extensions/chromium/pages/options.html | 0 extensions/chromium/pages/popup.html | 49 + extensions/chromium/pages/popup.js | 21 + 150 files changed, 31009 insertions(+), 22 deletions(-) delete mode 100755 extensions/chromium/antizapret-chrome-extension.crx create mode 100755 extensions/chromium/assets/icons/rkn-chain.png create mode 100755 extensions/chromium/assets/icons/rkn-chain2.png create mode 100755 extensions/chromium/assets/icons/rkn-core.png create mode 100755 extensions/chromium/assets/icons/rkn-core2.png create mode 100755 extensions/chromium/assets/icons/rkn-disabled.png create mode 100755 extensions/chromium/assets/icons/rkn-empty.png create mode 100755 extensions/chromium/assets/icons/rkn-red.png create mode 100755 extensions/chromium/assets/icons/rkn-rred.png create mode 100755 extensions/chromium/assets/icons/rkn-white.png create mode 100755 extensions/chromium/assets/icons/rkn.png create mode 100755 extensions/chromium/assets/icons/rock-closed-red.png create mode 100755 extensions/chromium/assets/icons/rock-closed.png create mode 100755 extensions/chromium/assets/icons/rock-goat-red.png create mode 100755 extensions/chromium/assets/icons/rock-goat.png create mode 100755 extensions/chromium/assets/icons/rock-open.png create mode 100755 extensions/chromium/assets/icons/rock-tune.png create mode 100755 extensions/chromium/assets/icons/rock5.png rename extensions/chromium/{antizapret-chrome-extension => assets/icons}/unlock.ico (100%) rename extensions/chromium/{antizapret-chrome-extension => assets/icons}/unlock.png (100%) create mode 100755 extensions/chromium/assets/icons/warn.png rename extensions/chromium/{antizapret-chrome-extension => }/background.js (86%) rename extensions/chromium/{antizapret-chrome-extension => }/manifest.json (54%) create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/background.html create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/main.css create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/switcher.css create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Bold.woff create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedBold.woff create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedLight.woff create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Light.woff create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans.woff create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/fontawesome-webfont.woff create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/be.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/bg.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ch.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/cn.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/cz.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/de.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/dk.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ee.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/err.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/es.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/eu.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/fi.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/fr.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/google.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/google64.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ie.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/it.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/lt.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/nl.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/p.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/pl.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/proxy.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/pt.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ru.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/se.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/tor.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ua.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/uk.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/unknown.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/us.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/user.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/google.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/hide.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico128-2.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico19-2.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico19g-2.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico38-2.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico38g-2.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico64-2.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/no.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/on.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/onion.png create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/api.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/cache.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/conf.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/core.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/header.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/interf.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/lib.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/vars.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/jquery.ddslick.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/jquery.scrollTo.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/lang.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/lib.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/ls.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/switcher.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/popup/api.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/popup/lib.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/popup/lists.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/popup/popup.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/popup/uproxys.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/popup/vars.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/uikit/components/notify.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/uikit/uikit.js create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/manifest.json create mode 100755 extensions/chromium/pages/Proxy-for-Chrome_v1.12/popup.html create mode 100755 extensions/chromium/pages/assets/Unicode_IEC_symbol.svg create mode 100755 extensions/chromium/pages/assets/Unicode_IEC_symbol.ttf create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/HELP-US-OUT.txt create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/css/font-awesome.css create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/css/font-awesome.min.css create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/fonts/FontAwesome.otf create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/fonts/fontawesome-webfont.eot create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/fonts/fontawesome-webfont.svg create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/fonts/fontawesome-webfont.ttf create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/fonts/fontawesome-webfont.woff create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/fonts/fontawesome-webfont.woff2 create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/animated.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/bordered-pulled.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/core.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/fixed-width.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/font-awesome.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/icons.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/larger.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/list.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/mixins.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/path.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/rotated-flipped.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/stacked.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/less/variables.less create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_animated.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_bordered-pulled.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_core.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_fixed-width.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_icons.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_larger.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_list.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_mixins.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_path.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_rotated-flipped.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_stacked.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/_variables.scss create mode 100755 extensions/chromium/pages/assets/font-awesome-4.5.0/scss/font-awesome.scss create mode 100755 extensions/chromium/pages/assets/fontawesome-webfont.ttf create mode 100755 extensions/chromium/pages/options.html create mode 100755 extensions/chromium/pages/popup.html create mode 100755 extensions/chromium/pages/popup.js diff --git a/extensions/chromium/antizapret-chrome-extension.crx b/extensions/chromium/antizapret-chrome-extension.crx deleted file mode 100755 index 3d81411988a29f01163a8f0eb5297b2d29d42a99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2882 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 XHC;!aZnPG&00000NkvXXu0mjfsbx2R literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-chain2.png b/extensions/chromium/assets/icons/rkn-chain2.png new file mode 100755 index 0000000000000000000000000000000000000000..32a63d99b4e69b0683e339b5ff98380dd3bdfda0 GIT binary patch literal 6261 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-core.png b/extensions/chromium/assets/icons/rkn-core.png new file mode 100755 index 0000000000000000000000000000000000000000..46ac856dc3a121150dabb2a161adb6a352c7b79b GIT binary patch literal 7439 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 N002ovPDHLkV1mRomP7ym literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-core2.png b/extensions/chromium/assets/icons/rkn-core2.png new file mode 100755 index 0000000000000000000000000000000000000000..109d749028a57016ec82d581a07bb9c3404c71ca GIT binary patch literal 6635 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 IM6N<$f)MFYEdT%j literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-empty.png b/extensions/chromium/assets/icons/rkn-empty.png new file mode 100755 index 0000000000000000000000000000000000000000..54574f9d2347d3f70c570fe6acb4b6d842c64a69 GIT binary patch literal 7850 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 IM6N<$f)MFYEdT%j literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-red.png b/extensions/chromium/assets/icons/rkn-red.png new file mode 100755 index 0000000000000000000000000000000000000000..74ca45682f9d722056dc4159113240a786062051 GIT binary patch literal 7289 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 TKjGy?00000NkvXXu0mjfTbwNm literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-rred.png b/extensions/chromium/assets/icons/rkn-rred.png new file mode 100755 index 0000000000000000000000000000000000000000..cdfc9fe8a857a4c00fc3997baee687c59e2c250c GIT binary patch literal 5643 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rkn-white.png b/extensions/chromium/assets/icons/rkn-white.png new file mode 100755 index 0000000000000000000000000000000000000000..3e189155e1d7a3729e623b78dea6944a310d2320 GIT binary patch literal 6204 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

fhN$VMM#@LMb4oeFTv?!V>L zd?j&YFriJEc#a-1EwWP83%K9N>Wj|pXyadd&)FOpeFkQ()Q(G`pd=PdzJ1d)e${MH*LmI%6j@eRxw-J+Vn2Uk@vVnraX<5w^3K;z$WJ_qDQNJ0x(qesA+ z!ubgK=oSWVx#4~C0Pi#Y=;BqJB3p2=XrG{CD@E7NUV@x}C3Bo4p|022|c+rsv>t3DtR^a11g#jE&m_akJvU{W=jO9CZK_XB$L zf+YmJ6n5Fd%&z=w;sD6>)%$SC-tE+%LUH&kFa%M)d#-ggnsYCdmiBpzN~qI zfMPezutj_be?V?t(t*a`u!IBo^N8W7;xAhGg;cwC*!&)Y1J@q!Cnlyuu3L01b4I^U zWCSaHruQK#Y@h!?E;0o&Jod7{5! za<6s$;xF-`?nlX-5T%;KcF6>pq&HlotQo-0I_``nyGcteh{k zpG?L0Q}+O4W6SQxc*9?b*Q?VoA!``mF(yse&nJe=fz6&^`?|}f{T&T^xBs*2XB_JOBJz$Y5UDh++%>n{8R^VrpYaHKfnU$r5Gl=j_N z_BqrlFPkq8oKeWLum8?G4yCVXE$xvpD;3Q7b>;ggf|y;6G=Aef03cFa@N2GGr}q|F zRBQNSUVp5cR-Qvw1xo2@@{hN?)>zN8PLp2}g?)^oV?D3MIQ0yo>{+(2Z#bVeoVAQG zg_I7N6>Gx=QYcY-XCp;JC_PW0Is&8R#v1>MJ3@(E=(C$Qp@z=|VB72$*zQ8aRAF^q zjr0V1qo$kW30ZAOEsy;};5mMu5Ovy+QfUBva^+ z5l%c+t5XJnxnf<|#q<#O7Y_i*fC^Mo@U^}8XfcCp3w>nam5EaYfmyLmt63vLCDIhg z%}09WY;6Q{_1%;E@lW5OyKO!JB28=+J#sX~8)tj5-HVD``GsqM>1YCT<%TdD4Sqe_ zg*^6+iLHDo>G}M^IbZZ1W`}y3#O%dKO)-8`JiufOiGaX-=G#!M2F2arbb_F1)av_#z+ABoY^tYof$d(-;5VCYhZzIFu^>oRe4AYAn&k0TSB0q+)*0(4C3s};R?L+HgsxTv ze{hIqBn^oy4>8Z;qYInq_FD!3V<0e>|HV#h|0gxaFX|ejuA>#T1p)x?pi_uOY zjnVylDThK)w~MU<7tiGU&o}_a$BK1N;M^scii*J4G~psEb2Qy*eDRk#gBEkt9hmfA z*s=Z-Gd=CLWdQK_Etf*NjkwPEC6>+j{HzY$B~{@?59h+3ezvm}jNe)wU~F9eXOF>2 zS80EOF)%bq6BNPu#sjG)rNl$b6Koy0tW{pI^=5S2T~}j<{t4>@7X?o+syB_c+b~%; z3z2{^Ld;+*8NW3F05Evx=Mev6-4ZK>mNj+Sb0pxr;Hq2MIf^V59+N*x zR1@9VYeU;R7Y=P?KVirEt6T9Eqn4h)eNTRmGkQmbu007vx;~zNdlC!aH zDb5<*ENU?Tc&ElE`##&&{?~Sx*7gAaz`mdUBWHecAyH)+5}BiY2`ZXjZ@MOk!@bTf zaK05H|2-Zb_)5D>X?pSD<*bh{z?PPgkL8MINE7%hl&6PoT#J5FQ!0zfsvk63u=e4^5Fd^0pb=%Q|Xm^v#M{}6+>-q5a7*xmq8 zPw*oa{{DPSX*sT7P2lRG2SNRRp8OFDKXE3O;D68vILlq7U4$#00008Y8rh>T@B+@Od(Aul!Mg9s{lPz-huK^`~Hd(Si z7m?hXyZ5>0238eSR3K;Xy?(#-`+k4Vr8t?^>aF1asg3%X6^sU@4*fR=;K`pwF(?O~ z9>$L=DC{m%?Hb^wi%*&@Qzy-rtlFXoDs9wG>jw=s2Sh19#6fjOJLUHdaKk0;Z3SqR z_08WXbiGX7?;{T6&vXp<={`q0u^_#L4o6uwEi0AGDvr zaq%GpPOJA(d%m5OPpP*p!02MWBJet>>iyUltOuS4%7F1e*>s<0WAO9fB6(I}PZzb$ zK5n|$y=?(T1M|Jz9n{zl7AS#M;4D}rN|5?)`Ctt=Ey`6tWk2Eb9o+wG^|l3QHs*U# z2Q_a$))Rs2SXh2jch7>>u)EO3_)6bcm6nYm$b&OrEsT31$DVVdR^|k)YXMemfx^FN_C+DKA$~qqFyFY= z6aFA4Fh;@>DA;#iNZ*aRl{rCcD!?~?17H3K^!=T|TCjO=^|9w*sSr+mz;MGQw5k%c zo&tR1SMX0$;Tt;~#Na$Jr)n$)Ed!`Kc;I)A8!n+0IYDdf>gug<{fFRzZH}lan2&>; z7PCLrmIZX z0lxVgG5hy!cX%Ph0jP+RAzOXqZaeTjxc-8cQG(Im;lnXsH^2tsPN|bj_yG7&GjRVi zEyD>$cb5-h{tibp050*N^ZwYx{Go7yq9=y;zCli~=`9Wc5AJZ7N`m=uwx4Qh;I{)6 zP(_Gp(B^{)pca4^gAK)07n16qR96V945pDpGBwPZtlqj7;NG1M8sM5l_&guHKCtbe z3UEfrbW+q(9`S2Zq`2JM`bK|Bz4l#TXNS4yD*53&6FZxPmKx316N17IXt2 z-06t>k=VY;R<}(J{5D`fFkdM++ve%lA+x9a8Djc$gOD61Nj%wx9Fv?k{5As>0cEf? zsVK(5oC_8AJ_&O!Z3$l5Tnli|P6stmZ9tsy!=jN>1J4O3h>l^wOdecCf;`SZ z;n6(mCoL=dY!qPClgY{7;Rxyy-nGrh>RIp#5Gn|KII}tdH@m<`F5ij!XcgqcB8{0LH(W+5uXGh)_0#a>OC`2%DiG%&3Lyxx{}ShbP?&%I zm9rS|Urj~$hd99m+Fp7I>p8qX!wFn0${xSgMxAXP3tN-}9L(qMaKr;r zx9=h`_cja6_rcUb=YWQod{4uf@kA=#i_D&q4a;2h+ZTx4*%)6*X}XbUrXPaQpu5_! zyDO=g{b@JD#=GH)x>FvBTx%*%*j?DDLWn7Y9-k{`9#b{44L0oQVoy`Vz;6WpMeT z7O?=Uo)okH;5G-5WY%1k5x&D*ES-~#UaZjql55NQ49kvRtn8fx2 zh%;6KXTeiaG+N$!KKb#_WqR_D8Q=Kbvsm|D#&>pcpwh?nDLsGMEwJ$}xMGeA#7ea3JNfY`QO;?h-!)1ZzTSB22C5vPjdAh5DDA%eK<3kOvT&T zbm0%K`!>G|uk;dMxilr=CzwBdi9{&w5Rt3+q?FU$1b|40D|JH*1AotzV$Hd=YHw zZh``=dJ-m{rTMqrMp~e}#06`D473MPJ&Emy7tybuIcbDHi20xRx}zRS&4N14r+Go* zb~>0i#p4gZw!^gq!&89OPlNe?0q*@Fwl0YsYas7IY_r`UXT;6ZK9u%MB{%+eqh|Kg zUej)Y#xowJkHq3V1xfM9al~VcK%+uBr#jEbvG?_8IGkYU3b1Mm6g%?_s5+(&l;oj0 z5q>6^A15D|ke?ucGr|v0@qT;q2>)g%P6}xBN(G|Ql52=L{+>F06ej@krxgfaYz);B z3@r|@dMo(7Mfyw~(~yoG7s_9^88vF!FzE!=a`J-!I(t7rzZ$vluU?Ww)#iya{pqEn zhxxjiC)yLD+@VrH;a1N|aPG!~y zFq!%h#gH$+S+NLzq?kW*Aw0SeKDEpddf*%Q@jS(~tKi#TZZ76mb`|NETqU%UWE$x? z@)D~V18uo7)xLq_Spt0=%vW%roqkop#SnW*Yj!i@JW2gtp$MhjV)jQW{HvFU@ISf4 z(Ez*}G;%QOZpXL344+-lJj@SYZKM3&Dsd<#oD?`z7$(pGR4Wy7gBNZ_6$#cH$;^2b^ow2|G0<7lSrYT98?1YrB32K{cKp~hOPjsx5^O4`aAYx zolN6W8Jm1-givZ<0zG~XI(J`$?RqAalfQO8eBxF|R0eItgV9G-bmScTXo2GD6|i=0 z`rr7mI}|P`N7W)a{P10IQx<6mlI5xc!*H0uC*wGV2JBPU74_ z4$ih0(66?qhWRs=Ich*)peml$8&6ySK?sj8P|Ugq9=S2S&-?g%MZUdEt=>o6kUWN$ zF_wCsxQYfS=`L#3zN0OHek0~rIv7yR zmRyB*jGvAx5Nr7KosLItgjx5c_j&7xctE|eAAelO(VRdZ zf%$&ejy-KZCIVZK6X_@Tl(xB2Ns}bWtUsNTp^Fn5=aU=1GZoBVJ0E7OaD;=TGLY}l z5!hoCbofQ7{jb*H(|0)@`6^t!JiTvTzw|7Kp2r!7=})#_C8_fatbq!IUwEGUdsN>~ zq1?{L=BXngVD(mox2H_~)IO}1Q=c`{w~^qzmzUG8bI{d$9(LUGshs@s9g01-S;BTH z)^s_+{^7WxIhze9n0CkS(S=D6D{NB27RA{^0!rd5#bO5oVTDcIPVwJ&!k$K%lId|s{HlUN?%0@ryk!Oi{%-wGj??F>R5`(>6%%3LWt#(aGU^KnwQ@8{r*`dQ>peK8fxFMU<P9zrdg;N@=1GsTp!uEIEDTFU)A%1iJzZ=0+^Zg#))D6@xI3k zAoQVLPl81$#|btq?V{eOP;*jTd${st)W(^e0+<>S)6a|hp*3{=p-jc=8?o@OULuK| zD{qzXE=g~IHc2CjK0(YM3MVi^XzMY2YLR2@?dfuYO^e!Lpe6$@V#)P;IvY-qsRH=z z;Kxv}K`nxJnG&2nkQ(NH>P|;kme_vmHz{0wlrltlfuGbl!JQ>+HN*xoYButu>~3s9 zKn0>s$>*1Q^YrUlYMB4YC6dzBgNYsg#QgjbbApDX#%E-ZJJ|g7JgOe!G!*QyyOCR3 z0aQ`)(q~k2betKE*zC`|JvsS@VZO~D^7D<~WCc)Sn!}v9h%=TaoZ!whIYB_JY8bFm z>66J<-1A$9c5)TVNL48=iZI-Ov}&KZ-={jx@b@Wo>0Wu8BkT~iuUhcJh`ff!<|$@% z!y}8*``zjD45~w?Ke;l^I6xFazJW~SYJ-ltN9~mKgg^a(MMOo(ZrOzNwc4sWn9=Q0 z6+XcFWgfPc2?nI60NRuGXxjzwp@Ebikt9Xx+xSAm(p*|8$^_bLivu=e|OeW z*sxHywgPw-@Fjbu#=$+?()C+rEr-W$RpblFo443BaR+p`+xY&?%hLVs74XO%aCvu& zTL2q?txIF5lqYLeZcdN6JaRjH<}P^bYl>n{NRic2=wTQgPGF3b$6E{S{@3W4_w`hN z|Ek6CmscvLEp}O5jG65*(q)gko=I;&P|qzea|t{)S5Yd8t4Uiz2Sz~wQ~Pkz@p&Hw$eC1+&<%9v6Bnq&I!}(fRP%=dAom`LM;YtM22)@o|M{r%fv#v}bzjN6$^GQ^)+awj!@k#|y!W#HEg-q;_(w zae$*~ve#bb?q~L=2M4z&oM4`!lt%_pmmsIIF_|g=TX%GpzC_P$-%9=Dm)pv`R;d!$ zY{u1(ssdO94!o$7dw#kneNHe}kt;|lxLVJK6S&aPIqr+}-1^^A$NZw|1^>#1{sw)u*{mu}*;Ie~MIj`A1j`Px6He)5ZIJg=Jl zg83DxJ23TTDL^vBQEQ3jDVNRZv06r*X(!K$gVR{~lUGvZ1krMMY_cZj5-u=8PGDlm zk(kKQUie4W-jc5HuUZU+{OP=AccWuzSkWbUu9pP__`)Z&miUFsp_!0>h|oIXP>58V zlmD?9nBaH3le?e!W2&6s>fbp!pVyRKCSb zfzIl8@RY-n%${-Ca)Kb?1Oy6KI-C2R`hBXLVEf(h;{}R9LB2G6PT-uQqxdCyZu#fb zPkuq4!|V1%$jRLT+H2B8bsv;-MAh%G{*Esk=>`15rPpwpTSKg!jDPVDGn*!TC2&b^ zfU=;p!l_BzyY;#B;{@{*fst=8Bsm0k>=8G{2v;$oqoeIQ*4~yb+rMhDA|Fhm*X)v> zg-9A?24^E=A#f8PYVUVAlwHGyh1VS04gA8C*-U7Ah}a|}N|V{Y$|v(!yDKRa@8SNZ zpG`eZ@c05nQOkyVg@lYAW5cxuS9NrCUC$#oeJk~o-&T4LduzW(xh7qiV`bi;Ojva& z^AJyT&prYbj`+;e(qU_n+Ff~1L_}S$G3s)`@o>L!y zT<(p;&>BZa@dkQsO*y=~L{ae0qc?u`py%x}g4Uynmi55%9X5K1_4BVCS|I3}Dc90j zT_c>pHs@uX1HS?NwhQgQl%M|(OB=*ZugzVKHl3i^C@yJsPgdk9gI zLT(D?L6wEn?Hfz|p zc=nqFg5G3ZGi5gKEImvVJ5-ps5y4^8Jw~$HrmhHb$!(e=!T<@*RF#`POjFm) zMet~M`oBACg`(i5u-pAkOmPEr(3}CAE}5lo8{cE&lFtuO3d2|rZTlXtna`q>!gQ4+$C$E|EIo?s~AuaI4aOH-lQ7@nP~i{Ruz2Qhf8oSX>2KaQlX11j3A7W_Glc4I<%voB z%Scl^`y>+n3Pr&?pWSSO&A-}KUXd_!goctSg_Bo9GynNs}?JA-g)%KJEXM2Bv#ImNgcmC z3~r49XB^tBW7E$}fx;uUilu?5e_B(SiacnBKiOjg|cB@K^pa zJ>gGZ0A_C)_VnR<5@8DhsPsOEZcJk45|#PMFZk!s%kL$?lLUE86Jq;DiL$H4mNbN) zo&`7G9QZ(WKxh{$yAzYAmviZe2aL;=3~1?#&1A~jS={iWAD`y?-gALP~x)5ZL0 zH-oMh(G#ke=#AaMgM+kk0Tioe5&JK*c0rmaA4-J@^bY(h@3PH7f<2&P(zbS^Iicl%NrT7d_3!Wf!OYgzTczX$gP&0*L<@P>bu5K(fFwCTlB_ z((?dn15nMsf^M9~%q1f~`9*&`ud3Iik|&w78#keb&m@Yiqu-)S7iaN^7Mrqg49tJ+ ze|h95Ct*e}nLl}qeio%9UF|G*IZ49QCcKVs#_^dG9NBW!VhFrWUX6B3ljC4$*Jd-I z!Vad|lbgbw1#PzB6{fO&9&arLn07OSE8xuQV!1(dn6K)T+-6=c?nRppu3kL+lRs`; znSIfIxpCt__TTK;q?aL(;hKTkjx`ssetu?;Y)u82c8gr0UR*Bo00*x=8J-4+RjAdV z-gW?`+PLbrVPJk-jL<5wrh^uRH1u88LgbpFd)JMegX0V!4~pZ}{LF9-RxHUIzcRNAb=s zOJF66>E}jX_c)Z7(jL?!(9t%$!UfF~ers5OX-gB#U+OS5>Do~?{d~GYLaTufjRB~a zVw^AE|HFCk&JHW_g+N$%SZM<0+hnX>^jo}A(}mwU7U1Lm)nTd<|^!12|{Czv1i>(!xftFleF zxfAIKY8X)AFW9u~FGhRYTgMA{V*X_iZoqGF@Dj^re16n`QZA$R?4y=3NhMFTr4@wV zdT{`NkKO#QFz&Ah^{piQ)>Ht1^>@y|*&oU!eYvFNslnJ>0T}BrwRIyc;C$;S z0KgLqW}@OAyt+GBcQ@9SF-g-#^f;TAeWDd#(QD}q-1XD%a?XdRpiA$=X(c^~3h~*) z7UTqjUiDzFq;h!nhpb<8RjY2X*Yc<6g)QIX+z-7EotsRoloW(CWQg);jEH|z(ih7O z>@rMauvhOht-QUhuK)nMe)ca+y6ikKQ&0sZwQ{EQoEW8(ck&#z_I=hb{tvCbwPQm8 z0CsKqKb-r~ccaaP7_Fp0q{S4#8WBFx_t>!bKaPcM9XkpDum7hJ{_L@E>Cp-%~;vev84b2FZ{HJb3Zf@ox6y5FjhQDoWMp&+B%uW z<(Y?B*Zp^6X*K2Y|1rST{D3d;XHYzt2lQAbS4I%l~2i)N7-D}74_Kkf70NC}@N15~& z=b)Jig(PmA!42bHAa#O4(P6?htY3KTSl_ynLjeR1)-vg%6Tw`B)k-F2rVIhjg3dXt z`3@Tv%sv^m?c`B_K_xhM`nmY|3$a5fCsM=s2XMXv`!MV0Uvsi-*~z5<0J}E!F!9n! qs9@@_n-d4fM6|&@}e1fEj6L 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 F{{sVMLu>#5 literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rock-closed.png b/extensions/chromium/assets/icons/rock-closed.png new file mode 100755 index 0000000000000000000000000000000000000000..e640b2984d10d5d89fcd9b2d392121357b8ac522 GIT binary patch literal 4969 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rock-goat-red.png b/extensions/chromium/assets/icons/rock-goat-red.png new file mode 100755 index 0000000000000000000000000000000000000000..5f88a43b58868d21970e89786714a2423f30b698 GIT binary patch literal 5467 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 R*be{z002ovPDHLkV1gJnU}^vW literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rock-goat.png b/extensions/chromium/assets/icons/rock-goat.png new file mode 100755 index 0000000000000000000000000000000000000000..d8292c63c29fead26101b63b006bd9b57a04a706 GIT binary patch literal 5092 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 FV1oY8%qRc= literal 0 HcmV?d00001 diff --git a/extensions/chromium/assets/icons/rock5.png b/extensions/chromium/assets/icons/rock5.png new file mode 100755 index 0000000000000000000000000000000000000000..1dd16216ef870815ce84bf3c2bf4d2737ae84f35 GIT binary patch literal 2514 zcmV;@2`%=CP)WFU8GbZ8()Nlj2>E@cM*00}lpL_t(|+U;F!NK@?_ zzwXVK=csd2Oy}n2axR-wXVcg;w@GQfkRP4UhafmD{uJfIAbTkO9qYs6m#DyR6-ZDJ z)E|2x2qJv!!$#1*$&*A`A`%jrQ6I{n-2HrL6YH5TJKJ&R%BCDh|t*BNFF_UWY5aVI&QPsXl`yUmC0nZqN0KVz;TY_9DoondU|>|g+f6AU|Dgw zTtU>72+`5eF$MskmBk@)pJ8 z@!*`8Y&11B4aC^{7NxSX(vKQUGR$VPpAUHeKpBRi8(n`g5qtyhVQ_wa9+1E!*?tsqWoCBUe7BEvqVw`k@Zl9VfyOp z>#0(yq?wtS)ND3W0O&h$;)DYU6fxGa9_n;DgGitVA=&lNjZPrn^-!D57DNI?0>0~^ z-QC>|v_g}NrlzKW+1XiM4e|N&=YJxBNygmVoErdmxd^Xby=q1RlMmjm!Pl=}(UDI! z;$06#0woS45D7#efe0iJ2}B@)2qX}J1R{Y5BoKiFB9OocbUGaY0BCJ(9RL6>B3)fw z0{}mgiLfc~#CojA8;wRTyqECTw1rS!ULLKhtK(9#{^!r1CsMA!ojZ4$0U!XY=bMCz zii*Z0O<;F-x1+kc+HW?SsmWxb?d|Op0QydzJm~-c@cDd1Y6NCvWCUU;C#2Kq#w1B# zU0q#prGGM;&9t+#lM{kSAqZ@2Y$P_Djf2?t-iP+=*~76cOC&>Jc>G^eKBCEFqB@<< zDuo`HmzT$@yv>_8$DCj^I5_C=dcEA4GiL@OzeP)r7o`40MMW_`q*kl_ckkY{C&GFY zf7BJD)93Vk9v9d{k()+L-lYG#a@`Fd^af zcez~gDv%OFXhA^%ZES3;Q7V-r6$xZnmgx0*K9(&_OG~4pqoZ~~>d!FD@puW0h+HnG z8jZ%9sy)zTGVw0cXf$#{)L%9-GBT1VmtbLG0cK`qf=7=YP05o4CnhF%KbxPQ-zG>f z+itf93 zTYCj+8)R~FQi?rM{6qWFKW^N(5ilB!0U=3rxm-x1Py_-1oH})?H$6RFsP~c4(b1H$ zPLqv)*|sGmB_tywm8Mp!{iq-b6F4+9WDn<4qKH)FD-k#`F)>qCRtD44({2F` z8bl(k&}fj$<$;BT1v{!s0)AjLuq@k)s**T%?%WxKI8yacgpru$HG{!Gr>3T`HA`&> zjrfM&zkjbql}Q{`RaH2YN_7a0prD|DzJLE7TeAotkM)7Jwl-omn_+x>9DPG6BR@Ys zfJ2zbLuo7F%9Se^W)piTZ6&;X`4YoyQVFH41cqS(^Yil`sJXRoNGVvIJxZjZ1^+5iJ{*rzS?Xzdka43y&_-txw`b#ul!?G+f z7z{X+u2G7Mi^b_fJDpA(O4o2epkA-%JRXlYM=Y64h7SG;622+zXPt?Oz+=ab9c35> zXSrqOKBZFG-_Xz?UVFh}v5@`y_j5RuM!mC9I`Lzt(>aDD{yg_}cXx|-?u&-(>};G5 z!xGMPmlkf{zHQIR$-$ttLP3XyhL%l5k&BhUsi~m zNV5VJ6%`wGJ`9C(YEuFMLdb?9FFQLsb?(*}9v-$A6clWXOlv}D_@>Y`K`sRXL!r>j z!otG;K7IQ1pKss3rSzPq)oS7T_3KuP#q#d{{rju_zhsO9i^W1zDpmE-E|hh6zZeH|lgc|M2jzy{)YcQ%RO$$BrFb*uW7Zk)iVPa#~VSg1v4z zL>4;@27{Q03>6m_)7siv4&cYRa>&#giPY=$oKB}p8j&WGiPqHAZ~#9x_8>DcBBC^} z*E?V`nf&3yhlC_E#4rrCTCM(r2M;>1#|Z$h*E;|JeP*+HQR(pz1^_f%R^O2$M+Q*C z>j0Kz7kkB_Lx%dcg|xJ^lscVG3IN9y3I%ug@Zo`I cWv(aw0TMcu!rdy=`Tzg`07*qoM6N<$f;#z+CIA2c literal 0 HcmV?d00001 diff --git a/extensions/chromium/antizapret-chrome-extension/unlock.ico b/extensions/chromium/assets/icons/unlock.ico similarity index 100% rename from extensions/chromium/antizapret-chrome-extension/unlock.ico rename to extensions/chromium/assets/icons/unlock.ico diff --git a/extensions/chromium/antizapret-chrome-extension/unlock.png b/extensions/chromium/assets/icons/unlock.png similarity index 100% rename from extensions/chromium/antizapret-chrome-extension/unlock.png rename to extensions/chromium/assets/icons/unlock.png diff --git a/extensions/chromium/assets/icons/warn.png b/extensions/chromium/assets/icons/warn.png new file mode 100755 index 0000000000000000000000000000000000000000..fb96ce3a6cb55aa0682aa90b1f6b860e7af2bb40 GIT binary patch literal 7224 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 {}; + return chrome.browserAction.setIcon( + { path: this.ifEnabled ? './assets/icons/rkn.png' : './assets/icons/rkn-disabled.png' }, + cb + ); + }, + + disable: function(cb) { + var cb = cb || () => {}; + + if(!this.ifEnabled) + return cb(); + + this.checkForUpdates( (err, res) => { + if (err) return cb(err); + this.applyPac(); + this.ifEnabled = false; + this.persistToStorage(); + return this.updateIcon(cb); + }); + + }, + + enable: function(cb) { + var cb = cb || () => {}; + + return chrome.proxy.settings.clear({/*All*/}, () => { + this.ifEnabled = true; + this.persistToStorage(); + return this.updateIcon(cb); + }); + + }, + + switch: function(cb) { + var cb = cb || () => {}; + return this.ifEnabled ? this.disable(cb) : this.enable(cb); + }, + + persistToStorage: function(cb) { + var cb = cb || () => {}; + var storage = {}; + storage[this.version] = JSON.stringify(this); + chrome.storage.local.set(storage, cb); + }, + syncWithStorage: function(cb) { + var cb = cb || () => {}; + chrome.storage.local.get( + this.version, + object => { + if (!Object.keys(object).length) + return this.persistToStorage(cb); + + var self = JSON.parse(object[this.version]); + + for(var key of Object.keys(self)) + this[key] = self[key]; + + return cb(this); + } + ); + }, + + install: function() { + chrome.storage.local.clear(); + this.disable(); + }, + rescheduleUpdate: function(period) { var checkNewBlocked = 'Check for new blocked sites'; var period = period || this.updatePeriodInMinutes; - chrome.alarms.clearAll( (ifWasCleared) => { + chrome.alarms.clearAll( ifWasCleared => { chrome.alarms.create(checkNewBlocked, { delayInMinutes: period }); chrome.alarms.onAlarm.addListener( alarm => { - if (alarm.name === checkNewBlocked) + if (alarm.name === checkNewBlocked) { this.checkForUpdate(); + } }); }); }, checkForUpdates: function(url, cb) { - if (!url) + if (!url || !cb) return this._useTheMirrorsLuke(this.checkForUpdates, url, cb); var req = new XMLHttpRequest(); @@ -37,7 +111,7 @@ var Antizapret = { return cb(req.status); var date = Date.parse(req.getResponseHeader('Date')); - if (date > this.lastUpdate) + if (date > Date.parse(this.lastUpdate)) return this.update(url, cb); return cb(null); @@ -46,21 +120,28 @@ var Antizapret = { }, update: function(url, cb) { - if (!url) + if (!url || !cb) return this._useTheMirrorsLuke(this.update, url, cb); var req = new XMLHttpRequest(); req.open('GET', url, true); req.onload = event => { - this.lastUpdate = Date.now(); - this.applyCsv( req.responseText ); + this.lastUpdate = (new Date()).toString(); + this.generatePacFromCsv(req.responseText); + this.persistToStorage(); this.rescheduleUpdate(); return cb(null, req.responseText); }; req.send(null); }, - applyCsv: function(csv) { - var pac = generatePac(csv); + generatePacFromCsv: function(csv) { + this.pac = chrome.extension.getBackgroundPage().generatePac(csv); + return this.pac; + }, + applyPac: function(pac) { + + var pac = pac || this.pac; + var config = { mode: 'pac_script', pacScript: { @@ -102,15 +183,18 @@ var Antizapret = { } }; +chrome.storage.local.clear(); +RKN.syncWithStorage( () => RKN.updateIcon() ); + chrome.runtime.onInstalled.addListener( details => { switch(details.reason) { case 'install': case 'update': - Antizapret.checkForUpdates() + RKN.install(); } }); -chrome.browserAction.onClicked.addListener( tab => Antizapret.checkForUpdates() ); +chrome.browserAction.onClicked.addListener( tab => {alert('!!');} ); //==============GENERATE-PACS.JS============================ diff --git a/extensions/chromium/antizapret-chrome-extension/manifest.json b/extensions/chromium/manifest.json similarity index 54% rename from extensions/chromium/antizapret-chrome-extension/manifest.json rename to extensions/chromium/manifest.json index 9d4c6a0..5f3f18f 100755 --- a/extensions/chromium/antizapret-chrome-extension/manifest.json +++ b/extensions/chromium/manifest.json @@ -1,14 +1,10 @@ { "manifest_version": 2, - "name": "Антизапрет", - "description": "Безопасный Интернет от РосКомНадзор.", + "name": "РосКомНадзор", + "description": "Безопасный Интернет от РосКомНадзор с возможностью отказаться.", "version": "0.1", - "browser_action": { - "default_icon": "unlock.png", - "default_title": "Обсуждай на https://reddit.com/r/ru" - }, "permissions": [ "proxy", "storage", @@ -18,14 +14,19 @@ "https://*/", "ftp://*/" ], - "icons": { "16": "unlock.ico", - "128": "unlock.png" }, + "icons": { + "128": "./assets/icons/rkn.png" + }, "background": { "scripts": ["background.js"], "persistent": false }, + "browser_action": { + "default_popup": "./pages/popup.html" + }, + "options_page": "./pages/options.html", "author": "ilyaigpetrov@gmail.com", - "homepage_url": "https://github.com/ilyaigpetrov/antizapret-chrome-extension", + "homepage_url": "https://github.com/ilyaigpetrov/consorship-free", "short_name": "Антизапрет" } diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js new file mode 100755 index 0000000..153a788 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/lang.js @@ -0,0 +1,45 @@ +nl.drew.cp.lang.s['en'] = { + "msgOn":"on", + "msgOff":"off", + + "allSites":"All Sites", + "thisSite":"This Site", + "listsTab":"Lists Sites", + "userProTab":"User proxys", + + "proxyEnabled": "Proxy enabled for all sites", + "anonymityEnabled": "Enable anonymity for all sites", + "locationForAll": "Use proxy location for all sites:", + "torForAll": "TOR for all sites", + "notUseProxy":"Not use proxy for this site", + "alwUseProxy":"Always use proxy for this site", + "anonForSite":"Enable anonymity for this site", + "locSite":"Use proxy location for this site:", + "torForSite": "TOR for this site", + "setHttp":"Use proxy for https traffic", + "setHelp":"Tips enable", + + "proxyOff": "proxy off for this site", + "proxyEnabledHelp": "if you disable this option, you will have access to all proxies, not just public and increases speed", + "anonymityEnabledHelp": "Anonymity allows you to hide your IP, but it also imposes some restrictions. Some sites may block the access because of anonymity.", + "locationForAllHelp": "If possible, the proxy will be chosen this country", + + "notUseProxyHelp":"even if proxy is enabled for all sites", + "alwUseProxyHelp":"even if proxy is disabled for all sites", + "anonForSiteHelp":"only for this site", + "locSiteHelp":"", + "torAllHelp":"send all traffic through TOR", + "torSiteHelp":"send site traffic through TOR", + + "EmptyURL":"Empty URL", + "WrongURLformat":"Wrong URL format", + "WrongURLprotocol":"Wrong URL protocol", + "ThisURLalreadyadded":"This URL already added", + "Nooptionschanged":"No options changed", + + "interfaceLanguage":"Interface language", + + "uProxyNameFormat": "Wrong format of the list name. Must consist of letters, digits and _-", + "uProxyNameAlreadyHave": "Already there is the proxy named ", + "errUproxyIpFormat": "Proxy is defined as IP:PORT, for example: 127.0.0.1:443 or proxyname.example:1080" +} \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json new file mode 100755 index 0000000..dbe6789 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/en/messages.json @@ -0,0 +1,11 @@ +{ + "chrome_extension_name": { + "message": "Proxy for Chrome" + }, + "chrome_extension_description": { + "message": "Free proxy servers for you" + }, + "browser_action_title": { + "message": "on/off" + } +} \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js new file mode 100755 index 0000000..dd48164 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/lang.js @@ -0,0 +1,45 @@ +nl.drew.cp.lang.s['ru'] = { + "msgOn":"вкл", + "msgOff":"выкл", + + "allSites":"Все сайты", + "thisSite":"Текущий сайт", + "listsTab":"Списки сайтов", + "userProTab":"Мои прокси", + + "proxyOff": "прокси выкл. для этого сайта", + "proxyEnabled": "Вкл. прокси для всех сайтов", + "anonymityEnabled": "Вкл. анонимность для всех сайтов", + "locationForAll": "Для всех сайтов использовать локацию:", + "torForAll": "Все сайты через TOR", + + "notUseProxy":"Для этого сайта не использовать прокси", + "alwUseProxy":"Всегда использовать прокси для этого сайта", + "anonForSite":"Вкл. анонимность для этого сайта", + "locSite":"Для этого сайта использовать локацию:", + "torForSite": "Этот сайт через TOR", + "setHttp":"Использовать прокси для https протокола", + "setHelp":"Включить подсказки", + + "locationForAllHelp": "По возможности будет выбран прокси этой страны", + "proxyEnabledHelp": "если отключить эту опцию, то будут доступны все прокси, а не только общественные, что может значительно увеличить скорость", + "anonymityEnabledHelp": "Анонимность позволяет скрыть свой IP, но одновременно накладывает некоторые ограничения. Некоторые сайты могут прекратить ваш доступ из-за анонимности.", + "notUseProxyHelp":"даже если прокси включен для всех сайтов", + "alwUseProxyHelp":"даже если прокси отключен для всех сайтов", + "anonForSiteHelp":"только для этого сайта", + "locSiteHelp":"", + "torAllHelp":"направить весь трафик через шлюз tor", + "torSiteHelp":"использовать tor для доступа к этому сайту", + + "EmptyURL":"Поле URL пустое", + "WrongURLformat":"Неправильный формать URL", + "WrongURLprotocol":"Неправильный протокол URL", + "ThisURLalreadyadded":"Этот адрес уже добавлен", + "Nooptionschanged":"Нет измененных опций", + + "interfaceLanguage":"Язык интерфейса", + + "errUProxyNameFormat": "Имя прокси должно состоять из букв, цифр, тире и знака подчеркивания. От 3 до 9 символов", + "errUProxyNameAlreadyHave": "Уже есть прокси с именем ", + "errUproxyIpFormat": "Прокси задается в виде IP:PORT, например 127.0.0.1:443 или proxyname.example:1080" +} \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json new file mode 100755 index 0000000..28d6810 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_locales/ru/messages.json @@ -0,0 +1,11 @@ +{ + "chrome_extension_name": { + "message": "Proxy for Chrome" + }, + "chrome_extension_description": { + "message": "Бесплатные прокси сервера для вашего браузера" + }, + "browser_action_title": { + "message": "babyList - вкл/выкл" + } +} \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json new file mode 100755 index 0000000..16ad263 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/_metadata/verified_contents.json @@ -0,0 +1 @@ +[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJfbG9jYWxlcy9lbi9sYW5nLmpzIiwicm9vdF9oYXNoIjoia1FQTTkzYk1VR1ZKbGh1TV9sSE91UVVMM2dScHVTRUZBREZfMnJLRWxINCJ9LHsiY2Fub25pY2FsX2pzb25fcm9vdF9oYXNoIjoieTRVanJxbG5LcUhOcDdzbGxGNjlmNmItSWFGZEFyRDV5SDRVZGRWdG1fRSIsInBhdGgiOiJfbG9jYWxlcy9lbi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoiWm5LRmlJWmlYV3AxQ3pjQ0NpMU1kV3BDbDQzeFpJOWlIQzFnWktLZkNoayJ9LHsicGF0aCI6Il9sb2NhbGVzL3J1L2xhbmcuanMiLCJyb290X2hhc2giOiJId1U4MmdDcFd6M1FPZ21jV2hoOE9obnA4bVdpT2J3Z0ZDLXFjcEVoVDhnIn0seyJjYW5vbmljYWxfanNvbl9yb290X2hhc2giOiI0azRzOE0xcWYtRmtQN2QyNDB1VzB2TE9FNFNPYnJGdVNNMXI3OFlRZDRNIiwicGF0aCI6Il9sb2NhbGVzL3J1L21lc3NhZ2VzLmpzb24iLCJyb290X2hhc2giOiJhdDItNFVsNk5zWjRTazhvams2NlNacEktMnpidkctLW11UnE1YnRwVmd3In0seyJwYXRoIjoiYmFja2dyb3VuZC5odG1sIiwicm9vdF9oYXNoIjoiYklzWHMyaTBJZGNZS2o0UW5BLWo1R040Ymh0STk2SzhVa2NOLVRpSGRvYyJ9LHsicGF0aCI6ImNzcy9tYWluLmNzcyIsInJvb3RfaGFzaCI6IkdQT3BVTDk4eFd0dWZraGpZWjljNzRLX3lTUjc3dE80Wk1jQnM4Q2tyQ00ifSx7InBhdGgiOiJjc3Mvbm90aWZ5LmFsbW9zdC1mbGF0LmNzcyIsInJvb3RfaGFzaCI6IjNoNmRGYlNsNVFKR2RLYVVuYUQ0X0NUekpMdENMdGs2Y0dGNU5sV1YzelkifSx7InBhdGgiOiJjc3Mvc3dpdGNoZXIuY3NzIiwicm9vdF9oYXNoIjoieHREWmZFOVByVEFjeGdVTEx3Q2xQNWhZYTAyeEIxVGw0NGN3aDJtYndTSSJ9LHsicGF0aCI6ImNzcy91aWtpdC5hbG1vc3QtZmxhdC5jc3MiLCJyb290X2hhc2giOiIzSHQtU0E4VlQ2cUtMZWdNQWI0WFVCWEpSZTJZeHpIQ0hGVXpFYWIzaDcwIn0seyJwYXRoIjoiZm9udHMvT3BlblNhbnMtQm9sZC53b2ZmIiwicm9vdF9oYXNoIjoibkpycUhGeHZNWUhmVG0xWkNoOEdkZ1I3SkV1X0UtRHdsREQyOVdrUHFHTSJ9LHsicGF0aCI6ImZvbnRzL09wZW5TYW5zLUNvbmRlbnNlZEJvbGQud29mZiIsInJvb3RfaGFzaCI6InB6MmRrV0pMdGYyUzdnTkU1cG4zUUF3ckU4UThOWjZwcUV1dHlGOVdYUzQifSx7InBhdGgiOiJmb250cy9PcGVuU2Fucy1Db25kZW5zZWRMaWdodC53b2ZmIiwicm9vdF9oYXNoIjoiUzlKZE10N3hfcjdaR0swVnN2NTBVN3BEX21adnhZYWN2ZW92a3hUdmJYRSJ9LHsicGF0aCI6ImZvbnRzL09wZW5TYW5zLUxpZ2h0LndvZmYiLCJyb290X2hhc2giOiJWVDFWRjB2MnBkSzlJZEF0a2t4eF91TlNGVTZyM0Z2d1ozSl94OWQzN1ljIn0seyJwYXRoIjoiZm9udHMvT3BlblNhbnMud29mZiIsInJvb3RfaGFzaCI6ImxpNFB2bmx4eDZySVRPRlRwUklPRFVUa0lLQWZWZjNqeU0wdjRiTG02VzAifSx7InBhdGgiOiJmb250cy9mb250YXdlc29tZS13ZWJmb250LndvZmYiLCJyb290X2hhc2giOiJsRHJud3Z0ekxRR0Zta0IxUjNKUkF1ajhoZHpjUWlTcWl3NEFhZUNwckc4In0seyJwYXRoIjoiaW0vY28vYmUucG5nIiwicm9vdF9oYXNoIjoib3JUM1AyZF9ZLTBaVUNlamxrdDZBaGZVTmM5UlBEWm9xVjh5YmhhaG9lZyJ9LHsicGF0aCI6ImltL2NvL2JnLnBuZyIsInJvb3RfaGFzaCI6InJkUURkY08ydUtIWnhuT25kUWhfZGpZNk9tRGRCOGhDZ3FFWUJuX0JzY3cifSx7InBhdGgiOiJpbS9jby9jaC5wbmciLCJyb290X2hhc2giOiJybjBmMDA4VHVfUFlSN3ItTlhIdWxBck9ZVVkwbUF2SXM2SXJqSEMzdG9rIn0seyJwYXRoIjoiaW0vY28vY24ucG5nIiwicm9vdF9oYXNoIjoiTDRiMWRscldqZ09qTG1ld1JhUjBNU3hid0w2LXowTkZZR05fc04ybjlOMCJ9LHsicGF0aCI6ImltL2NvL2N6LnBuZyIsInJvb3RfaGFzaCI6IjFOVWZkeDlQZUdBcGFtV3FkQjdWenlTVHBBVWdFNWt1S29uUk1tS0t0c0kifSx7InBhdGgiOiJpbS9jby9kZS5wbmciLCJyb290X2hhc2giOiI2eVN4OFJnakZQd0JQWkJzNnpyNDM2czFjcHBEMXFjSWtHemdBOWh1clRvIn0seyJwYXRoIjoiaW0vY28vZGsucG5nIiwicm9vdF9oYXNoIjoid2lLQmRGRUhIUFQtaG5zS0EwZFpNQmVOWmhYUDNIam5yNWs5SWpQZGZtMCJ9LHsicGF0aCI6ImltL2NvL2VlLnBuZyIsInJvb3RfaGFzaCI6Im5xSWZhNFA5TURic3dGZ2dNMWtCeVNTc25BMy1zZ19BaUo1SHNQREpycGcifSx7InBhdGgiOiJpbS9jby9lcnIucG5nIiwicm9vdF9oYXNoIjoiMkdoaTcwbmgzVTB0dzZoZ3dzZHhjc1lFRFMxSFE5aXBZdWJkbnNDX2RWTSJ9LHsicGF0aCI6ImltL2NvL2VzLnBuZyIsInJvb3RfaGFzaCI6IkZVbzdhSjgzc3dnWVplc3VQdTRuTUlPQlpfbXVwWXA2ZGxCMUhYS1hqU3MifSx7InBhdGgiOiJpbS9jby9ldS5wbmciLCJyb290X2hhc2giOiJwNXFsMDNVcTRwbkFlMDVTeFEtbzR4SFNuZVJYbTVMWm1qdWdkc2RBTHE0In0seyJwYXRoIjoiaW0vY28vZmkucG5nIiwicm9vdF9oYXNoIjoiVWRoeFVtLUw3a3JkWjNqQm93NC03TmxheE1LcDJDVjZQaFFDQXA4bjl1NCJ9LHsicGF0aCI6ImltL2NvL2ZyLnBuZyIsInJvb3RfaGFzaCI6IjU5ZXBQbndDVlZ2MU1KVVFBanRPYVgyVUtTaDJWTnhpZXYtNW1UZHdvYzQifSx7InBhdGgiOiJpbS9jby9nb29nbGUucG5nIiwicm9vdF9oYXNoIjoiTnlWclp3UzZvM1cxTjA5bGlvQXpoQzhXWFhfWThMdGlsRmFpNUc1YnFjcyJ9LHsicGF0aCI6ImltL2NvL2dvb2dsZTY0LnBuZyIsInJvb3RfaGFzaCI6IjZqNVBQZFVsN1ZFU2txRXdxS3dBVW0xdkVCdWRxSm1GVTFVUGxhLVBLbE0ifSx7InBhdGgiOiJpbS9jby9pZS5wbmciLCJyb290X2hhc2giOiJvNlU3UzZsRTVEWXM2Wm1JQWxkaVYxZUZveTR1SVdVTDdoVXROYmRkejhJIn0seyJwYXRoIjoiaW0vY28vaXQucG5nIiwicm9vdF9oYXNoIjoicGROb1daRkJXM2s5NFlkNEFRV20ySkFYLWxvWFgxRENSd1ZMZUFNTmhoWSJ9LHsicGF0aCI6ImltL2NvL2x0LnBuZyIsInJvb3RfaGFzaCI6Im1vWDZkZ1pRWE44dGVoYllaOWdJdnhwVk9GV1NReVRfWTNzUW5Bdzl2a2MifSx7InBhdGgiOiJpbS9jby9ubC5wbmciLCJyb290X2hhc2giOiJENm9xQXJsWGFyRlR6U211ZVF3b0xxdXpWclJZWkF3dHJqYjNhUmg3TTlnIn0seyJwYXRoIjoiaW0vY28vcC5wbmciLCJyb290X2hhc2giOiJ3U0FYc2dua1BoS3hYN3VIVVlWVnFRV1FTR3A2OG9uYlNNUTl1VWdSSUtJIn0seyJwYXRoIjoiaW0vY28vcGwucG5nIiwicm9vdF9oYXNoIjoiSzBicm5lS3d2Zk5uMVQ3a1BGZURXbV80YTFBTl9FYlVscjUzUHQtMTNtZyJ9LHsicGF0aCI6ImltL2NvL3Byb3h5LnBuZyIsInJvb3RfaGFzaCI6IlAzQ2t0ZEV1eEl0dHczQU9zYnp1LUdQc0FfM05oRWs1Rk91VFMzVWVKZ2cifSx7InBhdGgiOiJpbS9jby9wdC5wbmciLCJyb290X2hhc2giOiJjUzhQVGM1OC1pWFAwbUdEeGZjWm1qb0MyY1FRNDNwLXlZZzc4aXdsT0RVIn0seyJwYXRoIjoiaW0vY28vcnUucG5nIiwicm9vdF9oYXNoIjoic0VDMndsVDNJZF9uVzlNNXJlTVlJRFNwdUlkRElsRm1YdXlrV095U2RZVSJ9LHsicGF0aCI6ImltL2NvL3NlLnBuZyIsInJvb3RfaGFzaCI6IlBLQS02V3hHaFJhaUxoMnNTXzBfSmdRYzlNTFBiNnVBQnVxYXRqWFF4aGMifSx7InBhdGgiOiJpbS9jby90b3IucG5nIiwicm9vdF9oYXNoIjoiUHExVnVJVm9HcUpsYVBMcHpfS0pyWWFKaTlPZHExV0lsU0UtSlExLXEyNCJ9LHsicGF0aCI6ImltL2NvL3VhLnBuZyIsInJvb3RfaGFzaCI6IktkQ2Z1Wm5PRXlsRl9RZFdyMGdNS2xrN1dtU0hMR3BsUXFEbHBzcWVQMDAifSx7InBhdGgiOiJpbS9jby91ay5wbmciLCJyb290X2hhc2giOiJ4cXFFemoxREZ6WFFVdDN5MUdxTF9PMExOZUQxcVNiMnN2XzRLaTNtYm13In0seyJwYXRoIjoiaW0vY28vdW5rbm93bi5wbmciLCJyb290X2hhc2giOiItQ2FZOVY4NnBoLThsUG1YS1c2QldpdTN4M0ZQanc1X0ZENU9Rb3JHSE93In0seyJwYXRoIjoiaW0vY28vdXMucG5nIiwicm9vdF9oYXNoIjoiTFl1ZFVwZXZ5Zks4UkdXRHNqUVlzeU9OUjFjZFZ6ZG9kMGlmNmdhTk1SUSJ9LHsicGF0aCI6ImltL2NvL3VzZXIucG5nIiwicm9vdF9oYXNoIjoiY0kyb05Nb0VHMXpWM2lWOTNlalNWaGphaktZRjg2VXV1dXd0Z2hYQ1lhRSJ9LHsicGF0aCI6ImltL2dvb2dsZS5wbmciLCJyb290X2hhc2giOiI5SFBwcTdQMmFEUWd0Qm13R0VKdVZrSm9xTlhOamwxRnVXU2lCSGMwVzVjIn0seyJwYXRoIjoiaW0vaGlkZS5wbmciLCJyb290X2hhc2giOiJpeTBTY0l2QkUwWmllZTQwWVBpSXAxUEJiSVIzNFhqaFdnOWs4TnA0QXc0In0seyJwYXRoIjoiaW0vaWNvMTI4LTIucG5nIiwicm9vdF9oYXNoIjoid19VQTlKejZZem96SEJUcUxSWTF3TndDdl9RZ2xjb1FWdDh2YXpOdzZpMCJ9LHsicGF0aCI6ImltL2ljbzE5LTIucG5nIiwicm9vdF9oYXNoIjoiT0hOMlo1Qmd1NHFKVEd2TUdMTHZNeXIzc1IwSE9KRVhTRS1RWWhFRnZvcyJ9LHsicGF0aCI6ImltL2ljbzE5Zy0yLnBuZyIsInJvb3RfaGFzaCI6Im5PUm9MV0RjbmJZeGlXaG1FY1NpOVJpenhiY1YzdURBRGZkY1p3WFAxUlEifSx7InBhdGgiOiJpbS9pY28zOC0yLnBuZyIsInJvb3RfaGFzaCI6ImxuLXpCWW1MZnJkNkF1MU4xUVdQU1puQUhkMWZtTG56M1ZvbFhmd1YyV2sifSx7InBhdGgiOiJpbS9pY28zOGctMi5wbmciLCJyb290X2hhc2giOiJ0U2lmeFpoZE5ROHpQbjZxbzJZaS13SE9oTjhseTBzV3FoY2VORDNOWnRJIn0seyJwYXRoIjoiaW0vaWNvNjQtMi5wbmciLCJyb290X2hhc2giOiJNa2JwMmN4VmpiQ01GdVhvaVc4SmIyQ0NhaFhRR0Y0dTlXYk1CLTFVZzZNIn0seyJwYXRoIjoiaW0vbm8ucG5nIiwicm9vdF9oYXNoIjoibWhpYmszNUpaU1RfYVJBR0dDdlF0V0FyLVpNVEU4RF8tZzVDdUVXamNTdyJ9LHsicGF0aCI6ImltL29uLnBuZyIsInJvb3RfaGFzaCI6IkJGVmoxYVczZE5IZW16YUVhQVR1Nmpha1lLOHNoYTJPX1RHcDhpNUh5VTgifSx7InBhdGgiOiJpbS9vbmlvbi5wbmciLCJyb290X2hhc2giOiI2aG9RYVhHb0o2WnNBTHlHd2F6NlRBaWN3M3hWeVhtYmtoeU42WkdOaWZJIn0seyJwYXRoIjoianMvY29yZS9hcGkuanMiLCJyb290X2hhc2giOiI4d1B6WU5KYXY5MGVHVzVVXy1iS1NYVi1LNEdpVG85alprS043Si1tamFVIn0seyJwYXRoIjoianMvY29yZS9jYWNoZS5qcyIsInJvb3RfaGFzaCI6IjNJSDBjQXRISnA0SDMxOE5leF9BelZtWlk0enVIYVVPa2M5RC0wdDBiczQifSx7InBhdGgiOiJqcy9jb3JlL2NvbmYuanMiLCJyb290X2hhc2giOiJ4ZUVPSHRVQ0p4c0U3OWVqQzNCcjF5a2VQSW9wVmNqYmJHTFN6d3c2UWxJIn0seyJwYXRoIjoianMvY29yZS9jb3JlLmpzIiwicm9vdF9oYXNoIjoiVDZxVUNJZmlMcDlySW4xRE9qSmRDRV9VYTRpckNrWVpjeDJ4Z0dVX3RWYyJ9LHsicGF0aCI6ImpzL2NvcmUvaGVhZGVyLmpzIiwicm9vdF9oYXNoIjoiNWowZUlGbHFnXzIxNHozTnZ1TVZzOUU0V1JhaDVUbDJDVnNtcFdrQXE4USJ9LHsicGF0aCI6ImpzL2NvcmUvaW50ZXJmLmpzIiwicm9vdF9oYXNoIjoiWWlZMUQ2cGdqVjVNWmtNMXBDa0piMHJNRVZEdlhRV1NSc1E5YjRQbGt5USJ9LHsicGF0aCI6ImpzL2NvcmUvbGliLmpzIiwicm9vdF9oYXNoIjoiUmxBZDZTQ2Z6dDRlbVdLX2FwWEhFUG5ENGwwVnlIZlNTbW1QNlpLaW5hSSJ9LHsicGF0aCI6ImpzL2NvcmUvb25vZmYuanMiLCJyb290X2hhc2giOiJuM3BvLUJpNU1jRy1ZaDRWRGRGd1dZaTd4Mi12WEtaLVExRUc3Q1V1LWpJIn0seyJwYXRoIjoianMvY29yZS9wcm94eS5qcyIsInJvb3RfaGFzaCI6ImxTTm1NY195WS1zZVFxTlRzODdpc2Z0SmFBS1dDWkZZa05qTkFuV1N5VTgifSx7InBhdGgiOiJqcy9jb3JlL3ZhcnMuanMiLCJyb290X2hhc2giOiJZUEtTSm1QaFAtWTlKbHloVGxmNVlJd2dCR3RSZjFOZ1NONE50WEJvSGFjIn0seyJwYXRoIjoianMvbGliL2ljb2FuaW1hdGlvbi5qcyIsInJvb3RfaGFzaCI6Ik9iYW1VLVVrcGZkM1RHMElhYkVDZjc1bVpBbU1FMHFSRUNYakd1ZVJWaWMifSx7InBhdGgiOiJqcy9saWIvanF1ZXJ5LTIuMS4zLmpzIiwicm9vdF9oYXNoIjoiSnJFTnB6ejJ1NGdnZVJKeE5VSG9icEhuZXR0Vi1jT2ZpRExKdnc0b0ZUWSJ9LHsicGF0aCI6ImpzL2xpYi9qcXVlcnkuZGRzbGljay5qcyIsInJvb3RfaGFzaCI6Ino1b2RxV21NNDRvdnBHY0dROWl0OWdaUHFsN3JyaUxsbW9WNGhsY1kySDgifSx7InBhdGgiOiJqcy9saWIvanF1ZXJ5LnNjcm9sbFRvLmpzIiwicm9vdF9oYXNoIjoiS1pGZVIzM0xhcHQ5bmhTUGk4eUR1emJqNWxQdmVRS1E4RzJwUW1mNTVDZyJ9LHsicGF0aCI6ImpzL2xpYi9sYW5nLmpzIiwicm9vdF9oYXNoIjoiWmtmMkl1WEtuaUpwSjVCSlRYQ25ZUFZSM1JPX2FyVXA3YUMtZXJaazlkYyJ9LHsicGF0aCI6ImpzL2xpYi9saWIuanMiLCJyb290X2hhc2giOiJPa1lZRG9KZDdxWHJXZFhOaEVTZmZ4OG81Wl9HenV3eVh0MXRLdlNwSlhFIn0seyJwYXRoIjoianMvbGliL2xzLmpzIiwicm9vdF9oYXNoIjoiTTdiaFE0LUtHeFk1MFZyOHpBRjFQZlRSOHdPTkxzSDZVU0p2cW1DSklkWSJ9LHsicGF0aCI6ImpzL2xpYi9zd2l0Y2hlci5qcyIsInJvb3RfaGFzaCI6Im5CNmh6dm5mWGhhVThMb1p6ZFJWV0pscUpuVlN1bFhGSWVmdm5SNDNQQWsifSx7InBhdGgiOiJqcy9wb3B1cC9hcGkuanMiLCJyb290X2hhc2giOiJqUUl3bFhRTGZoby1jdTRXQTk0X3dOLWpjaHVkcnI3alRtWWxQSHdib1pNIn0seyJwYXRoIjoianMvcG9wdXAvbGliLmpzIiwicm9vdF9oYXNoIjoiM1JtVXAzQjFWWnoybmQ3QTA5Q1RHTXFJbWhXRVFPWG56QUtWd1RVOW11cyJ9LHsicGF0aCI6ImpzL3BvcHVwL2xpc3RzLmpzIiwicm9vdF9oYXNoIjoiTHhxWVRVbVlGNC1TLU0taS03Tl9USW5RaVFUaUswSDlza0FjSGpCTGhmbyJ9LHsicGF0aCI6ImpzL3BvcHVwL3BvcHVwLmpzIiwicm9vdF9oYXNoIjoia0FDbThuNEQzWmVaLUpfSlI5UExkbm95d2l5cmlWYWVLUEV5c0ZuWUxxYyJ9LHsicGF0aCI6ImpzL3BvcHVwL3Vwcm94eXMuanMiLCJyb290X2hhc2giOiJQemNhaFowZV9tNFo5cTFpenhBV1lGTU9IN2hxMjA0dDFZRENtazNEdFRvIn0seyJwYXRoIjoianMvcG9wdXAvdmFycy5qcyIsInJvb3RfaGFzaCI6IkktRk1NWUFfUjY5dkg4U2ttR3F2NXotOWdvdE9VY21hbFdYQ1cxOUxOcEkifSx7InBhdGgiOiJqcy91aWtpdC9jb21wb25lbnRzL25vdGlmeS5qcyIsInJvb3RfaGFzaCI6ImY2QWVhOU9HdE0yalJzTVBQVEVfd1NIaHJpbmMtWmwxTEtJT19aZWV4RVEifSx7InBhdGgiOiJqcy91aWtpdC91aWtpdC5qcyIsInJvb3RfaGFzaCI6IjZ4bGxzeUkzMDZIT3dSLXR1clhEUWVqV0Z5ZWM3THB0aHVsdzh3QjB4RlEifSx7ImNhbm9uaWNhbF9qc29uX3Jvb3RfaGFzaCI6InZ6MnRDRk1xSVZVU2JtanBKNUhEREhxdmZNZElEMTUweW82bzl4NFdUSmciLCJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6IkVyVXlVdURNVXA4R0xtVFhpcFdSd1lmcXVLbFBhdHBKSGJSZnhWRHVsY0kifSx7InBhdGgiOiJwb3B1cC5odG1sIiwicm9vdF9oYXNoIjoiWnR2ZEEzVHRvYUZHUWFyZHlnbUtIVHNnOXFHS0pnNEdiTU9xSllLWTJhZyJ9XSwiZm9ybWF0IjoidHJlZWhhc2giLCJoYXNoX2Jsb2NrX3NpemUiOjQwOTZ9XSwiaXRlbV9pZCI6ImlpbHBpYmhpaWhva2VjbmJka2FtaW5lbW5tZWNqZmVkIiwiaXRlbV92ZXJzaW9uIjoiMS4xMiIsInByb3RvY29sX3ZlcnNpb24iOjF9","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"EgdfSMw59h8Fnc_1vtzNUt9jpeh4VlCHqkcGTYy2Mg7AYfZ_gHrE27inHqHtZzdBUF_MxztgXW9JRui1Co_vz0RrTI6zzA8zHenqcbACU5UnfrqWt27omvex0xvoM9-v6orHm67hckUB6onxgSFzh4y5RlUOzH0--sGjpIcmQc4ft1z1OTHdqHx9miC27Y3Ip3F1MSOSx3uv2e4qQXn-rNwTpvFbdadZDKKRFN_SNE7ckzEUwSSK_oKw45G2n_cO9cREt2xwKydKf6KfXOKerC05lA66uikYQg2EOmEQ_mj7vqwCpeo4hhl3MlJL8JPiFjccbYzNXjZqQN9yh10Fpg"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"G2TAhVxwh8E7PILOb-KLRJni0M5tRNv2Sj1OCtDIU9MEZDbA_tlomQXMtdf85Ks2n96CWvOnpjUER2vzUqzcB00G22z1wPB_0ePTyYTebdIkrIvth_b11bza-hYeJPeJ2jrenNGYJcXmogHC9Nt4EvQpoDs9ChjbDzN4j3eI017XUp7Mt1vF0HA-VqMm_9tuu_kr8Sw2b28aA4PwVAB4n9SNiChtx4kQTm5IGGe8eHww83Hj_RhNJWb2Y3Kn-Aqnbayp-1XARWrgN5vVkBb5yNql_SB5Sw9G9CUYw1jRPFq5FG-0WvXRwNldjmLaqjRsT96AB2Cz2g9BxBwybZQpJg"}]}}] \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/background.html b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/background.html new file mode 100755 index 0000000..83ba9bb --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/background.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/main.css b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/main.css new file mode 100755 index 0000000..fa5903d --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/main.css @@ -0,0 +1,245 @@ + +div#foot { + position: absolute; + bottom: 0; + display: block; + width: 100%; + margin-bottom: 5px; + padding-top: 5px; +} + +.cp-os-light { + font-family: 'Open Sans', sans-serif; + font-weight: 300; +} + +.cp-os { + font-family: 'Open Sans', sans-serif; + font-weight: 400; +} + +.cp-os-bold { + font-family: 'Open Sans', sans-serif; + font-weight: 700; +} + +.cp-os-condensed { + font-family: 'Open Sans Condensed', sans-serif; + font-weight: 300; +} + +.cp-os-condensed-bold { + font-family: 'Open Sans Condensed', sans-serif; + font-weight: 700; +} + +.cp-pointer { + cursor: pointer; +} + +.cp-pointer:hover { + color: #777777; +} + +#mainproxy { + font-size: 14px; +} + +td#mainproxyco { + width: 44px; +} + +#mainproxyco img { + height: 28px; + width: 42px; + box-shadow: 0 0 1px 1px #dfdfdf; +} + +#listtable img { + width: 20px; +} + +#hideip img { + height: 30px; +} + +.uk-text-success { + color: #5B7900; +} + +.uk-tab li { + font-family: 'Open Sans', sans-serif; + font-weight: 700; + font-size: 12px; +} + +#configproxy > li { + padding: 20px 20px 20px 15px; +} + +#configproxy > li.uk-active { + background-color: #fff; +} + +a, .uk-tab > li > a { + color: #006D9A; +} + +#flags-all, #flags-site { + position: relative; +} + +.cp-flags { + display: none; + position: relative; +} + +.cp-uproxy { + padding-left: 7px; + display: inline-block; + *display: inline; + *zoom: 1; +} + +.cp-uproxy > div { + +} + +.cp-flag { + cursor: pointer; + display: inline-block; + *display: inline; + *zoom: 1; + + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + + padding: 5px 5px 5px 5px; + -webkit-transition: background-color 0.3s; + transition: background-color 0.3s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + +} + +.cp-flag img { + margin: 0; + padding: 0; + width: 32px; + box-shadow: 0 0 2px 1px #efefef; +} + +label img { + margin: 0; + padding: 0; + width: 22px; + box-shadow: 0 0 2px 1px #d0d0d0; +} + +.cp-flag:hover { + border: 1px solid #ccc; + box-shadow: 0 0 2px 1px #dfdfdf; +} + +.cp-flag.is-active { + + border: 1px solid #fff; + background: #B8BDC6; + /* + background: -webkit-radial-gradient(center, ellipse cover, #ffffff 0%, #646473 200%); + */ +} + +.cp-uproxy.is-active { + +} + +.cp-flag.is-active:after, .cp-uproxy.is-active:after { + font-family: FontAwesome; + content: "\f058"; + position: absolute; + margin-left: -22px; + top: 26px; + color: #80A000; +} + +tr, td, table { + border: 0px solid #da314b; +} + +.cp-uppercase { + text-transform: uppercase; +} + +::selection { + background: #006D9A; +} + +.uk-form { + font-size: 11px; +} + +.cp-newhost input { + margin-left: -3px; +} + +.uk-form input[type="text"] { + height: 23px; +} + +td.cp-act { + width: 54px; +} + +.cp-pname, .cp-pproto { + font-size: 14px; +} + +.cp-pip { + font-weight: bold; + font-size: 12px; +} + +.cp-pproto select { + height: 23px; +} + +#addproxy { + font-size: 24px; + margin-right: 18px; +} + +.uk-badge { + background: #006D9A; +} + +.uk-badge a { + color: #fff; +} + +.uk-dropdown { + width: 200px; +} + +.uk-dropdown-scrollable { + max-height: 140px; +} + +.cp-vspace { + height: 7px; + padding: 0; + margin: 0; +} + +.cp-unvis { + visibility: hidden; +} + +.uk-scrollable-text { + max-height: 300px; + min-height: 100px; + height: auto; +} \ No newline at end of file diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css new file mode 100755 index 0000000..6c76167 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/notify.almost-flat.css @@ -0,0 +1,99 @@ +/*! UIkit 2.12.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ +/* ======================================================================== + Component: Notify + ========================================================================== */ +/* + * Message container for positioning + */ +.uk-notify { + position: fixed; + top: 10px; + left: 10px; + z-index: 1040; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 350px; +} +/* Position modifiers +========================================================================== */ +.uk-notify-top-right, +.uk-notify-bottom-right { + left: auto; + right: 10px; +} +.uk-notify-top-center, +.uk-notify-bottom-center { + left: 50%; + margin-left: -175px; +} +.uk-notify-bottom-left, +.uk-notify-bottom-right, +.uk-notify-bottom-center { + top: auto; + bottom: 10px; +} +/* Responsiveness +========================================================================== */ +/* Phones portrait and smaller */ +@media (max-width: 479px) { + /* + * Fit in small screen + */ + .uk-notify { + left: 10px; + right: 10px; + width: auto; + margin: 0; + } +} +/* Sub-object: `uk-notify-message` +========================================================================== */ +.uk-notify-message { + position: relative; + margin-bottom: 10px; + padding: 15px; + background: #444444; + color: #ffffff; + font-size: 16px; + line-height: 22px; + cursor: pointer; + border: 1px solid #444444; + border-radius: 4px; +} +/* Close in notify + ========================================================================== */ +.uk-notify-message > .uk-close { + visibility: hidden; + float: right; +} +.uk-notify-message:hover > .uk-close { + visibility: visible; +} +/* Modifier: `uk-alert-info` + ========================================================================== */ +.uk-notify-message-primary { + background: #ebf7fd; + color: #2d7091; + border-color: rgba(45, 112, 145, 0.3); +} +/* Modifier: `uk-alert-success` + ========================================================================== */ +.uk-notify-message-success { + background: #f2fae3; + color: #659f13; + border-color: rgba(101, 159, 19, 0.3); +} +/* Modifier: `uk-notify-message-warning` + ========================================================================== */ +.uk-notify-message-warning { + background: #fffceb; + color: #e28327; + border-color: rgba(226, 131, 39, 0.3); +} +/* Modifier: `uk-notify-message-danger` + ========================================================================== */ +.uk-notify-message-danger { + background: #fff1f0; + color: #d85030; + border-color: rgba(216, 80, 48, 0.3); +} diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/switcher.css b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/switcher.css new file mode 100755 index 0000000..d08d246 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/switcher.css @@ -0,0 +1,123 @@ +/* jquery.switcher - 1.2.4 +* https://github.com/djanix/jquery-switcher +* Copyright (c) 2014-11-04 - */ + + +.switcher { + cursor: pointer; + /* + font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; + */ + font-size: 12px; + text-transform: uppercase; + display: inline-block; + *display: inline; + *zoom: 1; +} +.switcher .content { + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.switcher .text { + display: none; + overflow: hidden; + text-align: center; + white-space: nowrap; +} +.switcher.is-disabled { + opacity: 0.4; +} + +.switcher.default { + background-color: #efeff0; + border: 1px solid #eee; + border-radius: 4px; + line-height: 26px; + min-width: 80px; + padding: 2px; + -webkit-transition: background-color 0.3s; + transition: background-color 0.3s; + margin: 4px 6px 0px 0px; +} +.switcher.default input { + display: none; +} +.switcher.default .slider { + background-color: white; + border-radius: 4px; + -webkit-box-shadow: 0 0 2px 1px #dfdfdf; + box-shadow: 0 0 2px 1px #dfdfdf; + height: 26px; + left: 0; + position: absolute; + top: 0; + -webkit-transform: translateX(0%); + -ms-transform: translateX(0%); + transform: translateX(0%); + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + width: 50%; + z-index: 2; +} +.switcher.default .text { + width: 50%; + display: inline-block; + *display: inline; + *zoom: 1; +} +.switcher.default .textYes { + color: white; + float: left; +} +.switcher.default .textNo { + color: #9f9f9f; + float: right; +} +.switcher.default.is-active { + background-color: #80A000; +} +.switcher.default.is-active .slider { + -webkit-transform: translateX(100%); + -ms-transform: translateX(100%); + transform: translateX(100%); +} + +.switcher.short { + cursor: pointer; + display: inline-block; + margin-right: 5px; + vertical-align: middle; + margin-bottom: 3px; +} +.switcher.short input { + display: none; +} +.switcher.short .content { + border: 1px solid #aaaaaa; + border-radius: 50%; + height: 18px; + padding: 0; + width: 18px; +} +.switcher.short .slider { + background-color: #519b20; + border-radius: 50%; + height: 12px; + margin: 3px; + opacity: 0; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + -webkit-transition: all 0.2s; + transition: all 0.2s; + width: 12px; +} +.switcher.short.is-active .slider { + opacity: 1; + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css new file mode 100755 index 0000000..eaf7b8b --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/css/uikit.almost-flat.css @@ -0,0 +1,7362 @@ +/*! UIkit 2.13.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ +/* ======================================================================== + Component: Base + ========================================================================== */ +/* + * 1. Normalizes default `font-family` and sets `font-size` here to support `rem` units + * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom + * 3. Style + */ +html { + /* 1 */ + font: normal 14px / 20px "Helvetica Neue", Helvetica, Arial, sans-serif; + /* 2 */ + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + /* 3 */ + background: #ffffff; + color: #444444; +} +/* + * Removes default margin. + */ +body { + margin: 0; +} +/* Links + ========================================================================== */ +/* + * Remove the gray background color from active links in IE 10. + */ +a { + background: transparent; +} +/* + * Improves readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; +} +/* + * Style + */ +a, +.uk-link { + color: #0077dd; + text-decoration: none; + cursor: pointer; +} +a:hover, +.uk-link:hover { + color: #005599; + text-decoration: underline; +} +/* Text-level semantics + ========================================================================== */ +/* + * Addresses styling not present in Chrome, Safari, Opera and IE 8/9/10. + */ +abbr[title] { + border-bottom: 1px dotted; +} +/* + * Addresses style set to `bolder` in Firefox + */ +b, +strong { + font-weight: bold; +} +/* + * 1. Address odd `em`-unit font size rendering in all browsers. + * 2. Consolas has a better baseline in running text compared to `Courier` + */ +:not(pre) > code, +:not(pre) > kbd, +:not(pre) > samp { + /* 1 */ + font-size: 12px; + /* 2 */ + font-family: Consolas, monospace, serif; + /* 3 */ + color: #dd0055; + white-space: nowrap; + padding: 0 4px; + border: 1px solid #dddddd; + border-radius: 3px; + background: #fafafa; +} +/* + * Emphasize + */ +em { + color: #dd0055; +} +/* + * Insert + */ +ins { + background: #ffffaa; + color: #444444; + text-decoration: none; +} +/* + * Mark + * Note: Addresses styling not present in IE 8/9. + */ +mark { + background: #ffffaa; + color: #444444; +} +/* + * Quote + */ +q { + font-style: italic; +} +/* + * Addresses inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} +/* + * Prevents `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +/* Images + ========================================================================== */ +/* + * 1. Responsiveness: Sets a maximum width relative to the parent and auto scales the height + * 2. Corrects `max-width` behavior if padding and border are used + * 3. Remove border when inside `a` element in IE 8/9/10. + * 4. Remove the gap between images and the bottom of their containers + */ +img { + /* 1 */ + max-width: 100%; + height: auto; + /* 2 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + /* 3 */ + border: 0; + /* 4 */ + vertical-align: middle; +} +/* + * Preserve original image dimensions + */ +.uk-img-preserve, +.uk-img-preserve img { + max-width: none; +} +/* + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; +} +/* Block elements + ========================================================================== */ +/* + * Reset margin + */ +blockquote, +figure { + margin: 0; +} +/* + * Margins + */ +p, +ul, +ol, +dl, +blockquote, +pre, +address, +fieldset, +figure { + margin: 0 0 15px 0; +} +* + p, +* + ul, +* + ol, +* + dl, +* + blockquote, +* + pre, +* + address, +* + fieldset, +* + figure { + margin-top: 15px; +} +/* Headings + ========================================================================== */ +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0 0 15px 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + color: #444444; + text-transform: none; +} +/* + * Margins + */ +* + h1, +* + h2, +* + h3, +* + h4, +* + h5, +* + h6 { + margin-top: 25px; +} +/* + * Sizes + */ +h1, +.uk-h1 { + font-size: 36px; + line-height: 42px; +} +h2, +.uk-h2 { + font-size: 24px; + line-height: 30px; +} +h3, +.uk-h3 { + font-size: 18px; + line-height: 24px; +} +h4, +.uk-h4 { + font-size: 16px; + line-height: 22px; +} +h5, +.uk-h5 { + font-size: 14px; + line-height: 20px; +} +h6, +.uk-h6 { + font-size: 12px; + line-height: 18px; +} +/* Lists + ========================================================================== */ +ul, +ol { + padding-left: 30px; +} +/* + * Reset margin for nested lists + */ +ul > li > ul, +ul > li > ol, +ol > li > ol, +ol > li > ul { + margin: 0; +} +/* Description lists + ========================================================================== */ +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +/* Horizontal rules + ========================================================================== */ +/* + * 1. Address differences between Firefox and other browsers. + * 2. Style + */ +hr { + /* 1 */ + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; + /* 2 */ + margin: 15px 0; + border: 0; + border-top: 1px solid #dddddd; +} +/* Address + ========================================================================== */ +address { + font-style: normal; +} +/* Blockquotes + ========================================================================== */ +blockquote { + padding-left: 15px; + border-left: 5px solid #dddddd; + font-size: 16px; + line-height: 22px; + font-style: italic; +} +/* Preformatted text + ========================================================================== */ +/* + * 1. Contain overflow in all browsers. + */ +pre { + padding: 10px; + background: #fafafa; + font: 12px / 18px Consolas, monospace, serif; + color: #444444; + -moz-tab-size: 4; + tab-size: 4; + /* 1 */ + overflow: auto; + border: 1px solid #dddddd; + border-radius: 3px; +} +/* Selection pseudo-element + ========================================================================== */ +::-moz-selection { + background: #3399ff; + color: #ffffff; + text-shadow: none; +} +::selection { + background: #3399ff; + color: #ffffff; + text-shadow: none; +} +/* HTML5 elements + ========================================================================== */ +/* + * Corrects `block` display not defined in IE 8/9. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +main, +nav, +section, +summary { + display: block; +} +/* + * Addresses inconsistent vertical alignment of `progress` in Chrome, Firefox and Opera. + */ +progress { + vertical-align: baseline; +} +/* + * Prevent displaying `audio` without controls in Chrome, Safari and Opera + */ +audio:not([controls]) { + display: none; +} +/* + * Address `[hidden]` styling not present in IE 8/9. + * Hide the `template` element in IE and Safari + */ +[hidden], +template { + display: none; +} +/* Iframe + ========================================================================== */ +iframe { + border: 0; +} +/* Fix viewport for IE10 snap mode + ========================================================================== */ +@media screen and (max-width: 400px) { + @-ms-viewport { + width: device-width; + } +} +/* ======================================================================== + Component: Grid + ========================================================================== */ +/* + * 1. Needed for the gutter + * 2. Makes grid more robust so that it can be used with other block elements like lists + */ +.uk-grid { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + /* 1 */ + margin: 0 0 0 -25px; + /* 2 */ + padding: 0; + list-style: none; +} +/* + * DEPRECATED + * Micro clearfix + * 1. Not possible to use `table` because it creates a 1px gap when it becomes a flex item + */ +.uk-grid:before, +.uk-grid:after { + content: ""; + /* 1 */ + display: block; +} +.uk-grid:after { + clear: both; +} +/* + * Grid cell + * 1. Space is allocated solely based on content dimensions + * 2. Makes grid more robust so that it can be used with other block elements + * 3. Create horizontal gutter + * 4. DEPRECATED Using `float` to support IE9 + */ +.uk-grid > * { + /* 1 */ + -ms-flex: none; + -webkit-flex: none; + flex: none; + /* 2 */ + margin: 0; + /* 3 */ + padding-left: 25px; + /* 4 */ + float: left; +} +/* + * Remove margin from the last-child + */ +.uk-grid > * > :last-child { + margin-bottom: 0; +} +/* Grid gutter + ========================================================================== */ +/* + * Vertical gutter + */ +.uk-grid + .uk-grid { + margin-top: 25px; +} +/* + * This class is set by JavaScript and applies a vertical gutter if the columns stack or float into the next row + * Higher specificity to override margin + */ +.uk-grid > .uk-grid-margin { + margin-top: 25px; +} +/* + * Vertical gutter for panels + */ +.uk-grid > * > .uk-panel + .uk-panel { + margin-top: 25px; +} +/* + * Larger gutter for large screens + */ +/* Large screen and bigger */ +@media (min-width: 1220px) { + /* Horizontal gutter */ + .uk-grid:not(.uk-grid-preserve) { + margin-left: -35px; + } + .uk-grid:not(.uk-grid-preserve) > * { + padding-left: 35px; + } + /* Vertical gutter */ + .uk-grid:not(.uk-grid-preserve) + .uk-grid { + margin-top: 35px; + } + .uk-grid:not(.uk-grid-preserve) > .uk-grid-margin { + margin-top: 35px; + } + /* Vertical gutter for panels */ + .uk-grid:not(.uk-grid-preserve) > * > .uk-panel + .uk-panel { + margin-top: 35px; + } +} +/* + * Small gutter + * Higher specificity to override large gutter + */ +.uk-grid.uk-grid-small { + margin-left: -10px; +} +.uk-grid.uk-grid-small > * { + padding-left: 10px; +} +.uk-grid.uk-grid-small + .uk-grid-small { + margin-top: 10px; +} +.uk-grid.uk-grid-small > .uk-grid-margin { + margin-top: 10px; +} +.uk-grid.uk-grid-small > * > .uk-panel + .uk-panel { + margin-top: 10px; +} +/* Modifier: `uk-grid-divider` + ========================================================================== */ +/* + * Horizontal divider + * Does not work with `uk-push-*`, `uk-pull-*` and not if the columns float into the next row + */ +.uk-grid-divider:not(:empty) { + margin-left: -25px; + margin-right: -25px; +} +.uk-grid-divider > * { + padding-left: 25px; + padding-right: 25px; +} +.uk-grid-divider > [class*='uk-width-1-']:not(.uk-width-1-1):nth-child(n+2), +.uk-grid-divider > [class*='uk-width-2-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-3-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-4-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-5-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-6-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-7-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-8-']:nth-child(n+2), +.uk-grid-divider > [class*='uk-width-9-']:nth-child(n+2) { + border-left: 1px solid #dddddd; +} +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-grid-divider > [class*='uk-width-medium-']:not(.uk-width-medium-1-1):nth-child(n+2) { + border-left: 1px solid #dddddd; + } +} +/* Desktop and bigger */ +@media (min-width: 960px) { + .uk-grid-divider > [class*='uk-width-large-']:not(.uk-width-large-1-1):nth-child(n+2) { + border-left: 1px solid #dddddd; + } +} +/* Large screen and bigger */ +@media (min-width: 1220px) { + /* + * Large gutter + */ + .uk-grid-divider:not(.uk-grid-preserve):not(:empty) { + margin-left: -35px; + margin-right: -35px; + } + .uk-grid-divider:not(.uk-grid-preserve) > * { + padding-left: 35px; + padding-right: 35px; + } + .uk-grid-divider:not(.uk-grid-preserve):empty { + margin-top: 35px; + margin-bottom: 35px; + } +} +/* + * Vertical divider + */ +.uk-grid-divider:empty { + margin-top: 25px; + margin-bottom: 25px; + border-top: 1px solid #dddddd; +} +/* Match panels in grids + ========================================================================== */ +.uk-grid-match > * { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} +/* + * 1. Behave like a block element + */ +.uk-grid-match > * > * { + -ms-flex: none; + -webkit-flex: none; + flex: none; + /* 1 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; +} +/* Even grid cell widths + ========================================================================== */ +[class*='uk-grid-width'] > * { + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; +} +.uk-grid-width-1-2 > * { + width: 50%; +} +.uk-grid-width-1-3 > * { + width: 33.333%; +} +.uk-grid-width-1-4 > * { + width: 25%; +} +.uk-grid-width-1-5 > * { + width: 20%; +} +.uk-grid-width-1-6 > * { + width: 16.666%; +} +.uk-grid-width-1-10 > * { + width: 10%; +} +/* Phone landscape and bigger */ +@media (min-width: 480px) { + .uk-grid-width-small-1-2 > * { + width: 50%; + } + .uk-grid-width-small-1-3 > * { + width: 33.333%; + } + .uk-grid-width-small-1-4 > * { + width: 25%; + } + .uk-grid-width-small-1-5 > * { + width: 20%; + } + .uk-grid-width-small-1-6 > * { + width: 16.666%; + } + .uk-grid-width-small-1-10 > * { + width: 10%; + } +} +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-grid-width-medium-1-2 > * { + width: 50%; + } + .uk-grid-width-medium-1-3 > * { + width: 33.333%; + } + .uk-grid-width-medium-1-4 > * { + width: 25%; + } + .uk-grid-width-medium-1-5 > * { + width: 20%; + } + .uk-grid-width-medium-1-6 > * { + width: 16.666%; + } + .uk-grid-width-medium-1-10 > * { + width: 10%; + } +} +/* Desktop and bigger */ +@media (min-width: 960px) { + .uk-grid-width-large-1-2 > * { + width: 50%; + } + .uk-grid-width-large-1-3 > * { + width: 33.333%; + } + .uk-grid-width-large-1-4 > * { + width: 25%; + } + .uk-grid-width-large-1-5 > * { + width: 20%; + } + .uk-grid-width-large-1-6 > * { + width: 16.666%; + } + .uk-grid-width-large-1-10 > * { + width: 10%; + } +} +/* Large screen and bigger */ +@media (min-width: 1220px) { + .uk-grid-width-xlarge-1-2 > * { + width: 50%; + } + .uk-grid-width-xlarge-1-3 > * { + width: 33.333%; + } + .uk-grid-width-xlarge-1-4 > * { + width: 25%; + } + .uk-grid-width-xlarge-1-5 > * { + width: 20%; + } + .uk-grid-width-xlarge-1-6 > * { + width: 16.666%; + } + .uk-grid-width-xlarge-1-10 > * { + width: 10%; + } +} +/* Sub-objects: `uk-width-*` + ========================================================================== */ +[class*='uk-width'] { + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; +} +/* + * Widths + */ +/* Whole */ +.uk-width-1-1 { + width: 100%; +} +/* Halves */ +.uk-width-1-2, +.uk-width-2-4, +.uk-width-3-6, +.uk-width-5-10 { + width: 50%; +} +/* Thirds */ +.uk-width-1-3, +.uk-width-2-6 { + width: 33.333%; +} +.uk-width-2-3, +.uk-width-4-6 { + width: 66.666%; +} +/* Quarters */ +.uk-width-1-4 { + width: 25%; +} +.uk-width-3-4 { + width: 75%; +} +/* Fifths */ +.uk-width-1-5, +.uk-width-2-10 { + width: 20%; +} +.uk-width-2-5, +.uk-width-4-10 { + width: 40%; +} +.uk-width-3-5, +.uk-width-6-10 { + width: 60%; +} +.uk-width-4-5, +.uk-width-8-10 { + width: 80%; +} +/* Sixths */ +.uk-width-1-6 { + width: 16.666%; +} +.uk-width-5-6 { + width: 83.333%; +} +/* Tenths */ +.uk-width-1-10 { + width: 10%; +} +.uk-width-3-10 { + width: 30%; +} +.uk-width-7-10 { + width: 70%; +} +.uk-width-9-10 { + width: 90%; +} +/* Phone landscape and bigger */ +@media (min-width: 480px) { + /* Whole */ + .uk-width-small-1-1 { + width: 100%; + } + /* Halves */ + .uk-width-small-1-2, + .uk-width-small-2-4, + .uk-width-small-3-6, + .uk-width-small-5-10 { + width: 50%; + } + /* Thirds */ + .uk-width-small-1-3, + .uk-width-small-2-6 { + width: 33.333%; + } + .uk-width-small-2-3, + .uk-width-small-4-6 { + width: 66.666%; + } + /* Quarters */ + .uk-width-small-1-4 { + width: 25%; + } + .uk-width-small-3-4 { + width: 75%; + } + /* Fifths */ + .uk-width-small-1-5, + .uk-width-small-2-10 { + width: 20%; + } + .uk-width-small-2-5, + .uk-width-small-4-10 { + width: 40%; + } + .uk-width-small-3-5, + .uk-width-small-6-10 { + width: 60%; + } + .uk-width-small-4-5, + .uk-width-small-8-10 { + width: 80%; + } + /* Sixths */ + .uk-width-small-1-6 { + width: 16.666%; + } + .uk-width-small-5-6 { + width: 83.333%; + } + /* Tenths */ + .uk-width-small-1-10 { + width: 10%; + } + .uk-width-small-3-10 { + width: 30%; + } + .uk-width-small-7-10 { + width: 70%; + } + .uk-width-small-9-10 { + width: 90%; + } +} +/* Tablet and bigger */ +@media (min-width: 768px) { + /* Whole */ + .uk-width-medium-1-1 { + width: 100%; + } + /* Halves */ + .uk-width-medium-1-2, + .uk-width-medium-2-4, + .uk-width-medium-3-6, + .uk-width-medium-5-10 { + width: 50%; + } + /* Thirds */ + .uk-width-medium-1-3, + .uk-width-medium-2-6 { + width: 33.333%; + } + .uk-width-medium-2-3, + .uk-width-medium-4-6 { + width: 66.666%; + } + /* Quarters */ + .uk-width-medium-1-4 { + width: 25%; + } + .uk-width-medium-3-4 { + width: 75%; + } + /* Fifths */ + .uk-width-medium-1-5, + .uk-width-medium-2-10 { + width: 20%; + } + .uk-width-medium-2-5, + .uk-width-medium-4-10 { + width: 40%; + } + .uk-width-medium-3-5, + .uk-width-medium-6-10 { + width: 60%; + } + .uk-width-medium-4-5, + .uk-width-medium-8-10 { + width: 80%; + } + /* Sixths */ + .uk-width-medium-1-6 { + width: 16.666%; + } + .uk-width-medium-5-6 { + width: 83.333%; + } + /* Tenths */ + .uk-width-medium-1-10 { + width: 10%; + } + .uk-width-medium-3-10 { + width: 30%; + } + .uk-width-medium-7-10 { + width: 70%; + } + .uk-width-medium-9-10 { + width: 90%; + } +} +/* Desktop and bigger */ +@media (min-width: 960px) { + /* Whole */ + .uk-width-large-1-1 { + width: 100%; + } + /* Halves */ + .uk-width-large-1-2, + .uk-width-large-2-4, + .uk-width-large-3-6, + .uk-width-large-5-10 { + width: 50%; + } + /* Thirds */ + .uk-width-large-1-3, + .uk-width-large-2-6 { + width: 33.333%; + } + .uk-width-large-2-3, + .uk-width-large-4-6 { + width: 66.666%; + } + /* Quarters */ + .uk-width-large-1-4 { + width: 25%; + } + .uk-width-large-3-4 { + width: 75%; + } + /* Fifths */ + .uk-width-large-1-5, + .uk-width-large-2-10 { + width: 20%; + } + .uk-width-large-2-5, + .uk-width-large-4-10 { + width: 40%; + } + .uk-width-large-3-5, + .uk-width-large-6-10 { + width: 60%; + } + .uk-width-large-4-5, + .uk-width-large-8-10 { + width: 80%; + } + /* Sixths */ + .uk-width-large-1-6 { + width: 16.666%; + } + .uk-width-large-5-6 { + width: 83.333%; + } + /* Tenths */ + .uk-width-large-1-10 { + width: 10%; + } + .uk-width-large-3-10 { + width: 30%; + } + .uk-width-large-7-10 { + width: 70%; + } + .uk-width-large-9-10 { + width: 90%; + } +} +/* Sub-object: `uk-push-*` and `uk-pull-*` + ========================================================================== */ +/* + * Source ordering + * Works only with `uk-width-medium-*` + */ +/* Tablet and bigger */ +@media (min-width: 768px) { + [class*='uk-push-'], + [class*='uk-pull-'] { + position: relative; + } + /* + * Push + */ + /* Halves */ + .uk-push-1-2, + .uk-push-2-4, + .uk-push-3-6, + .uk-push-5-10 { + left: 50%; + } + /* Thirds */ + .uk-push-1-3, + .uk-push-2-6 { + left: 33.333%; + } + .uk-push-2-3, + .uk-push-4-6 { + left: 66.666%; + } + /* Quarters */ + .uk-push-1-4 { + left: 25%; + } + .uk-push-3-4 { + left: 75%; + } + /* Fifths */ + .uk-push-1-5, + .uk-push-2-10 { + left: 20%; + } + .uk-push-2-5, + .uk-push-4-10 { + left: 40%; + } + .uk-push-3-5, + .uk-push-6-10 { + left: 60%; + } + .uk-push-4-5, + .uk-push-8-10 { + left: 80%; + } + /* Sixths */ + .uk-push-1-6 { + left: 16.666%; + } + .uk-push-5-6 { + left: 83.333%; + } + /* Tenths */ + .uk-push-1-10 { + left: 10%; + } + .uk-push-3-10 { + left: 30%; + } + .uk-push-7-10 { + left: 70%; + } + .uk-push-9-10 { + left: 90%; + } + /* + * Pull + */ + /* Halves */ + .uk-pull-1-2, + .uk-pull-2-4, + .uk-pull-3-6, + .uk-pull-5-10 { + left: -50%; + } + /* Thirds */ + .uk-pull-1-3, + .uk-pull-2-6 { + left: -33.333%; + } + .uk-pull-2-3, + .uk-pull-4-6 { + left: -66.666%; + } + /* Quarters */ + .uk-pull-1-4 { + left: -25%; + } + .uk-pull-3-4 { + left: -75%; + } + /* Fifths */ + .uk-pull-1-5, + .uk-pull-2-10 { + left: -20%; + } + .uk-pull-2-5, + .uk-pull-4-10 { + left: -40%; + } + .uk-pull-3-5, + .uk-pull-6-10 { + left: -60%; + } + .uk-pull-4-5, + .uk-pull-8-10 { + left: -80%; + } + /* Sixths */ + .uk-pull-1-6 { + left: -16.666%; + } + .uk-pull-5-6 { + left: -83.333%; + } + /* Tenths */ + .uk-pull-1-10 { + left: -10%; + } + .uk-pull-3-10 { + left: -30%; + } + .uk-pull-7-10 { + left: -70%; + } + .uk-pull-9-10 { + left: -90%; + } +} +/* ======================================================================== + Component: Panel + ========================================================================== */ +/* + * 1. Needed for `a` elements + * 2. Create position context for badges + */ +.uk-panel { + /* 1 */ + display: block; + /* 2 */ + position: relative; +} +/* + * Micro clearfix to make panels more robust + */ +.uk-panel:before, +.uk-panel:after { + content: ""; + display: block; +} +.uk-panel:after { + clear: both; +} +/* + * Remove margin from the last-child if not `uk-widget-title` + */ +.uk-panel > :not(.uk-panel-title):last-child { + margin-bottom: 0; +} +/* Sub-object: `uk-panel-title` + ========================================================================== */ +.uk-panel-title { + margin-top: 0; + margin-bottom: 15px; + font-size: 18px; + line-height: 24px; + font-weight: normal; + text-transform: none; + color: #444444; +} +/* Sub-object: `uk-panel-badge` + ========================================================================== */ +.uk-panel-badge { + position: absolute; + top: 0; + right: 0; + z-index: 1; +} +/* Modifier: `uk-panel-box` + ========================================================================== */ +.uk-panel-box { + padding: 15px; + background: #fafafa; + color: #444444; + border: 1px solid #dddddd; + border-radius: 4px; +} +.uk-panel-box .uk-panel-title { + color: #444444; +} +.uk-panel-box .uk-panel-badge { + top: 10px; + right: 10px; +} +.uk-panel-box .uk-panel-teaser { + margin: -16px -16px 15px -16px; +} +/* + * Nav in panel + */ +.uk-panel-box > .uk-nav-side { + margin: 0 -15px; +} +/* + * Sub-modifier: `uk-panel-box-primary` + */ +.uk-panel-box-primary { + background-color: #ebf7fd; + color: #2d7091; + border-color: rgba(45, 112, 145, 0.3); +} +.uk-panel-box-primary .uk-panel-title { + color: #2d7091; +} +/* + * Sub-modifier: `uk-panel-box-secondary` + */ +.uk-panel-box-secondary { + background-color: #ffffff; + color: #444444; +} +.uk-panel-box-secondary .uk-panel-title { + color: #444444; +} +/* Modifier: `uk-panel-header` + ========================================================================== */ +.uk-panel-header .uk-panel-title { + padding-bottom: 10px; + border-bottom: 1px solid #dddddd; + color: #444444; +} +/* Modifier: `uk-panel-space` + ========================================================================== */ +.uk-panel-space { + padding: 30px; +} +.uk-panel-space .uk-panel-badge { + top: 30px; + right: 30px; +} +/* Modifier: `uk-panel-divider` + ========================================================================== */ +.uk-panel + .uk-panel-divider { + margin-top: 50px !important; +} +.uk-panel + .uk-panel-divider:before { + content: ""; + display: block; + position: absolute; + top: -25px; + left: 0; + right: 0; + border-top: 1px solid #dddddd; +} +/* Large screen and bigger */ +@media (min-width: 1220px) { + .uk-panel + .uk-panel-divider { + margin-top: 70px !important; + } + .uk-panel + .uk-panel-divider:before { + top: -35px; + } +} +.uk-panel-box .uk-panel-teaser > * { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +/* ======================================================================== + Component: Article + ========================================================================== */ +/* + * Micro clearfix to make articles more robust + */ +.uk-article:before, +.uk-article:after { + content: ""; + display: block; +} +.uk-article:after { + clear: both; +} +/* + * Remove margin from the last-child + */ +.uk-article > :last-child { + margin-bottom: 0; +} +/* + * Vertical gutter for articles + */ +.uk-article + .uk-article { + margin-top: 25px; +} +/* Sub-object `uk-article-title` + ========================================================================== */ +.uk-article-title { + font-size: 36px; + line-height: 42px; + font-weight: normal; + text-transform: none; +} +.uk-article-title a { + color: inherit; + text-decoration: none; +} +/* Sub-object `uk-article-meta` + ========================================================================== */ +.uk-article-meta { + font-size: 12px; + line-height: 18px; + color: #999999; +} +/* Sub-object `uk-article-lead` + ========================================================================== */ +.uk-article-lead { + color: #444444; + font-size: 18px; + line-height: 24px; + font-weight: normal; +} +/* Sub-object `uk-article-divider` + ========================================================================== */ +.uk-article-divider { + margin-bottom: 25px; + border-color: #dddddd; +} +* + .uk-article-divider { + margin-top: 25px; +} +.uk-article + .uk-article { + padding-top: 25px; + border-top: 1px solid #dddddd; +} +/* ======================================================================== + Component: Comment + ========================================================================== */ +/* Sub-object `uk-comment-header` + ========================================================================== */ +.uk-comment-header { + margin-bottom: 15px; + padding: 10px; + border: 1px solid #dddddd; + border-radius: 4px; + background: #fafafa; +} +/* + * Micro clearfix + */ +.uk-comment-header:before, +.uk-comment-header:after { + content: ""; + display: block; +} +.uk-comment-header:after { + clear: both; +} +/* Sub-object `uk-comment-avatar` + ========================================================================== */ +.uk-comment-avatar { + margin-right: 15px; + float: left; +} +/* Sub-object `uk-comment-title` + ========================================================================== */ +.uk-comment-title { + margin: 5px 0 0 0; + font-size: 16px; + line-height: 22px; +} +/* Sub-object `uk-comment-meta` + ========================================================================== */ +.uk-comment-meta { + margin: 2px 0 0 0; + font-size: 11px; + line-height: 16px; + color: #999999; +} +/* Sub-object `uk-comment-body` + ========================================================================== */ +.uk-comment-body { + padding-left: 10px; + padding-right: 10px; +} +/* + * Remove margin from the last-child + */ +.uk-comment-body > :last-child { + margin-bottom: 0; +} +/* Sub-object `uk-comment-list` + ========================================================================== */ +.uk-comment-list { + padding: 0; + list-style: none; +} +.uk-comment-list .uk-comment + ul { + margin: 25px 0 0 0; + list-style: none; +} +.uk-comment-list > li:nth-child(n+2), +.uk-comment-list .uk-comment + ul > li:nth-child(n+2) { + margin-top: 25px; +} +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-comment-list .uk-comment + ul { + padding-left: 100px; + } +} +/* Modifier `uk-comment-primary` + ========================================================================== */ +.uk-comment-primary .uk-comment-header { + border-color: rgba(45, 112, 145, 0.3); + background-color: #ebf7fd; + color: #2d7091; + text-shadow: 0 1px 0 #ffffff; +} +/* ======================================================================== + Component: Nav + ========================================================================== */ +.uk-nav, +.uk-nav ul { + margin: 0; + padding: 0; + list-style: none; +} +/* + * Items + */ +.uk-nav li > a { + display: block; + text-decoration: none; +} +.uk-nav > li > a { + padding: 5px 15px; +} +/* + * Nested items + */ +.uk-nav ul { + padding-left: 15px; +} +.uk-nav ul a { + padding: 2px 0; +} +/* + * Item subtitle + */ +.uk-nav li > a > div { + font-size: 12px; + line-height: 18px; +} +/* Sub-object: `uk-nav-header` + ========================================================================== */ +.uk-nav-header { + padding: 5px 15px; + text-transform: uppercase; + font-weight: bold; + font-size: 12px; +} +.uk-nav-header:not(:first-child) { + margin-top: 15px; +} +/* Sub-object: `uk-nav-divider` + ========================================================================== */ +.uk-nav-divider { + margin: 9px 15px; +} +/* Sub-object: `uk-nav-sub` + ========================================================================== */ +/* + * `ul` needed for higher specificity to override padding + */ +ul.uk-nav-sub { + padding: 5px 0 5px 15px; +} +/* Modifier: `uk-nav-parent-icon` + ========================================================================== */ +.uk-nav-parent-icon > .uk-parent > a:after { + content: "\f104"; + width: 20px; + margin-right: -10px; + float: right; + font-family: FontAwesome; + text-align: center; +} +.uk-nav-parent-icon > .uk-parent.uk-open > a:after { + content: "\f107"; +} +/* Modifier `uk-nav-side` + ========================================================================== */ +/* + * Items + */ +.uk-nav-side > li > a { + color: #444444; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-nav-side > li > a:hover, +.uk-nav-side > li > a:focus { + background: rgba(0, 0, 0, 0.03); + color: #444444; + /* 2 */ + outline: none; + box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.06); + text-shadow: 0 -1px 0 #ffffff; +} +/* Active */ +.uk-nav-side > li.uk-active > a { + background: #00a8e6; + color: #ffffff; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); +} +/* + * Sub-object: `uk-nav-header` + */ +.uk-nav-side .uk-nav-header { + color: #444444; +} +/* + * Sub-object: `uk-nav-divider` + */ +.uk-nav-side .uk-nav-divider { + border-top: 1px solid #dddddd; + box-shadow: 0 1px 0 #ffffff; +} +/* + * Nested items + */ +.uk-nav-side ul a { + color: #0077dd; +} +.uk-nav-side ul a:hover { + color: #005599; +} +/* Modifier `uk-nav-dropdown` + ========================================================================== */ +/* + * Items + */ +.uk-nav-dropdown > li > a { + color: #444444; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-nav-dropdown > li > a:hover, +.uk-nav-dropdown > li > a:focus { + background: #00a8e6; + color: #ffffff; + /* 2 */ + outline: none; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); +} +/* + * Sub-object: `uk-nav-header` + */ +.uk-nav-dropdown .uk-nav-header { + color: #999999; +} +/* + * Sub-object: `uk-nav-divider` + */ +.uk-nav-dropdown .uk-nav-divider { + border-top: 1px solid #dddddd; +} +/* + * Nested items + */ +.uk-nav-dropdown ul a { + color: #0077dd; +} +.uk-nav-dropdown ul a:hover { + color: #005599; +} +/* Modifier `uk-nav-navbar` + ========================================================================== */ +/* + * Items + */ +.uk-nav-navbar > li > a { + color: #444444; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-nav-navbar > li > a:hover, +.uk-nav-navbar > li > a:focus { + background: #00a8e6; + color: #ffffff; + /* 2 */ + outline: none; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); +} +/* + * Sub-object: `uk-nav-header` + */ +.uk-nav-navbar .uk-nav-header { + color: #999999; +} +/* + * Sub-object: `uk-nav-divider` + */ +.uk-nav-navbar .uk-nav-divider { + border-top: 1px solid #dddddd; +} +/* + * Nested items + */ +.uk-nav-navbar ul a { + color: #0077dd; +} +.uk-nav-navbar ul a:hover { + color: #005599; +} +/* Modifier `uk-nav-offcanvas` + ========================================================================== */ +/* + * Items + */ +.uk-nav-offcanvas > li > a { + color: #cccccc; + padding: 10px 15px; + border-top: 1px solid rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +/* + * Hover + * No hover on touch devices because it behaves buggy in fixed offcanvas + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-nav-offcanvas > .uk-open > a, +html:not(.uk-touch) .uk-nav-offcanvas > li > a:hover, +html:not(.uk-touch) .uk-nav-offcanvas > li > a:focus { + background: #404040; + color: #ffffff; + /* 2 */ + outline: none; +} +/* + * Active + * `html .uk-nav` needed for higher specificity to override hover + */ +html .uk-nav.uk-nav-offcanvas > li.uk-active > a { + background: #1a1a1a; + color: #ffffff; + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); +} +/* + * Sub-object: `uk-nav-header` + */ +.uk-nav-offcanvas .uk-nav-header { + color: #777777; + margin-top: 0; + border-top: 1px solid rgba(0, 0, 0, 0.3); + background: #404040; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +/* + * Sub-object: `uk-nav-divider` + */ +.uk-nav-offcanvas .uk-nav-divider { + border-top: 1px solid rgba(255, 255, 255, 0.01); + margin: 0; + height: 4px; + background: rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3); +} +/* + * Nested items + * No hover on touch devices because it behaves buggy in fixed offcanvas + */ +.uk-nav-offcanvas ul a { + color: #cccccc; +} +html:not(.uk-touch) .uk-nav-offcanvas ul a:hover { + color: #ffffff; +} +/* + * Modifier `uk-nav-offcanvas` + */ +.uk-nav-offcanvas { + border-bottom: 1px solid rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.05); +} +/* + * Sub-object: `uk-nav-sub` + */ +.uk-nav-offcanvas .uk-nav-sub { + border-top: 1px solid rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); +} +/* ======================================================================== + Component: Navbar + ========================================================================== */ +.uk-navbar { + background: #f5f5f5; + color: #444444; + border: 1px solid rgba(0, 0, 0, 0.06); + border-radius: 4px; +} +/* + * Micro clearfix + */ +.uk-navbar:before, +.uk-navbar:after { + content: ""; + display: block; +} +.uk-navbar:after { + clear: both; +} +/* Sub-object: `uk-navbar-nav` + ========================================================================== */ +.uk-navbar-nav { + margin: 0; + padding: 0; + list-style: none; + float: left; +} +/* + * 1. Create position context for dropdowns + */ +.uk-navbar-nav > li { + float: left; + /* 1 */ + position: relative; +} +/* + * 1. Dimensions + * 2. Style + */ +.uk-navbar-nav > li > a { + display: block; + -moz-box-sizing: border-box; + box-sizing: border-box; + text-decoration: none; + /* 1 */ + height: 41px; + padding: 0 15px; + line-height: 40px; + /* 2 */ + color: #444444; + font-size: 14px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: normal; + margin-top: -1px; + margin-left: -1px; + border: 1px solid transparent; + border-bottom-width: 0; + text-shadow: 0 1px 0 #ffffff; +} +/* Appear not as link */ +.uk-navbar-nav > li > a[href='#'] { + cursor: text; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Also apply if dropdown is opened + * 3. Remove default focus style + */ +.uk-navbar-nav > li:hover > a, +.uk-navbar-nav > li > a:focus, +.uk-navbar-nav > li.uk-open > a { + background-color: #fafafa; + color: #444444; + /* 3 */ + outline: none; + position: relative; + z-index: 1; + border-left-color: rgba(0, 0, 0, 0.1); + border-right-color: rgba(0, 0, 0, 0.1); + border-top-color: rgba(0, 0, 0, 0.1); +} +/* OnClick */ +.uk-navbar-nav > li > a:active { + background-color: #eeeeee; + color: #444444; + border-left-color: rgba(0, 0, 0, 0.1); + border-right-color: rgba(0, 0, 0, 0.1); + border-top-color: rgba(0, 0, 0, 0.2); +} +/* Active */ +.uk-navbar-nav > li.uk-active > a { + background-color: #fafafa; + color: #444444; + border-left-color: rgba(0, 0, 0, 0.1); + border-right-color: rgba(0, 0, 0, 0.1); + border-top-color: rgba(0, 0, 0, 0.1); +} +/* Sub-objects: `uk-navbar-nav-subtitle` + ========================================================================== */ +.uk-navbar-nav .uk-navbar-nav-subtitle { + line-height: 28px; +} +.uk-navbar-nav-subtitle > div { + margin-top: -6px; + font-size: 10px; + line-height: 12px; +} +/* Sub-objects: `uk-navbar-content`, `uk-navbar-brand`, `uk-navbar-toggle` + ========================================================================== */ +/* + * Imitate navbar items + */ +.uk-navbar-content, +.uk-navbar-brand, +.uk-navbar-toggle { + -moz-box-sizing: border-box; + box-sizing: border-box; + display: block; + height: 41px; + padding: 0 15px; + float: left; + margin-top: -1px; + text-shadow: 0 1px 0 #ffffff; +} +/* + * Helper to center all child elements vertically + */ +.uk-navbar-content:before, +.uk-navbar-brand:before, +.uk-navbar-toggle:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +/* Sub-objects: `uk-navbar-content` + ========================================================================== */ +/* + * Better sibling spacing + */ +.uk-navbar-content + .uk-navbar-content:not(.uk-navbar-center) { + padding-left: 0; +} +/* + * Link colors + */ +.uk-navbar-content > a:not([class]) { + color: #0077dd; +} +.uk-navbar-content > a:not([class]):hover { + color: #005599; +} +/* Sub-objects: `uk-navbar-brand` + ========================================================================== */ +.uk-navbar-brand { + font-size: 18px; + color: #444444; + text-decoration: none; +} +/* + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-navbar-brand:hover, +.uk-navbar-brand:focus { + color: #444444; + text-decoration: none; + /* 2 */ + outline: none; +} +/* Sub-object: `uk-navbar-toggle` + ========================================================================== */ +.uk-navbar-toggle { + font-size: 18px; + color: #444444; + text-decoration: none; +} +/* + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-navbar-toggle:hover, +.uk-navbar-toggle:focus { + color: #444444; + text-decoration: none; + /* 2 */ + outline: none; +} +/* + * 1. Center icon vertically + */ +.uk-navbar-toggle:after { + content: "\f0c9"; + font-family: FontAwesome; + /* 1 */ + vertical-align: middle; +} +.uk-navbar-toggle-alt:after { + content: "\f002"; +} +/* Sub-object: `uk-navbar-center` + ========================================================================== */ +/* + * The element with this class needs to be last child in the navbar + * 1. This hack is needed because other float elements shift centered text + */ +.uk-navbar-center { + float: none; + text-align: center; + /* 1 */ + max-width: 50%; + margin-left: auto; + margin-right: auto; +} +/* Sub-object: `uk-navbar-flip` + ========================================================================== */ +.uk-navbar-flip { + float: right; +} +/* + * Apply same `border-radius` as `uk-navbar` + */ +.uk-navbar-nav:first-child > li:first-child > a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +/* + * Sub-modifier `uk-navbar-flip` + */ +/* Collapse border */ +.uk-navbar-flip .uk-navbar-nav > li > a { + margin-left: 0; + margin-right: -1px; +} +/* Apply same `border-radius` as `uk-navbar` */ +.uk-navbar-flip .uk-navbar-nav:first-child > li:first-child > a { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.uk-navbar-flip .uk-navbar-nav:last-child > li:last-child > a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +/* + * Sub-modifier `uk-navbar-attached` + */ +.uk-navbar-attached { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + border-radius: 0; +} +.uk-navbar-attached .uk-navbar-nav > li > a { + border-radius: 0 !important; +} +/* ======================================================================== + Component: Subnav + ========================================================================== */ +/* + * 1. Remove default list style + * 2. Remove whitespace between child elements when using `inline-block` + */ +.uk-subnav { + /* 1 */ + padding: 0; + list-style: none; + /* 2 */ + font-size: 0.001px; +} +/* Items + ========================================================================== */ +/* + * 1. Create position context for dropdowns + * 2. Reset whitespace hack + */ +.uk-subnav > li { + /* 1 */ + position: relative; + /* 2 */ + font-size: 1rem; + vertical-align: top; +} +.uk-subnav > li, +.uk-subnav > li > a, +.uk-subnav > li > span { + display: inline-block; +} +.uk-subnav > li:nth-child(n+2) { + margin-left: 10px; +} +/* + * Items + */ +.uk-subnav > li > a { + color: #0077dd; +} +.uk-subnav > li > a:hover { + color: #005599; +} +/* + * Active + */ +/* + * Disabled + */ +.uk-subnav > li > span { + color: #999999; +} +/* Modifier: 'subnav-line' + ========================================================================== */ +.uk-subnav-line > li:nth-child(n+2):before { + content: ""; + display: inline-block; + height: 10px; + margin-right: 10px; + border-left: 1px solid #dddddd; +} +/* Modifier: 'subnav-pill' + ========================================================================== */ +.uk-subnav-pill > li > a, +.uk-subnav-pill > li > span { + padding: 3px 9px; + text-decoration: none; + border-radius: 4px; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-subnav-pill > li > a:hover, +.uk-subnav-pill > li > a:focus { + background: #fafafa; + color: #444444; + /* 2 */ + outline: none; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); +} +/* + * Active + * `li` needed for higher specificity to override hover + */ +.uk-subnav-pill > li.uk-active > a { + background: #00a8e6; + color: #ffffff; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); +} +/* ======================================================================== + Component: Breadcrumb + ========================================================================== */ +/* + * 1. Remove default list style + * 2. Remove whitespace between child elements when using `inline-block` + */ +.uk-breadcrumb { + /* 1 */ + padding: 0; + list-style: none; + /* 2 */ + font-size: 0.001px; +} +/* Items + ========================================================================== */ +/* + * Reset whitespace hack + */ +.uk-breadcrumb > li { + font-size: 1rem; + vertical-align: top; +} +.uk-breadcrumb > li, +.uk-breadcrumb > li > a, +.uk-breadcrumb > li > span { + display: inline-block; +} +.uk-breadcrumb > li:nth-child(n+2):before { + content: "/"; + display: inline-block; + margin: 0 8px; +} +/* + * Disabled + */ +.uk-breadcrumb > li:not(.uk-active) > span { + color: #999999; +} +/* ======================================================================== + Component: Pagination + ========================================================================== */ +/* + * 1. Remove default list style + * 2. Center pagination by default + * 3. Remove whitespace between child elements when using `inline-block` + */ +.uk-pagination { + /* 1 */ + padding: 0; + list-style: none; + /* 2 */ + text-align: center; + /* 3 */ + font-size: 0.001px; +} +/* + * Micro clearfix + * Needed if `uk-pagination-previous` or `uk-pagination-next` sub-objects are used + */ +.uk-pagination:before, +.uk-pagination:after { + content: ""; + display: block; +} +.uk-pagination:after { + clear: both; +} +/* Items + ========================================================================== */ +/* + * 1. Reset whitespace hack + * 2. Remove the gap at the bottom of it container + */ +.uk-pagination > li { + display: inline-block; + /* 1 */ + font-size: 1rem; + /* 2 */ + vertical-align: top; +} +.uk-pagination > li:nth-child(n+2) { + margin-left: 5px; +} +/* + * 1. Makes pagination more robust against different box-sizing use + * 2. Reset text-align to center if alignment modifier is used + */ +.uk-pagination > li > a, +.uk-pagination > li > span { + display: inline-block; + min-width: 16px; + padding: 3px 5px; + line-height: 20px; + text-decoration: none; + /* 1 */ + -moz-box-sizing: content-box; + box-sizing: content-box; + /* 2 */ + text-align: center; + border: 1px solid rgba(0, 0, 0, 0.06); + border-radius: 4px; +} +/* + * Links + */ +.uk-pagination > li > a { + background: #f5f5f5; + color: #444444; + text-shadow: 0 1px 0 #ffffff; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-pagination > li > a:hover, +.uk-pagination > li > a:focus { + background-color: #fafafa; + color: #444444; + /* 2 */ + outline: none; + border-color: rgba(0, 0, 0, 0.16); +} +/* OnClick */ +.uk-pagination > li > a:active { + background-color: #eeeeee; + color: #444444; +} +/* + * Active + */ +.uk-pagination > .uk-active > span { + background: #00a8e6; + color: #ffffff; + border-color: transparent; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); +} +/* + * Disabled + */ +.uk-pagination > .uk-disabled > span { + background-color: #fafafa; + color: #999999; + border: 1px solid rgba(0, 0, 0, 0.06); + text-shadow: 0 1px 0 #ffffff; +} +/* Previous and next navigation + ========================================================================== */ +.uk-pagination-previous { + float: left; +} +.uk-pagination-next { + float: right; +} +/* Alignment modifiers + ========================================================================== */ +.uk-pagination-left { + text-align: left; +} +.uk-pagination-right { + text-align: right; +} +/* ======================================================================== + Component: Tab + ========================================================================== */ +.uk-tab { + margin: 0; + padding: 0; + list-style: none; + border-bottom: 1px solid #dddddd; +} +/* + * Micro clearfix on the deepest container + */ +.uk-tab:before, +.uk-tab:after { + content: ""; + display: block; +} +.uk-tab:after { + clear: both; +} +/* + * Items + * 1. Create position context for dropdowns + */ +.uk-tab > li { + margin-bottom: -1px; + float: left; + /* 1 */ + position: relative; +} +.uk-tab > li > a { + display: block; + padding: 8px 12px 8px 12px; + border: 1px solid transparent; + border-bottom-width: 0; + color: #0077dd; + text-decoration: none; + border-radius: 4px 4px 0 0; + text-shadow: 0 1px 0 #ffffff; +} +.uk-tab > li:nth-child(n+2) > a { + margin-left: 5px; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Also apply if dropdown is opened + * 3. Remove default focus style + */ +.uk-tab > li > a:hover, +.uk-tab > li > a:focus, +.uk-tab > li.uk-open > a { + border-color: rgba(0, 0, 0, 0.06); + background: #f5f5f5; + color: #005599; + /* 2 */ + outline: none; +} +.uk-tab > li:not(.uk-active) > a:hover, +.uk-tab > li:not(.uk-active) > a:focus, +.uk-tab > li.uk-open:not(.uk-active) > a { + margin-bottom: 1px; + padding-bottom: 7px; +} +/* Active */ +.uk-tab > li.uk-active > a { + border-color: #dddddd; + border-bottom-color: transparent; + background: #ffffff; + color: #444444; +} +/* Disabled */ +.uk-tab > li.uk-disabled > a { + color: #999999; + cursor: auto; +} +.uk-tab > li.uk-disabled > a:hover, +.uk-tab > li.uk-disabled > a:focus, +.uk-tab > li.uk-disabled.uk-active > a { + background: none; + border-color: transparent; +} +/* Modifier: 'tab-flip' + ========================================================================== */ +.uk-tab-flip > li { + float: right; +} +.uk-tab-flip > li:nth-child(n+2) > a { + margin-left: 0; + margin-right: 5px; +} +/* Modifier: 'tab-responsive' + ========================================================================== */ +.uk-tab > li.uk-tab-responsive > a { + margin-left: 0; + margin-right: 0; +} +/* + * Icon + */ +.uk-tab-responsive > a:before { + content: "\f0c9\00a0"; + font-family: FontAwesome; +} +/* Modifier: 'tab-center' + ========================================================================== */ +.uk-tab-center { + border-bottom: 1px solid #dddddd; +} +.uk-tab-center-bottom { + border-bottom: none; + border-top: 1px solid #dddddd; +} +.uk-tab-center:before, +.uk-tab-center:after { + content: ""; + display: block; +} +.uk-tab-center:after { + clear: both; +} +/* + * 1. Using `right` to prevent vertical scrollbar caused by centering if to many tabs + */ +.uk-tab-center .uk-tab { + position: relative; + right: 50%; + border: none; + float: right; +} +.uk-tab-center .uk-tab > li { + position: relative; + right: -50%; +} +.uk-tab-center .uk-tab > li > a { + text-align: center; +} +/* Modifier: 'tab-bottom' + ========================================================================== */ +.uk-tab-bottom { + border-top: 1px solid #dddddd; + border-bottom: none; +} +.uk-tab-bottom > li { + margin-top: -1px; + margin-bottom: 0; +} +.uk-tab-bottom > li > a { + padding-top: 8px; + padding-bottom: 8px; + border-bottom-width: 1px; + border-top-width: 0; +} +.uk-tab-bottom > li:not(.uk-active) > a:hover, +.uk-tab-bottom > li:not(.uk-active) > a:focus, +.uk-tab-bottom > li.uk-open:not(.uk-active) > a { + margin-bottom: 0; + margin-top: 1px; + padding-bottom: 8px; + padding-top: 7px; +} +.uk-tab-bottom > li.uk-active > a { + border-top-color: transparent; + border-bottom-color: #dddddd; +} +/* Modifier: 'tab-grid' + ========================================================================== */ +/* + * 1. Create position context to prevent hidden border because of negative `z-index` + */ +.uk-tab-grid { + margin-left: -5px; + border-bottom: none; + /* 1 */ + position: relative; + z-index: 0; +} +.uk-tab-grid:before { + display: block; + position: absolute; + left: 5px; + right: 0; + bottom: -1px; + border-top: 1px solid #dddddd; + /* 1 */ + z-index: -1; +} +.uk-tab-grid > li:first-child > a { + margin-left: 5px; +} +.uk-tab-grid > li > a { + text-align: center; +} +/* + * If `uk-tab-bottom` + */ +.uk-tab-grid.uk-tab-bottom { + border-top: none; +} +.uk-tab-grid.uk-tab-bottom:before { + top: -1px; + bottom: auto; +} +/* Modifier: 'tab-left', 'tab-right' + ========================================================================== */ +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-tab-left, + .uk-tab-right { + border-bottom: none; + } + .uk-tab-left > li, + .uk-tab-right > li { + margin-bottom: 0; + float: none; + } + .uk-tab-left > li > a, + .uk-tab-right > li > a { + padding-top: 8px; + padding-bottom: 8px; + } + .uk-tab-left > li:nth-child(n+2) > a, + .uk-tab-right > li:nth-child(n+2) > a { + margin-left: 0; + margin-top: 5px; + } + .uk-tab-left > li.uk-active > a, + .uk-tab-right > li.uk-active > a { + border-color: #dddddd; + } + /* + * Modifier: 'tab-left' + */ + .uk-tab-left { + border-right: 1px solid #dddddd; + } + .uk-tab-left > li { + margin-right: -1px; + } + .uk-tab-left > li > a { + border-bottom-width: 1px; + border-right-width: 0; + } + .uk-tab-left > li:not(.uk-active) > a:hover, + .uk-tab-left > li:not(.uk-active) > a:focus { + margin-bottom: 0; + margin-right: 1px; + padding-bottom: 8px; + padding-right: 11px; + } + .uk-tab-left > li.uk-active > a { + border-right-color: transparent; + } + /* + * Modifier: 'tab-right' + */ + .uk-tab-right { + border-left: 1px solid #dddddd; + } + .uk-tab-right > li { + margin-left: -1px; + } + .uk-tab-right > li > a { + border-bottom-width: 1px; + border-left-width: 0; + } + .uk-tab-right > li:not(.uk-active) > a:hover, + .uk-tab-right > li:not(.uk-active) > a:focus { + margin-bottom: 0; + margin-left: 1px; + padding-bottom: 8px; + padding-left: 11px; + } + .uk-tab-right > li.uk-active > a { + border-left-color: transparent; + } +} +/* Modifier: `uk-tab-bottom' + ========================================================================== */ +.uk-tab-bottom > li > a { + border-radius: 0 0 4px 4px; +} +/* Modifier: `uk-tab-left', `uk-tab-right' + ========================================================================== */ +/* Tablet and bigger */ +@media (min-width: 768px) { + /* + * Modifier: `uk-tab-left' + */ + .uk-tab-left > li > a { + border-radius: 4px 0 0 4px; + } + /* + * Modifier: `uk-tab-right' + */ + .uk-tab-right > li > a { + border-radius: 0 4px 4px 0; + } +} +/* ======================================================================== + Component: List + ========================================================================== */ +.uk-list { + padding: 0; + list-style: none; +} +/* + * Micro clearfix to make list more robust + */ +.uk-list > li:before, +.uk-list > li:after { + content: ""; + display: block; +} +.uk-list > li:after { + clear: both; +} +/* + * Remove margin from the last-child + */ +.uk-list > li > :last-child { + margin-bottom: 0; +} +/* + * Nested lists + */ +.uk-list ul { + margin: 0; + padding-left: 20px; + list-style: none; +} +/* Modifier: `uk-list-line` + ========================================================================== */ +.uk-list-line > li:nth-child(n+2) { + margin-top: 5px; + padding-top: 5px; + border-top: 1px solid #dddddd; +} +/* Modifier: `uk-list-striped` + ========================================================================== */ +.uk-list-striped > li { + padding: 5px 5px; + border-bottom: 1px solid #dddddd; +} +.uk-list-striped > li:nth-of-type(odd) { + background: #fafafa; +} +/* Modifier: `uk-list-space` + ========================================================================== */ +.uk-list-space > li:nth-child(n+2) { + margin-top: 10px; +} +.uk-list-striped > li:first-child { + border-top: 1px solid #dddddd; +} +/* ======================================================================== + Component: Description list + ========================================================================== */ +/* Modifier: `uk-description-list-horizontal` + ========================================================================== */ +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-description-list-horizontal { + overflow: hidden; + } + .uk-description-list-horizontal > dt { + width: 160px; + float: left; + clear: both; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .uk-description-list-horizontal > dd { + margin-left: 180px; + } +} +/* Modifier: `uk-description-list-line` + ========================================================================== */ +.uk-description-list-line > dt { + font-weight: normal; +} +.uk-description-list-line > dt:nth-child(n+2) { + margin-top: 5px; + padding-top: 5px; + border-top: 1px solid #dddddd; +} +.uk-description-list-line > dd { + color: #999999; +} +/* ======================================================================== + Component: Table + ========================================================================== */ +/* + * 1. Remove most spacing between table cells. + * 2. Block element behavior + * 3. Style + */ +.uk-table { + /* 1 */ + border-collapse: collapse; + border-spacing: 0; + /* 2 */ + width: 100%; + /* 3 */ + margin-bottom: 15px; +} +/* + * Add margin if adjacent element + */ +* + .uk-table { + margin-top: 15px; +} +.uk-table th, +.uk-table td { + padding: 8px 8px; + border-bottom: 1px solid #dddddd; +} +/* + * Set alignment + */ +.uk-table th { + text-align: left; +} +.uk-table td { + vertical-align: top; +} +.uk-table thead th { + vertical-align: bottom; +} +/* + * Caption and footer + */ +.uk-table caption, +.uk-table tfoot { + font-size: 12px; + font-style: italic; +} +.uk-table caption { + text-align: left; + color: #999999; +} +/* Sub-modifier: `uk-table-middle` + ========================================================================== */ +.uk-table-middle, +.uk-table-middle td { + vertical-align: middle !important; +} +/* Modifier: `uk-table-striped` + ========================================================================== */ +.uk-table-striped tbody tr:nth-of-type(odd) { + background: #fafafa; +} +/* Modifier: `uk-table-condensed` + ========================================================================== */ +.uk-table-condensed td { + padding: 4px 8px; +} +/* Modifier: `uk-table-hover` + ========================================================================== */ +.uk-table-hover tbody tr:hover { + background: #f0f0f0; +} +/* ======================================================================== + Component: Form + ========================================================================== */ +/* + * 1. Define consistent box sizing. + * Default is `content-box` with following exceptions set to `border-box` + * `button`, `select`, `input[type="checkbox"]` and `input[type="radio"]` + * `input[type="search"]` in Chrome, Safari and Opera + * `input[type="color"]` in Firefox + * 2. Address margins set differently in Firefox/IE and Chrome/Safari/Opera. + * 3. Remove `border-radius` in iOS. + * 4. Correct `font` properties and `color` not being inherited. + */ +.uk-form input, +.uk-form select, +.uk-form textarea { + /* 1 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + /* 2 */ + margin: 0; + /* 3 */ + border-radius: 0; + /* 4 */ + font: inherit; + color: inherit; +} +/* + * Address inconsistent `text-transform` inheritance which is only inherit in Firefox + */ +.uk-form select { + text-transform: none; +} +/* + * 1. Correct `font` properties not being inherited. + * 2. Don't inherit the `font-weight` and use `bold` instead. + * NOTE: Both declarations don't work in Chrome, Safari and Opera. + */ +.uk-form optgroup { + /* 1 */ + font: inherit; + /* 2 */ + font-weight: bold; +} +/* + * Removes inner padding and border in Firefox 4+. + */ +.uk-form input::-moz-focus-inner { + border: 0; + padding: 0; +} +/* + * Removes excess padding in IE 8/9/10. + */ +.uk-form input[type="checkbox"], +.uk-form input[type="radio"] { + padding: 0; +} +/* + * Improves consistency of cursor style for clickable elements + */ +.uk-form input[type="checkbox"]:not(:disabled), +.uk-form input[type="radio"]:not(:disabled) { + cursor: pointer; +} +/* + * Remove default style in iOS. + */ +.uk-form textarea, +.uk-form input:not([type]), +.uk-form input[type="text"], +.uk-form input[type="password"], +.uk-form input[type="email"], +.uk-form input[type="url"], +.uk-form input[type="search"], +.uk-form input[type="tel"], +.uk-form input[type="number"], +.uk-form input[type="datetime"] { + -webkit-appearance: none; +} +/* + * Remove inner padding and search cancel button in Chrome, Safari and Opera on OS X. + */ +.uk-form input[type="search"]::-webkit-search-cancel-button, +.uk-form input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/* + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +.uk-form input[type="number"]::-webkit-inner-spin-button, +.uk-form input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +/* + * Define consistent border, margin, and padding. + */ +.uk-form fieldset { + border: none; + margin: 0; + padding: 0; +} +/* + * 1. Remove default vertical scrollbar in IE 8/9/10/11. + * 2. Improve readability and alignment in all browsers. + */ +.uk-form textarea { + /* 1 */ + overflow: auto; + /* 2 */ + vertical-align: top; +} +/* + * Removes placeholder transparency in Firefox. + */ +.uk-form ::-moz-placeholder { + opacity: 1; +} +/* + * Removes `box-shadow` for invalid controls in Firefox. + */ +.uk-form :invalid { + box-shadow: none; +} +/* + * Vertical alignment + */ +.uk-form input:not([type="radio"]):not([type="checkbox"]), +.uk-form select { + vertical-align: middle; +} +/* Style + ========================================================================== */ +/* + * Remove margin from the last-child + */ +.uk-form > :last-child { + margin-bottom: 0; +} +/* + * Controls + * Except for `range`, `radio`, `checkbox`, `file`, `submit`, `reset`, `button` and `image` + * 1. Must be `height` because `min-height` is not working in OSX + * 2. Responsiveness: Sets a maximum width relative to the parent to scale on narrower viewports + * 3. Vertical `padding` needed for `select` elements in Firefox + * 4. Style + */ +.uk-form select, +.uk-form textarea, +.uk-form input:not([type]), +.uk-form input[type="text"], +.uk-form input[type="password"], +.uk-form input[type="datetime"], +.uk-form input[type="datetime-local"], +.uk-form input[type="date"], +.uk-form input[type="month"], +.uk-form input[type="time"], +.uk-form input[type="week"], +.uk-form input[type="number"], +.uk-form input[type="email"], +.uk-form input[type="url"], +.uk-form input[type="search"], +.uk-form input[type="tel"], +.uk-form input[type="color"] { + /* 1 */ + height: 30px; + /* 2 */ + max-width: 100%; + /* 3 */ + padding: 4px 6px; + /* 4 */ + border: 1px solid #dddddd; + background: #ffffff; + color: #444444; + -webkit-transition: all linear 0.2s; + transition: all linear 0.2s; + border-radius: 4px; +} +.uk-form select:focus, +.uk-form textarea:focus, +.uk-form input:not([type]):focus, +.uk-form input[type="text"]:focus, +.uk-form input[type="password"]:focus, +.uk-form input[type="datetime"]:focus, +.uk-form input[type="datetime-local"]:focus, +.uk-form input[type="date"]:focus, +.uk-form input[type="month"]:focus, +.uk-form input[type="time"]:focus, +.uk-form input[type="week"]:focus, +.uk-form input[type="number"]:focus, +.uk-form input[type="email"]:focus, +.uk-form input[type="url"]:focus, +.uk-form input[type="search"]:focus, +.uk-form input[type="tel"]:focus, +.uk-form input[type="color"]:focus { + border-color: #99baca; + outline: 0; + background: #f5fbfe; + color: #444444; +} +.uk-form select:disabled, +.uk-form textarea:disabled, +.uk-form input:not([type]):disabled, +.uk-form input[type="text"]:disabled, +.uk-form input[type="password"]:disabled, +.uk-form input[type="datetime"]:disabled, +.uk-form input[type="datetime-local"]:disabled, +.uk-form input[type="date"]:disabled, +.uk-form input[type="month"]:disabled, +.uk-form input[type="time"]:disabled, +.uk-form input[type="week"]:disabled, +.uk-form input[type="number"]:disabled, +.uk-form input[type="email"]:disabled, +.uk-form input[type="url"]:disabled, +.uk-form input[type="search"]:disabled, +.uk-form input[type="tel"]:disabled, +.uk-form input[type="color"]:disabled { + border-color: #dddddd; + background-color: #fafafa; + color: #999999; +} +/* + * Placeholder + */ +.uk-form :-ms-input-placeholder { + color: #999999 !important; +} +.uk-form ::-moz-placeholder { + color: #999999; +} +.uk-form ::-webkit-input-placeholder { + color: #999999; +} +.uk-form :disabled:-ms-input-placeholder { + color: #999999 !important; +} +.uk-form :disabled::-moz-placeholder { + color: #999999; +} +.uk-form :disabled::-webkit-input-placeholder { + color: #999999; +} +/* + * Legend + * 1. Behave like block element + * 2. Correct `color` not being inherited in IE 8/9/10/11. + * 3. Remove padding + * 4. `margin-bottom` is not working in Safari and Opera. + * Using `padding` and :after instead to create the border + * 5. Style + */ +.uk-form legend { + /* 1 */ + width: 100%; + /* 2 */ + border: 0; + /* 3 */ + padding: 0; + /* 4 */ + padding-bottom: 15px; + /* 5 */ + font-size: 18px; + line-height: 30px; +} +/* + * 1. Fixes IE9 + */ +.uk-form legend:after { + content: ""; + display: block; + border-bottom: 1px solid #dddddd; + /* 1 */ + width: 100%; +} +/* Size modifiers + * Higher specificity needed to override defaults + ========================================================================== */ +select.uk-form-small, +textarea.uk-form-small, +input[type].uk-form-small, +input:not([type]).uk-form-small { + height: 25px; + padding: 3px 3px; + font-size: 12px; +} +select.uk-form-large, +textarea.uk-form-large, +input[type].uk-form-large, +input:not([type]).uk-form-large { + height: 40px; + padding: 8px 6px; + font-size: 16px; +} +/* Reset height + * Must be after size modifiers + ========================================================================== */ +.uk-form textarea, +.uk-form select[multiple], +.uk-form select[size] { + height: auto; +} +/* Validation states + * Using !important to keep the selector simple + ========================================================================== */ +/* + * Error state + */ +.uk-form-danger { + border-color: #dc8d99 !important; + background: #fff7f8 !important; + color: #d85030 !important; +} +/* + * Success state + */ +.uk-form-success { + border-color: #8ec73b !important; + background: #fafff2 !important; + color: #659f13 !important; +} +/* Style modifiers + * Using !important to keep the selector simple + ========================================================================== */ +/* + * Blank form + */ +.uk-form-blank { + border-color: transparent !important; + border-style: dashed !important; + background: none !important; +} +.uk-form-blank:focus { + border-color: #dddddd !important; +} +/* Size sub-modifiers + ========================================================================== */ +/* + * Fixed widths + * Different widths for mini sized `input` and `select` elements + */ +input.uk-form-width-mini { + width: 40px; +} +select.uk-form-width-mini { + width: 65px; +} +.uk-form-width-small { + width: 130px; +} +.uk-form-width-medium { + width: 200px; +} +.uk-form-width-large { + width: 500px; +} +/* Sub-objects: `uk-form-row` + * Groups labels and controls in rows + ========================================================================== */ +/* + * Micro clearfix + * Needed for `uk-form-horizontal` modifier + */ +.uk-form-row:before, +.uk-form-row:after { + content: ""; + display: block; +} +.uk-form-row:after { + clear: both; +} +/* + * Vertical gutter + */ +.uk-form-row + .uk-form-row { + margin-top: 15px; +} +/* Help text + * Sub-object: `uk-form-help-inline`, `uk-form-help-block` + ========================================================================== */ +.uk-form-help-inline { + display: inline-block; + margin: 0 0 0 10px; +} +.uk-form-help-block { + margin: 5px 0 0 0; +} +/* Controls content + * Sub-object: `uk-form-controls`, `uk-form-controls-condensed` + ========================================================================== */ +/* + * Remove margins + */ +.uk-form-controls > :first-child { + margin-top: 0; +} +.uk-form-controls > :last-child { + margin-bottom: 0; +} +/* + * Group controls and text into blocks with a small spacing between blocks + */ +.uk-form-controls-condensed { + margin: 5px 0; +} +/* Modifier: `uk-form-stacked` + * Requires sub-object: `uk-form-label` + ========================================================================== */ +.uk-form-stacked .uk-form-label { + display: block; + margin-bottom: 5px; + font-weight: bold; +} +/* Modifier: `uk-form-horizontal` + * Requires sub-objects: `uk-form-label`, `uk-form-controls` + ========================================================================== */ +/* Tablet portrait and smaller */ +@media (max-width: 959px) { + /* Behave like `uk-form-stacked` */ + .uk-form-horizontal .uk-form-label { + display: block; + margin-bottom: 5px; + font-weight: bold; + } +} +/* Desktop and bigger */ +@media (min-width: 960px) { + .uk-form-horizontal .uk-form-label { + width: 200px; + margin-top: 5px; + float: left; + } + .uk-form-horizontal .uk-form-controls { + margin-left: 215px; + } + /* Better vertical alignment if controls are checkboxes and radio buttons with text */ + .uk-form-horizontal .uk-form-controls-text { + padding-top: 5px; + } +} +/* Sub-object: `uk-form-icon` + ========================================================================== */ +/* + * 1. Container width fits its content + * 2. Create position context + * 3. Prevent `inline-block` consequences + */ +.uk-form-icon { + /* 1 */ + display: inline-block; + /* 2 */ + position: relative; + /* 3 */ + max-width: 100%; +} +/* + * 1. Make form element clickable through icon + */ +.uk-form-icon > [class*='uk-icon-'] { + position: absolute; + top: 50%; + width: 30px; + margin-top: -7px; + font-size: 14px; + color: #999999; + text-align: center; + /* 1 */ + pointer-events: none; +} +.uk-form-icon:not(.uk-form-icon-flip) > input { + padding-left: 30px !important; +} +/* + * Sub-modifier: `uk-form-icon-flip` + */ +.uk-form-icon-flip > [class*='uk-icon-'] { + right: 0; +} +.uk-form-icon-flip > input { + padding-right: 30px !important; +} +/* ======================================================================== + Component: Button + ========================================================================== */ +/* + * Removes inner padding and border in Firefox 4+. + */ +.uk-button::-moz-focus-inner { + border: 0; + padding: 0; +} +/* + * 1. Correct inability to style clickable `input` types in iOS. + * 2. Remove margins in Chrome, Safari and Opera. + * 3. Remove borders for `button`. + * 4. Address `overflow` set to `hidden` in IE 8/9/10/11. + * 5. Correct `font` properties and `color` not being inherited for `button`. + * 6. Address inconsistent `text-transform` inheritance which is only inherit in Firefox and IE + * 7. Style + * 8. `line-height` is used to create a height + * 9. `min-height` is necessary for `input` elements in Firefox and Opera because `line-height` is not working. + * 10. Reset button group whitespace hack + * 11. Required for `a`. + */ +.uk-button { + /* 1 */ + -webkit-appearance: none; + /* 2 */ + margin: 0; + /* 3 */ + border: none; + /* 4 */ + overflow: visible; + /* 5 */ + font: inherit; + color: #444444; + /* 6 */ + text-transform: none; + /* 7 */ + display: inline-block; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 12px; + background: #f5f5f5; + vertical-align: middle; + /* 8 */ + line-height: 28px; + /* 9 */ + min-height: 30px; + /* 10 */ + font-size: 1rem; + /* 11 */ + text-decoration: none; + text-align: center; + border: 1px solid rgba(0, 0, 0, 0.06); + border-radius: 4px; + text-shadow: 0 1px 0 #ffffff; +} +.uk-button:not(:disabled) { + cursor: pointer; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + * 3. Required for `a` elements + */ +.uk-button:hover, +.uk-button:focus { + background-color: #fafafa; + color: #444444; + /* 2 */ + outline: none; + /* 3 */ + text-decoration: none; + border-color: rgba(0, 0, 0, 0.16); +} +/* Active */ +.uk-button:active, +.uk-button.uk-active { + background-color: #eeeeee; + color: #444444; +} +/* Color modifiers + ========================================================================== */ +/* + * Modifier: `uk-button-primary` + */ +.uk-button-primary { + background-color: #00a8e6; + color: #ffffff; +} +/* Hover */ +.uk-button-primary:hover, +.uk-button-primary:focus { + background-color: #35b3ee; + color: #ffffff; +} +/* Active */ +.uk-button-primary:active, +.uk-button-primary.uk-active { + background-color: #0091ca; + color: #ffffff; +} +/* + * Modifier: `uk-button-success` + */ +.uk-button-success { + background-color: #8cc14c; + color: #ffffff; +} +/* Hover */ +.uk-button-success:hover, +.uk-button-success:focus { + background-color: #8ec73b; + color: #ffffff; +} +/* Active */ +.uk-button-success:active, +.uk-button-success.uk-active { + background-color: #72ae41; + color: #ffffff; +} +/* + * Modifier: `uk-button-danger` + */ +.uk-button-danger { + background-color: #da314b; + color: #ffffff; +} +/* Hover */ +.uk-button-danger:hover, +.uk-button-danger:focus { + background-color: #e4354f; + color: #ffffff; +} +/* Active */ +.uk-button-danger:active, +.uk-button-danger.uk-active { + background-color: #c91032; + color: #ffffff; +} +/* Disabled state + * Overrides also the color modifiers + ========================================================================== */ +/* Equal for all button types */ +.uk-button:disabled { + background-color: #fafafa; + color: #999999; + border-color: rgba(0, 0, 0, 0.06); + box-shadow: none; + text-shadow: 0 1px 0 #ffffff; +} +/* Modifier: `uk-button-link` + ========================================================================== */ +/* Reset */ +.uk-button-link, +.uk-button-link:hover, +.uk-button-link:focus, +.uk-button-link:active, +.uk-button-link.uk-active, +.uk-button-link:disabled { + border-color: transparent; + background: none; + box-shadow: none; + text-shadow: none; +} +/* Color */ +.uk-button-link { + color: #0077dd; +} +.uk-button-link:hover, +.uk-button-link:focus, +.uk-button-link:active, +.uk-button-link.uk-active { + color: #005599; + text-decoration: underline; +} +.uk-button-link:disabled { + color: #999999; +} +/* Focus */ +.uk-button-link:focus { + outline: 1px dotted; +} +/* Size modifiers + ========================================================================== */ +.uk-button-mini { + min-height: 20px; + padding: 0 6px; + line-height: 18px; + font-size: 11px; +} +.uk-button-small { + min-height: 25px; + padding: 0 10px; + line-height: 23px; + font-size: 12px; +} +.uk-button-large { + min-height: 40px; + padding: 0 15px; + line-height: 38px; + font-size: 16px; + border-radius: 5px; +} +/* Sub-object `uk-button-group` + ========================================================================== */ +/* + * 1. Behave like buttons + * 2. Create position context for dropdowns + * 3. Remove whitespace between child elements when using `inline-block` + * 4. Prevent buttons from wrapping + * 5. Remove whitespace between child elements when using `inline-block` + */ +.uk-button-group { + /* 1 */ + display: inline-block; + vertical-align: middle; + /* 2 */ + position: relative; + /* 3 */ + font-size: 0.001px; + /* 4 */ + white-space: nowrap; +} +.uk-button-group > * { + display: inline-block; +} +/* 5 */ +.uk-button-group .uk-button { + vertical-align: top; +} +/* Sub-object: `uk-button-dropdown` + ========================================================================== */ +/* + * 1. Behave like buttons + * 2. Create position context for dropdowns + */ +.uk-button-dropdown { + /* 1 */ + display: inline-block; + vertical-align: middle; + /* 2 */ + position: relative; +} +/* Color modifiers + ========================================================================== */ +.uk-button-primary, +.uk-button-success, +.uk-button-danger { + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.uk-button-primary:hover, +.uk-button-primary:focus, +.uk-button-success:hover, +.uk-button-success:focus, +.uk-button-danger:hover, +.uk-button-danger:focus { + border-color: rgba(0, 0, 0, 0.21); +} +/* Sub-object `uk-button-group` + ========================================================================== */ +/* + * Reset border-radius + */ +.uk-button-group > .uk-button:not(:first-child):not(:last-child), +.uk-button-group > div:not(:first-child):not(:last-child) .uk-button { + border-left-color: rgba(0, 0, 0, 0.1); + border-right-color: rgba(0, 0, 0, 0.1); + border-radius: 0; +} +.uk-button-group > .uk-button:first-child, +.uk-button-group > div:first-child .uk-button { + border-right-color: rgba(0, 0, 0, 0.1); + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.uk-button-group > .uk-button:last-child, +.uk-button-group > div:last-child .uk-button { + border-left-color: rgba(0, 0, 0, 0.1); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +/* + * Collapse border + */ +.uk-button-group > .uk-button:nth-child(n+2), +.uk-button-group > div:nth-child(n+2) .uk-button { + margin-left: -1px; +} +/* + * Create position context to superimpose the successor elements border + * Known issue: If you use an `a` element as button and an icon inside, + * the active state will not work if you click the icon inside the button + * Workaround: Just use a `button` or `input` element as button + */ +.uk-button-group .uk-button:hover, +.uk-button-group .uk-button:active { + position: relative; +} +/* ======================================================================== + Component: Icon + ========================================================================== */ +@font-face { + font-family: 'FontAwesome'; + src: url("../fonts/fontawesome-webfont.woff") format("woff"); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url("../fonts/OpenSans-Light.woff") format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url("../fonts/OpenSans.woff") format('woff'); +} +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url("../fonts/OpenSans-Bold.woff") format('woff'); +} +@font-face { + font-family: 'Open Sans Condensed'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Cond Light'), local('OpenSans-CondensedLight'), url("../fonts/OpenSans-CondensedLight.woff") format('woff'); +} +@font-face { + font-family: 'Open Sans Condensed'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Condensed Bold'), local('OpenSans-CondensedBold'), url("../fonts/OpenSans-CondensedBold.woff") format('woff'); +} + +/* + * 1. Allow margin + * 2. Prevent inherit font style + * 4. Correct line-height + * 5. Better font rendering + */ +[class*='uk-icon-'] { + font-family: FontAwesome; + /* 1 */ + display: inline-block; + /* 2 */ + font-weight: normal; + font-style: normal; + /* 4 */ + line-height: 1; + /* 5 */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* Size modifiers + ========================================================================== */ +.uk-icon-small:before { + font-size: 150%; + vertical-align: -10%; +} +.uk-icon-medium:before { + font-size: 200%; + vertical-align: -16%; +} +.uk-icon-large:before { + font-size: 250%; + vertical-align: -22%; +} +/* Modifier: `uk-icon-spin` + ========================================================================== */ +.uk-icon-spin { + display: inline-block; + -webkit-animation: uk-rotate 2s infinite linear; + animation: uk-rotate 2s infinite linear; +} +/* Modifier: `uk-icon-button` + ========================================================================== */ +.uk-icon-button { + -moz-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + width: 35px; + height: 35px; + border-radius: 100%; + background: #f5f5f5; + line-height: 35px; + color: #444444; + font-size: 18px; + text-align: center; + border: 1px solid #e7e7e7; + text-shadow: 0 1px 0 #ffffff; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + */ +.uk-icon-button:hover, +.uk-icon-button:focus { + background-color: #fafafa; + color: #444444; + text-decoration: none; + /* 2 */ + outline: none; + border-color: #d3d3d3; +} +/* Active */ +.uk-icon-button:active { + background-color: #eeeeee; + color: #444444; +} +/* Icon mapping + ========================================================================== */ +.uk-icon-glass:before { + content: "\f000"; +} +.uk-icon-music:before { + content: "\f001"; +} +.uk-icon-search:before { + content: "\f002"; +} +.uk-icon-envelope-o:before { + content: "\f003"; +} +.uk-icon-heart:before { + content: "\f004"; +} +.uk-icon-star:before { + content: "\f005"; +} +.uk-icon-star-o:before { + content: "\f006"; +} +.uk-icon-user:before { + content: "\f007"; +} +.uk-icon-film:before { + content: "\f008"; +} +.uk-icon-th-large:before { + content: "\f009"; +} +.uk-icon-th:before { + content: "\f00a"; +} +.uk-icon-th-list:before { + content: "\f00b"; +} +.uk-icon-check:before { + content: "\f00c"; +} +.uk-icon-remove:before, +.uk-icon-close:before, +.uk-icon-times:before { + content: "\f00d"; +} +.uk-icon-search-plus:before { + content: "\f00e"; +} +.uk-icon-search-minus:before { + content: "\f010"; +} +.uk-icon-power-off:before { + content: "\f011"; +} +.uk-icon-signal:before { + content: "\f012"; +} +.uk-icon-gear:before, +.uk-icon-cog:before { + content: "\f013"; +} +.uk-icon-trash-o:before { + content: "\f014"; +} +.uk-icon-home:before { + content: "\f015"; +} +.uk-icon-file-o:before { + content: "\f016"; +} +.uk-icon-clock-o:before { + content: "\f017"; +} +.uk-icon-road:before { + content: "\f018"; +} +.uk-icon-download:before { + content: "\f019"; +} +.uk-icon-arrow-circle-o-down:before { + content: "\f01a"; +} +.uk-icon-arrow-circle-o-up:before { + content: "\f01b"; +} +.uk-icon-inbox:before { + content: "\f01c"; +} +.uk-icon-play-circle-o:before { + content: "\f01d"; +} +.uk-icon-rotate-right:before, +.uk-icon-repeat:before { + content: "\f01e"; +} +.uk-icon-refresh:before { + content: "\f021"; +} +.uk-icon-list-alt:before { + content: "\f022"; +} +.uk-icon-lock:before { + content: "\f023"; +} +.uk-icon-flag:before { + content: "\f024"; +} +.uk-icon-headphones:before { + content: "\f025"; +} +.uk-icon-volume-off:before { + content: "\f026"; +} +.uk-icon-volume-down:before { + content: "\f027"; +} +.uk-icon-volume-up:before { + content: "\f028"; +} +.uk-icon-qrcode:before { + content: "\f029"; +} +.uk-icon-barcode:before { + content: "\f02a"; +} +.uk-icon-tag:before { + content: "\f02b"; +} +.uk-icon-tags:before { + content: "\f02c"; +} +.uk-icon-book:before { + content: "\f02d"; +} +.uk-icon-bookmark:before { + content: "\f02e"; +} +.uk-icon-print:before { + content: "\f02f"; +} +.uk-icon-camera:before { + content: "\f030"; +} +.uk-icon-font:before { + content: "\f031"; +} +.uk-icon-bold:before { + content: "\f032"; +} +.uk-icon-italic:before { + content: "\f033"; +} +.uk-icon-text-height:before { + content: "\f034"; +} +.uk-icon-text-width:before { + content: "\f035"; +} +.uk-icon-align-left:before { + content: "\f036"; +} +.uk-icon-align-center:before { + content: "\f037"; +} +.uk-icon-align-right:before { + content: "\f038"; +} +.uk-icon-align-justify:before { + content: "\f039"; +} +.uk-icon-list:before { + content: "\f03a"; +} +.uk-icon-dedent:before, +.uk-icon-outdent:before { + content: "\f03b"; +} +.uk-icon-indent:before { + content: "\f03c"; +} +.uk-icon-video-camera:before { + content: "\f03d"; +} +.uk-icon-photo:before, +.uk-icon-image:before, +.uk-icon-picture-o:before { + content: "\f03e"; +} +.uk-icon-pencil:before { + content: "\f040"; +} +.uk-icon-map-marker:before { + content: "\f041"; +} +.uk-icon-adjust:before { + content: "\f042"; +} +.uk-icon-tint:before { + content: "\f043"; +} +.uk-icon-edit:before, +.uk-icon-pencil-square-o:before { + content: "\f044"; +} +.uk-icon-share-square-o:before { + content: "\f045"; +} +.uk-icon-check-square-o:before { + content: "\f046"; +} +.uk-icon-arrows:before { + content: "\f047"; +} +.uk-icon-step-backward:before { + content: "\f048"; +} +.uk-icon-fast-backward:before { + content: "\f049"; +} +.uk-icon-backward:before { + content: "\f04a"; +} +.uk-icon-play:before { + content: "\f04b"; +} +.uk-icon-pause:before { + content: "\f04c"; +} +.uk-icon-stop:before { + content: "\f04d"; +} +.uk-icon-forward:before { + content: "\f04e"; +} +.uk-icon-fast-forward:before { + content: "\f050"; +} +.uk-icon-step-forward:before { + content: "\f051"; +} +.uk-icon-eject:before { + content: "\f052"; +} +.uk-icon-chevron-left:before { + content: "\f053"; +} +.uk-icon-chevron-right:before { + content: "\f054"; +} +.uk-icon-plus-circle:before { + content: "\f055"; +} +.uk-icon-minus-circle:before { + content: "\f056"; +} +.uk-icon-times-circle:before { + content: "\f057"; +} +.uk-icon-check-circle:before { + content: "\f058"; +} +.uk-icon-question-circle:before { + content: "\f059"; +} +.uk-icon-info-circle:before { + content: "\f05a"; +} +.uk-icon-crosshairs:before { + content: "\f05b"; +} +.uk-icon-times-circle-o:before { + content: "\f05c"; +} +.uk-icon-check-circle-o:before { + content: "\f05d"; +} +.uk-icon-ban:before { + content: "\f05e"; +} +.uk-icon-arrow-left:before { + content: "\f060"; +} +.uk-icon-arrow-right:before { + content: "\f061"; +} +.uk-icon-arrow-up:before { + content: "\f062"; +} +.uk-icon-arrow-down:before { + content: "\f063"; +} +.uk-icon-mail-forward:before, +.uk-icon-share:before { + content: "\f064"; +} +.uk-icon-expand:before { + content: "\f065"; +} +.uk-icon-compress:before { + content: "\f066"; +} +.uk-icon-plus:before { + content: "\f067"; +} +.uk-icon-minus:before { + content: "\f068"; +} +.uk-icon-asterisk:before { + content: "\f069"; +} +.uk-icon-exclamation-circle:before { + content: "\f06a"; +} +.uk-icon-gift:before { + content: "\f06b"; +} +.uk-icon-leaf:before { + content: "\f06c"; +} +.uk-icon-fire:before { + content: "\f06d"; +} +.uk-icon-eye:before { + content: "\f06e"; +} +.uk-icon-eye-slash:before { + content: "\f070"; +} +.uk-icon-warning:before, +.uk-icon-exclamation-triangle:before { + content: "\f071"; +} +.uk-icon-plane:before { + content: "\f072"; +} +.uk-icon-calendar:before { + content: "\f073"; +} +.uk-icon-random:before { + content: "\f074"; +} +.uk-icon-comment:before { + content: "\f075"; +} +.uk-icon-magnet:before { + content: "\f076"; +} +.uk-icon-chevron-up:before { + content: "\f077"; +} +.uk-icon-chevron-down:before { + content: "\f078"; +} +.uk-icon-retweet:before { + content: "\f079"; +} +.uk-icon-shopping-cart:before { + content: "\f07a"; +} +.uk-icon-folder:before { + content: "\f07b"; +} +.uk-icon-folder-open:before { + content: "\f07c"; +} +.uk-icon-arrows-v:before { + content: "\f07d"; +} +.uk-icon-arrows-h:before { + content: "\f07e"; +} +.uk-icon-bar-chart-o:before, +.uk-icon-bar-chart:before { + content: "\f080"; +} +.uk-icon-twitter-square:before { + content: "\f081"; +} +.uk-icon-facebook-square:before { + content: "\f082"; +} +.uk-icon-camera-retro:before { + content: "\f083"; +} +.uk-icon-key:before { + content: "\f084"; +} +.uk-icon-gears:before, +.uk-icon-cogs:before { + content: "\f085"; +} +.uk-icon-comments:before { + content: "\f086"; +} +.uk-icon-thumbs-o-up:before { + content: "\f087"; +} +.uk-icon-thumbs-o-down:before { + content: "\f088"; +} +.uk-icon-star-half:before { + content: "\f089"; +} +.uk-icon-heart-o:before { + content: "\f08a"; +} +.uk-icon-sign-out:before { + content: "\f08b"; +} +.uk-icon-linkedin-square:before { + content: "\f08c"; +} +.uk-icon-thumb-tack:before { + content: "\f08d"; +} +.uk-icon-external-link:before { + content: "\f08e"; +} +.uk-icon-sign-in:before { + content: "\f090"; +} +.uk-icon-trophy:before { + content: "\f091"; +} +.uk-icon-github-square:before { + content: "\f092"; +} +.uk-icon-upload:before { + content: "\f093"; +} +.uk-icon-lemon-o:before { + content: "\f094"; +} +.uk-icon-phone:before { + content: "\f095"; +} +.uk-icon-square-o:before { + content: "\f096"; +} +.uk-icon-bookmark-o:before { + content: "\f097"; +} +.uk-icon-phone-square:before { + content: "\f098"; +} +.uk-icon-twitter:before { + content: "\f099"; +} +.uk-icon-facebook:before { + content: "\f09a"; +} +.uk-icon-github:before { + content: "\f09b"; +} +.uk-icon-unlock:before { + content: "\f09c"; +} +.uk-icon-credit-card:before { + content: "\f09d"; +} +.uk-icon-rss:before { + content: "\f09e"; +} +.uk-icon-hdd-o:before { + content: "\f0a0"; +} +.uk-icon-bullhorn:before { + content: "\f0a1"; +} +.uk-icon-bell:before { + content: "\f0f3"; +} +.uk-icon-certificate:before { + content: "\f0a3"; +} +.uk-icon-hand-o-right:before { + content: "\f0a4"; +} +.uk-icon-hand-o-left:before { + content: "\f0a5"; +} +.uk-icon-hand-o-up:before { + content: "\f0a6"; +} +.uk-icon-hand-o-down:before { + content: "\f0a7"; +} +.uk-icon-arrow-circle-left:before { + content: "\f0a8"; +} +.uk-icon-arrow-circle-right:before { + content: "\f0a9"; +} +.uk-icon-arrow-circle-up:before { + content: "\f0aa"; +} +.uk-icon-arrow-circle-down:before { + content: "\f0ab"; +} +.uk-icon-globe:before { + content: "\f0ac"; +} +.uk-icon-wrench:before { + content: "\f0ad"; +} +.uk-icon-tasks:before { + content: "\f0ae"; +} +.uk-icon-filter:before { + content: "\f0b0"; +} +.uk-icon-briefcase:before { + content: "\f0b1"; +} +.uk-icon-arrows-alt:before { + content: "\f0b2"; +} +.uk-icon-group:before, +.uk-icon-users:before { + content: "\f0c0"; +} +.uk-icon-chain:before, +.uk-icon-link:before { + content: "\f0c1"; +} +.uk-icon-cloud:before { + content: "\f0c2"; +} +.uk-icon-flask:before { + content: "\f0c3"; +} +.uk-icon-cut:before, +.uk-icon-scissors:before { + content: "\f0c4"; +} +.uk-icon-copy:before, +.uk-icon-files-o:before { + content: "\f0c5"; +} +.uk-icon-paperclip:before { + content: "\f0c6"; +} +.uk-icon-save:before, +.uk-icon-floppy-o:before { + content: "\f0c7"; +} +.uk-icon-square:before { + content: "\f0c8"; +} +.uk-icon-navicon:before, +.uk-icon-reorder:before, +.uk-icon-bars:before { + content: "\f0c9"; +} +.uk-icon-list-ul:before { + content: "\f0ca"; +} +.uk-icon-list-ol:before { + content: "\f0cb"; +} +.uk-icon-strikethrough:before { + content: "\f0cc"; +} +.uk-icon-underline:before { + content: "\f0cd"; +} +.uk-icon-table:before { + content: "\f0ce"; +} +.uk-icon-magic:before { + content: "\f0d0"; +} +.uk-icon-truck:before { + content: "\f0d1"; +} +.uk-icon-pinterest:before { + content: "\f0d2"; +} +.uk-icon-pinterest-square:before { + content: "\f0d3"; +} +.uk-icon-google-plus-square:before { + content: "\f0d4"; +} +.uk-icon-google-plus:before { + content: "\f0d5"; +} +.uk-icon-money:before { + content: "\f0d6"; +} +.uk-icon-caret-down:before { + content: "\f0d7"; +} +.uk-icon-caret-up:before { + content: "\f0d8"; +} +.uk-icon-caret-left:before { + content: "\f0d9"; +} +.uk-icon-caret-right:before { + content: "\f0da"; +} +.uk-icon-columns:before { + content: "\f0db"; +} +.uk-icon-unsorted:before, +.uk-icon-sort:before { + content: "\f0dc"; +} +.uk-icon-sort-down:before, +.uk-icon-sort-desc:before { + content: "\f0dd"; +} +.uk-icon-sort-up:before, +.uk-icon-sort-asc:before { + content: "\f0de"; +} +.uk-icon-envelope:before { + content: "\f0e0"; +} +.uk-icon-linkedin:before { + content: "\f0e1"; +} +.uk-icon-rotate-left:before, +.uk-icon-undo:before { + content: "\f0e2"; +} +.uk-icon-legal:before, +.uk-icon-gavel:before { + content: "\f0e3"; +} +.uk-icon-dashboard:before, +.uk-icon-tachometer:before { + content: "\f0e4"; +} +.uk-icon-comment-o:before { + content: "\f0e5"; +} +.uk-icon-comments-o:before { + content: "\f0e6"; +} +.uk-icon-flash:before, +.uk-icon-bolt:before { + content: "\f0e7"; +} +.uk-icon-sitemap:before { + content: "\f0e8"; +} +.uk-icon-umbrella:before { + content: "\f0e9"; +} +.uk-icon-paste:before, +.uk-icon-clipboard:before { + content: "\f0ea"; +} +.uk-icon-lightbulb-o:before { + content: "\f0eb"; +} +.uk-icon-exchange:before { + content: "\f0ec"; +} +.uk-icon-cloud-download:before { + content: "\f0ed"; +} +.uk-icon-cloud-upload:before { + content: "\f0ee"; +} +.uk-icon-user-md:before { + content: "\f0f0"; +} +.uk-icon-stethoscope:before { + content: "\f0f1"; +} +.uk-icon-suitcase:before { + content: "\f0f2"; +} +.uk-icon-bell-o:before { + content: "\f0a2"; +} +.uk-icon-coffee:before { + content: "\f0f4"; +} +.uk-icon-cutlery:before { + content: "\f0f5"; +} +.uk-icon-file-text-o:before { + content: "\f0f6"; +} +.uk-icon-building-o:before { + content: "\f0f7"; +} +.uk-icon-hospital-o:before { + content: "\f0f8"; +} +.uk-icon-ambulance:before { + content: "\f0f9"; +} +.uk-icon-medkit:before { + content: "\f0fa"; +} +.uk-icon-fighter-jet:before { + content: "\f0fb"; +} +.uk-icon-beer:before { + content: "\f0fc"; +} +.uk-icon-h-square:before { + content: "\f0fd"; +} +.uk-icon-plus-square:before { + content: "\f0fe"; +} +.uk-icon-angle-double-left:before { + content: "\f100"; +} +.uk-icon-angle-double-right:before { + content: "\f101"; +} +.uk-icon-angle-double-up:before { + content: "\f102"; +} +.uk-icon-angle-double-down:before { + content: "\f103"; +} +.uk-icon-angle-left:before { + content: "\f104"; +} +.uk-icon-angle-right:before { + content: "\f105"; +} +.uk-icon-angle-up:before { + content: "\f106"; +} +.uk-icon-angle-down:before { + content: "\f107"; +} +.uk-icon-desktop:before { + content: "\f108"; +} +.uk-icon-laptop:before { + content: "\f109"; +} +.uk-icon-tablet:before { + content: "\f10a"; +} +.uk-icon-mobile-phone:before, +.uk-icon-mobile:before { + content: "\f10b"; +} +.uk-icon-circle-o:before { + content: "\f10c"; +} +.uk-icon-quote-left:before { + content: "\f10d"; +} +.uk-icon-quote-right:before { + content: "\f10e"; +} +.uk-icon-spinner:before { + content: "\f110"; +} +.uk-icon-circle:before { + content: "\f111"; +} +.uk-icon-mail-reply:before, +.uk-icon-reply:before { + content: "\f112"; +} +.uk-icon-github-alt:before { + content: "\f113"; +} +.uk-icon-folder-o:before { + content: "\f114"; +} +.uk-icon-folder-open-o:before { + content: "\f115"; +} +.uk-icon-smile-o:before { + content: "\f118"; +} +.uk-icon-frown-o:before { + content: "\f119"; +} +.uk-icon-meh-o:before { + content: "\f11a"; +} +.uk-icon-gamepad:before { + content: "\f11b"; +} +.uk-icon-keyboard-o:before { + content: "\f11c"; +} +.uk-icon-flag-o:before { + content: "\f11d"; +} +.uk-icon-flag-checkered:before { + content: "\f11e"; +} +.uk-icon-terminal:before { + content: "\f120"; +} +.uk-icon-code:before { + content: "\f121"; +} +.uk-icon-mail-reply-all:before, +.uk-icon-reply-all:before { + content: "\f122"; +} +.uk-icon-star-half-empty:before, +.uk-icon-star-half-full:before, +.uk-icon-star-half-o:before { + content: "\f123"; +} +.uk-icon-location-arrow:before { + content: "\f124"; +} +.uk-icon-crop:before { + content: "\f125"; +} +.uk-icon-code-fork:before { + content: "\f126"; +} +.uk-icon-unlink:before, +.uk-icon-chain-broken:before { + content: "\f127"; +} +.uk-icon-question:before { + content: "\f128"; +} +.uk-icon-info:before { + content: "\f129"; +} +.uk-icon-exclamation:before { + content: "\f12a"; +} +.uk-icon-superscript:before { + content: "\f12b"; +} +.uk-icon-subscript:before { + content: "\f12c"; +} +.uk-icon-eraser:before { + content: "\f12d"; +} +.uk-icon-puzzle-piece:before { + content: "\f12e"; +} +.uk-icon-microphone:before { + content: "\f130"; +} +.uk-icon-microphone-slash:before { + content: "\f131"; +} +.uk-icon-shield:before { + content: "\f132"; +} +.uk-icon-calendar-o:before { + content: "\f133"; +} +.uk-icon-fire-extinguisher:before { + content: "\f134"; +} +.uk-icon-rocket:before { + content: "\f135"; +} +.uk-icon-maxcdn:before { + content: "\f136"; +} +.uk-icon-chevron-circle-left:before { + content: "\f137"; +} +.uk-icon-chevron-circle-right:before { + content: "\f138"; +} +.uk-icon-chevron-circle-up:before { + content: "\f139"; +} +.uk-icon-chevron-circle-down:before { + content: "\f13a"; +} +.uk-icon-html5:before { + content: "\f13b"; +} +.uk-icon-css3:before { + content: "\f13c"; +} +.uk-icon-anchor:before { + content: "\f13d"; +} +.uk-icon-unlock-alt:before { + content: "\f13e"; +} +.uk-icon-bullseye:before { + content: "\f140"; +} +.uk-icon-ellipsis-h:before { + content: "\f141"; +} +.uk-icon-ellipsis-v:before { + content: "\f142"; +} +.uk-icon-rss-square:before { + content: "\f143"; +} +.uk-icon-play-circle:before { + content: "\f144"; +} +.uk-icon-ticket:before { + content: "\f145"; +} +.uk-icon-minus-square:before { + content: "\f146"; +} +.uk-icon-minus-square-o:before { + content: "\f147"; +} +.uk-icon-level-up:before { + content: "\f148"; +} +.uk-icon-level-down:before { + content: "\f149"; +} +.uk-icon-check-square:before { + content: "\f14a"; +} +.uk-icon-pencil-square:before { + content: "\f14b"; +} +.uk-icon-external-link-square:before { + content: "\f14c"; +} +.uk-icon-share-square:before { + content: "\f14d"; +} +.uk-icon-compass:before { + content: "\f14e"; +} +.uk-icon-toggle-down:before, +.uk-icon-caret-square-o-down:before { + content: "\f150"; +} +.uk-icon-toggle-up:before, +.uk-icon-caret-square-o-up:before { + content: "\f151"; +} +.uk-icon-toggle-right:before, +.uk-icon-caret-square-o-right:before { + content: "\f152"; +} +.uk-icon-euro:before, +.uk-icon-eur:before { + content: "\f153"; +} +.uk-icon-gbp:before { + content: "\f154"; +} +.uk-icon-dollar:before, +.uk-icon-usd:before { + content: "\f155"; +} +.uk-icon-rupee:before, +.uk-icon-inr:before { + content: "\f156"; +} +.uk-icon-cny:before, +.uk-icon-rmb:before, +.uk-icon-yen:before, +.uk-icon-jpy:before { + content: "\f157"; +} +.uk-icon-ruble:before, +.uk-icon-rouble:before, +.uk-icon-rub:before { + content: "\f158"; +} +.uk-icon-won:before, +.uk-icon-krw:before { + content: "\f159"; +} +.uk-icon-bitcoin:before, +.uk-icon-btc:before { + content: "\f15a"; +} +.uk-icon-file:before { + content: "\f15b"; +} +.uk-icon-file-text:before { + content: "\f15c"; +} +.uk-icon-sort-alpha-asc:before { + content: "\f15d"; +} +.uk-icon-sort-alpha-desc:before { + content: "\f15e"; +} +.uk-icon-sort-amount-asc:before { + content: "\f160"; +} +.uk-icon-sort-amount-desc:before { + content: "\f161"; +} +.uk-icon-sort-numeric-asc:before { + content: "\f162"; +} +.uk-icon-sort-numeric-desc:before { + content: "\f163"; +} +.uk-icon-thumbs-up:before { + content: "\f164"; +} +.uk-icon-thumbs-down:before { + content: "\f165"; +} +.uk-icon-youtube-square:before { + content: "\f166"; +} +.uk-icon-youtube:before { + content: "\f167"; +} +.uk-icon-xing:before { + content: "\f168"; +} +.uk-icon-xing-square:before { + content: "\f169"; +} +.uk-icon-youtube-play:before { + content: "\f16a"; +} +.uk-icon-dropbox:before { + content: "\f16b"; +} +.uk-icon-stack-overflow:before { + content: "\f16c"; +} +.uk-icon-instagram:before { + content: "\f16d"; +} +.uk-icon-flickr:before { + content: "\f16e"; +} +.uk-icon-adn:before { + content: "\f170"; +} +.uk-icon-bitbucket:before { + content: "\f171"; +} +.uk-icon-bitbucket-square:before { + content: "\f172"; +} +.uk-icon-tumblr:before { + content: "\f173"; +} +.uk-icon-tumblr-square:before { + content: "\f174"; +} +.uk-icon-long-arrow-down:before { + content: "\f175"; +} +.uk-icon-long-arrow-up:before { + content: "\f176"; +} +.uk-icon-long-arrow-left:before { + content: "\f177"; +} +.uk-icon-long-arrow-right:before { + content: "\f178"; +} +.uk-icon-apple:before { + content: "\f179"; +} +.uk-icon-windows:before { + content: "\f17a"; +} +.uk-icon-android:before { + content: "\f17b"; +} +.uk-icon-linux:before { + content: "\f17c"; +} +.uk-icon-dribbble:before { + content: "\f17d"; +} +.uk-icon-skype:before { + content: "\f17e"; +} +.uk-icon-foursquare:before { + content: "\f180"; +} +.uk-icon-trello:before { + content: "\f181"; +} +.uk-icon-female:before { + content: "\f182"; +} +.uk-icon-male:before { + content: "\f183"; +} +.uk-icon-gittip:before { + content: "\f184"; +} +.uk-icon-sun-o:before { + content: "\f185"; +} +.uk-icon-moon-o:before { + content: "\f186"; +} +.uk-icon-archive:before { + content: "\f187"; +} +.uk-icon-bug:before { + content: "\f188"; +} +.uk-icon-vk:before { + content: "\f189"; +} +.uk-icon-weibo:before { + content: "\f18a"; +} +.uk-icon-renren:before { + content: "\f18b"; +} +.uk-icon-pagelines:before { + content: "\f18c"; +} +.uk-icon-stack-exchange:before { + content: "\f18d"; +} +.uk-icon-arrow-circle-o-right:before { + content: "\f18e"; +} +.uk-icon-arrow-circle-o-left:before { + content: "\f190"; +} +.uk-icon-toggle-left:before, +.uk-icon-caret-square-o-left:before { + content: "\f191"; +} +.uk-icon-dot-circle-o:before { + content: "\f192"; +} +.uk-icon-wheelchair:before { + content: "\f193"; +} +.uk-icon-vimeo-square:before { + content: "\f194"; +} +.uk-icon-turkish-lira:before, +.uk-icon-try:before { + content: "\f195"; +} +.uk-icon-plus-square-o:before { + content: "\f196"; +} +.uk-icon-space-shuttle:before { + content: "\f197"; +} +.uk-icon-slack:before { + content: "\f198"; +} +.uk-icon-envelope-square:before { + content: "\f199"; +} +.uk-icon-wordpress:before { + content: "\f19a"; +} +.uk-icon-openid:before { + content: "\f19b"; +} +.uk-icon-institution:before, +.uk-icon-bank:before, +.uk-icon-university:before { + content: "\f19c"; +} +.uk-icon-mortar-board:before, +.uk-icon-graduation-cap:before { + content: "\f19d"; +} +.uk-icon-yahoo:before { + content: "\f19e"; +} +.uk-icon-google:before { + content: "\f1a0"; +} +.uk-icon-reddit:before { + content: "\f1a1"; +} +.uk-icon-reddit-square:before { + content: "\f1a2"; +} +.uk-icon-stumbleupon-circle:before { + content: "\f1a3"; +} +.uk-icon-stumbleupon:before { + content: "\f1a4"; +} +.uk-icon-delicious:before { + content: "\f1a5"; +} +.uk-icon-digg:before { + content: "\f1a6"; +} +.uk-icon-pied-piper:before { + content: "\f1a7"; +} +.uk-icon-pied-piper-alt:before { + content: "\f1a8"; +} +.uk-icon-drupal:before { + content: "\f1a9"; +} +.uk-icon-joomla:before { + content: "\f1aa"; +} +.uk-icon-language:before { + content: "\f1ab"; +} +.uk-icon-fax:before { + content: "\f1ac"; +} +.uk-icon-building:before { + content: "\f1ad"; +} +.uk-icon-child:before { + content: "\f1ae"; +} +.uk-icon-paw:before { + content: "\f1b0"; +} +.uk-icon-spoon:before { + content: "\f1b1"; +} +.uk-icon-cube:before { + content: "\f1b2"; +} +.uk-icon-cubes:before { + content: "\f1b3"; +} +.uk-icon-behance:before { + content: "\f1b4"; +} +.uk-icon-behance-square:before { + content: "\f1b5"; +} +.uk-icon-steam:before { + content: "\f1b6"; +} +.uk-icon-steam-square:before { + content: "\f1b7"; +} +.uk-icon-recycle:before { + content: "\f1b8"; +} +.uk-icon-automobile:before, +.uk-icon-car:before { + content: "\f1b9"; +} +.uk-icon-cab:before, +.uk-icon-taxi:before { + content: "\f1ba"; +} +.uk-icon-tree:before { + content: "\f1bb"; +} +.uk-icon-spotify:before { + content: "\f1bc"; +} +.uk-icon-deviantart:before { + content: "\f1bd"; +} +.uk-icon-soundcloud:before { + content: "\f1be"; +} +.uk-icon-database:before { + content: "\f1c0"; +} +.uk-icon-file-pdf-o:before { + content: "\f1c1"; +} +.uk-icon-file-word-o:before { + content: "\f1c2"; +} +.uk-icon-file-excel-o:before { + content: "\f1c3"; +} +.uk-icon-file-powerpoint-o:before { + content: "\f1c4"; +} +.uk-icon-file-photo-o:before, +.uk-icon-file-picture-o:before, +.uk-icon-file-image-o:before { + content: "\f1c5"; +} +.uk-icon-file-zip-o:before, +.uk-icon-file-archive-o:before { + content: "\f1c6"; +} +.uk-icon-file-sound-o:before, +.uk-icon-file-audio-o:before { + content: "\f1c7"; +} +.uk-icon-file-movie-o:before, +.uk-icon-file-video-o:before { + content: "\f1c8"; +} +.uk-icon-file-code-o:before { + content: "\f1c9"; +} +.uk-icon-vine:before { + content: "\f1ca"; +} +.uk-icon-codepen:before { + content: "\f1cb"; +} +.uk-icon-jsfiddle:before { + content: "\f1cc"; +} +.uk-icon-life-bouy:before, +.uk-icon-life-buoy:before, +.uk-icon-life-saver:before, +.uk-icon-support:before, +.uk-icon-life-ring:before { + content: "\f1cd"; +} +.uk-icon-circle-o-notch:before { + content: "\f1ce"; +} +.uk-icon-ra:before, +.uk-icon-rebel:before { + content: "\f1d0"; +} +.uk-icon-ge:before, +.uk-icon-empire:before { + content: "\f1d1"; +} +.uk-icon-git-square:before { + content: "\f1d2"; +} +.uk-icon-git:before { + content: "\f1d3"; +} +.uk-icon-hacker-news:before { + content: "\f1d4"; +} +.uk-icon-tencent-weibo:before { + content: "\f1d5"; +} +.uk-icon-qq:before { + content: "\f1d6"; +} +.uk-icon-wechat:before, +.uk-icon-weixin:before { + content: "\f1d7"; +} +.uk-icon-send:before, +.uk-icon-paper-plane:before { + content: "\f1d8"; +} +.uk-icon-send-o:before, +.uk-icon-paper-plane-o:before { + content: "\f1d9"; +} +.uk-icon-history:before { + content: "\f1da"; +} +.uk-icon-circle-thin:before { + content: "\f1db"; +} +.uk-icon-header:before { + content: "\f1dc"; +} +.uk-icon-paragraph:before { + content: "\f1dd"; +} +.uk-icon-sliders:before { + content: "\f1de"; +} +.uk-icon-share-alt:before { + content: "\f1e0"; +} +.uk-icon-share-alt-square:before { + content: "\f1e1"; +} +.uk-icon-bomb:before { + content: "\f1e2"; +} +.uk-icon-soccer-ball-o:before, +.uk-icon-futbol-o:before { + content: "\f1e3"; +} +.uk-icon-tty:before { + content: "\f1e4"; +} +.uk-icon-binoculars:before { + content: "\f1e5"; +} +.uk-icon-plug:before { + content: "\f1e6"; +} +.uk-icon-slideshare:before { + content: "\f1e7"; +} +.uk-icon-twitch:before { + content: "\f1e8"; +} +.uk-icon-yelp:before { + content: "\f1e9"; +} +.uk-icon-newspaper-o:before { + content: "\f1ea"; +} +.uk-icon-wifi:before { + content: "\f1eb"; +} +.uk-icon-calculator:before { + content: "\f1ec"; +} +.uk-icon-paypal:before { + content: "\f1ed"; +} +.uk-icon-google-wallet:before { + content: "\f1ee"; +} +.uk-icon-cc-visa:before { + content: "\f1f0"; +} +.uk-icon-cc-mastercard:before { + content: "\f1f1"; +} +.uk-icon-cc-discover:before { + content: "\f1f2"; +} +.uk-icon-cc-amex:before { + content: "\f1f3"; +} +.uk-icon-cc-paypal:before { + content: "\f1f4"; +} +.uk-icon-cc-stripe:before { + content: "\f1f5"; +} +.uk-icon-bell-slash:before { + content: "\f1f6"; +} +.uk-icon-bell-slash-o:before { + content: "\f1f7"; +} +.uk-icon-trash:before { + content: "\f1f8"; +} +.uk-icon-copyright:before { + content: "\f1f9"; +} +.uk-icon-at:before { + content: "\f1fa"; +} +.uk-icon-eyedropper:before { + content: "\f1fb"; +} +.uk-icon-paint-brush:before { + content: "\f1fc"; +} +.uk-icon-birthday-cake:before { + content: "\f1fd"; +} +.uk-icon-area-chart:before { + content: "\f1fe"; +} +.uk-icon-pie-chart:before { + content: "\f200"; +} +.uk-icon-line-chart:before { + content: "\f201"; +} +.uk-icon-lastfm:before { + content: "\f202"; +} +.uk-icon-lastfm-square:before { + content: "\f203"; +} +.uk-icon-toggle-off:before { + content: "\f204"; +} +.uk-icon-toggle-on:before { + content: "\f205"; +} +.uk-icon-bicycle:before { + content: "\f206"; +} +.uk-icon-bus:before { + content: "\f207"; +} +.uk-icon-ioxhost:before { + content: "\f208"; +} +.uk-icon-angellist:before { + content: "\f209"; +} +.uk-icon-cc:before { + content: "\f20a"; +} +.uk-icon-shekel:before, +.uk-icon-sheqel:before, +.uk-icon-ils:before { + content: "\f20b"; +} +.uk-icon-meanpath:before { + content: "\f20c"; +} +/* ======================================================================== + Component: Close + ========================================================================== */ +/* + * Removes inner padding and border in Firefox 4+. + */ +.uk-close::-moz-focus-inner { + border: 0; + padding: 0; +} +/* + * 1. Correct inability to style clickable `input` types in iOS. + * 2. Remove margins in Chrome, Safari and Opera. + * 3. Remove borders for `button`. + * 4. Address `overflow` set to `hidden` in IE 8/9/10/11. + * 5. Correct `font` properties and `color` not being inherited for `button`. + * 6. Address inconsistent `text-transform` inheritance which is only inherit in Firefox and IE + * 7. Remove default `button` padding and background color + * 8. Style + */ +.uk-close { + /* 1 */ + -webkit-appearance: none; + /* 2 */ + margin: 0; + /* 3 */ + border: none; + /* 4 */ + overflow: visible; + /* 5 */ + font: inherit; + color: inherit; + /* 6 */ + text-transform: none; + /* 7. */ + padding: 0; + background: transparent; + /* 8 */ + display: inline-block; + -moz-box-sizing: content-box; + box-sizing: content-box; + width: 20px; + line-height: 20px; + text-align: center; + vertical-align: middle; + opacity: 0.3; +} +/* Icon */ +.uk-close:after { + display: block; + content: "\f00d"; + font-family: FontAwesome; +} +/* + * Hover + * 1. Apply hover style also to focus state + * 2. Remove default focus style + * 3. Required for `a` elements + */ +.uk-close:hover, +.uk-close:focus { + opacity: 0.5; + /* 2 */ + outline: none; + /* 3 */ + color: inherit; + text-decoration: none; + cursor: pointer; +} +/* Modifier + ========================================================================== */ +.uk-close-alt { + padding: 2px; + border-radius: 50%; + background: #ffffff; + opacity: 1; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 6px rgba(0, 0, 0, 0.3); +} +/* Hover */ +.uk-close-alt:hover, +.uk-close-alt:focus { + opacity: 1; +} +/* Icon */ +.uk-close-alt:after { + opacity: 0.5; +} +.uk-close-alt:hover:after, +.uk-close-alt:focus:after { + opacity: 0.8; +} +/* ======================================================================== + Component: Badge + ========================================================================== */ +.uk-badge { + display: inline-block; + padding: 0 5px; + background: #00a8e6; + font-size: 10px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-align: center; + vertical-align: middle; + text-transform: none; + border: 1px solid rgba(0, 0, 0, 0.06); + border-radius: 2px; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); +} +/* + * Keep color when badge is a link + */ +a.uk-badge:hover { + color: #ffffff; +} +/* Modifier: `uk-badge-notification`; + ========================================================================== */ +.uk-badge-notification { + -moz-box-sizing: border-box; + box-sizing: border-box; + min-width: 18px; + border-radius: 500px; + font-size: 12px; + line-height: 18px; +} +/* Color modifier + ========================================================================== */ +/* + * Modifier: `uk-badge-success` + */ +.uk-badge-success { + background-color: #8cc14c; +} +/* + * Modifier: `uk-badge-warning` + */ +.uk-badge-warning { + background-color: #faa732; +} +/* + * Modifier: `uk-badge-danger` + */ +.uk-badge-danger { + background-color: #da314b; +} +/* ======================================================================== + Component: Alert + ========================================================================== */ +.uk-alert { + margin-bottom: 15px; + padding: 10px; + background: #ebf7fd; + color: #2d7091; + border: 1px solid rgba(45, 112, 145, 0.3); + border-radius: 4px; + text-shadow: 0 1px 0 #ffffff; +} +/* + * Add margin if adjacent element + */ +* + .uk-alert { + margin-top: 15px; +} +/* + * Remove margin from the last-child + */ +.uk-alert > :last-child { + margin-bottom: 0; +} +/* + * Keep color for headings if the default heading color is changed + */ +.uk-alert h1, +.uk-alert h2, +.uk-alert h3, +.uk-alert h4, +.uk-alert h5, +.uk-alert h6 { + color: inherit; +} +/* Close in alert + ========================================================================== */ +.uk-alert > .uk-close:first-child { + float: right; +} +/* + * Remove margin from adjacent element + */ +.uk-alert > .uk-close:first-child + * { + margin-top: 0; +} +/* Modifier: `uk-alert-success` + ========================================================================== */ +.uk-alert-success { + background: #f2fae3; + color: #659f13; + border-color: rgba(101, 159, 19, 0.3); +} +/* Modifier: `uk-alert-warning` + ========================================================================== */ +.uk-alert-warning { + background: #fffceb; + color: #e28327; + border-color: rgba(226, 131, 39, 0.3); +} +/* Modifier: `uk-alert-danger` + ========================================================================== */ +.uk-alert-danger { + background: #fff1f0; + color: #d85030; + border-color: rgba(216, 80, 48, 0.3); +} +/* Modifier: `uk-alert-large` + ========================================================================== */ +.uk-alert-large { + padding: 20px; +} +.uk-alert-large > .uk-close:first-child { + margin: -10px -10px 0 0; +} +/* ======================================================================== + Component: Thumbnail + ========================================================================== */ +/* + * 1. Container width fits its content + * 2. Responsive behavior + * 3. Corrects `max-width` behavior sed + * 4. Required for `figure` element + * 5. Style + */ +.uk-thumbnail { + /* 1 */ + display: inline-block; + /* 2 */ + max-width: 100%; + /* 3 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + /* 3 */ + margin: 0; + /* 4 */ + padding: 4px; + border: 1px solid #dddddd; + background: #ffffff; + border-radius: 4px; +} +/* + * Hover state for `a` elements + * 1. Apply hover style also to focus state + * 2. Needed for caption + * 3. Remove default focus style + */ +a.uk-thumbnail:hover, +a.uk-thumbnail:focus { + border-color: #aaaaaa; + background-color: #ffffff; + /* 2 */ + text-decoration: none; + /* 3 */ + outline: none; +} +/* Caption + ========================================================================== */ +.uk-thumbnail-caption { + padding-top: 4px; + text-align: center; + color: #444444; +} +/* Sizes + ========================================================================== */ +.uk-thumbnail-mini { + width: 150px; +} +.uk-thumbnail-small { + width: 200px; +} +.uk-thumbnail-medium { + width: 300px; +} +.uk-thumbnail-large { + width: 400px; +} +.uk-thumbnail-expand, +.uk-thumbnail-expand > img { + width: 100%; +} +/* ======================================================================== + Component: Overlay + ========================================================================== */ +/* + * 1. Container width fits its content + * 2. Create position context + * 3. Set max-width for responsive images to prevent `inline-block` consequences + * 4. Remove the gap between the container and its child element + * 5. Fixed wrong scaling calculation for images in Chrome + */ +.uk-overlay { + /* 1 */ + display: inline-block; + /* 2 */ + position: relative; + /* 3 */ + max-width: 100%; + /* 4 */ + vertical-align: middle; + /* 5 */ + overflow: hidden; +} +/* + * Remove margin from content + */ +.uk-overlay > :first-child { + margin-bottom: 0; +} +/* Sub-object `uk-overlay-area` + ========================================================================== */ +/* + * 1. Set position + * 2. Set style + * 3. Fade-in transition + */ +.uk-overlay-area { + /* 1 */ + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + /* 2 */ + background: rgba(0, 0, 0, 0.3); + /* 3 */ + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + -webkit-transform: translate3d(0, 0, 0); +} +/* + * Hover + * 1. `uk-hover` to support touch devices + * 2. Use optional `uk-overlay-toggle` to trigger the overlay earlier + */ +.uk-overlay:hover .uk-overlay-area, +.uk-overlay.uk-hover .uk-overlay-area, +.uk-overlay-toggle:hover .uk-overlay-area, +.uk-overlay-toggle.uk-hover .uk-overlay-area { + opacity: 1; +} +/* + * Icon + */ +.uk-overlay-area:empty:before { + content: "\f002"; + position: absolute; + top: 50%; + left: 50%; + width: 50px; + height: 50px; + margin-top: -25px; + margin-left: -25px; + font-size: 50px; + line-height: 1; + font-family: FontAwesome; + text-align: center; + color: #ffffff; +} +/* Sub-object `uk-overlay-area-content` + ========================================================================== */ +/* + * Remove whitespace between child elements when using `inline-block` + * Needed for Firefox + */ +.uk-overlay-area:not(:empty) { + font-size: 0.001px; +} +/* + * 1. Needed for vertical alignment + */ +.uk-overlay-area:not(:empty):before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +/* + * 1. Set vertical alignment + * 2. Reset whitespace hack + * 3. Set horizontal alignment + * 4. Set style + */ +.uk-overlay-area-content { + /* 1 */ + display: inline-block; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + vertical-align: middle; + /* 2 */ + font-size: 1rem; + /* 3 */ + text-align: center; + /* 4 */ + padding: 0 15px; + color: #ffffff; +} +/* + * Remove margin from the last-child + */ +.uk-overlay-area-content > :last-child { + margin-bottom: 0; +} +/* + * Links in overlay area + */ +.uk-overlay-area-content a:not([class]), +.uk-overlay-area-content a:not([class]):hover { + color: inherit; +} +/* DEPRECATED + * Sub-object `uk-overlay-caption` + ========================================================================== */ +/* + * 1. Set position + * 2. Set style + * 3. Fade-in transition + */ +.uk-overlay-caption { + /* 1 */ + position: absolute; + bottom: 0; + left: 0; + right: 0; + /* 2 */ + padding: 15px; + background: rgba(0, 0, 0, 0.5); + color: #ffffff; + /* 3 */ + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + -webkit-transform: translate3d(0, 0, 0); +} +/* + * Hover + * 1. `uk-hover` to support touch devices + * 2. Use optional `uk-overlay-toggle` to trigger the overlay earlier + */ +.uk-overlay:hover .uk-overlay-caption, +.uk-overlay.uk-hover .uk-overlay-caption, +.uk-overlay-toggle:hover .uk-overlay-caption, +.uk-overlay-toggle.uk-hover .uk-overlay-caption { + opacity: 1; +} +/* ======================================================================== + Component: Progress + ========================================================================== */ +/* + * 1. Clearing + * 2. Vertical alignment if text is used + */ +.uk-progress { + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 20px; + margin-bottom: 15px; + background: #f5f5f5; + /* 1 */ + overflow: hidden; + /* 2 */ + line-height: 20px; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06); + border-radius: 4px; +} +/* + * Add margin if adjacent element + */ +* + .uk-progress { + margin-top: 15px; +} +/* Sub-object: `uk-progress-bar` + ========================================================================== */ +/* + * 1. Transition + * 2. Needed for text + */ +.uk-progress-bar { + width: 0; + height: 100%; + background: #00a8e6; + float: left; + /* 1 */ + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; + /* 2 */ + font-size: 12px; + color: #ffffff; + text-align: center; + box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); +} +/* Size modifiers + ========================================================================== */ +/* Mini */ +.uk-progress-mini { + height: 6px; +} +/* Small */ +.uk-progress-small { + height: 12px; +} +/* Color modifiers + ========================================================================== */ +.uk-progress-success .uk-progress-bar { + background-color: #8cc14c; +} +.uk-progress-warning .uk-progress-bar { + background-color: #faa732; +} +.uk-progress-danger .uk-progress-bar { + background-color: #da314b; +} +/* Modifier: `uk-progress-striped` + ========================================================================== */ +.uk-progress-striped .uk-progress-bar { + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 30px 30px; +} +/* + * Animation + */ +.uk-progress-striped.uk-active .uk-progress-bar { + -webkit-animation: uk-progress-bar-stripes 2s linear infinite; + animation: uk-progress-bar-stripes 2s linear infinite; +} +@-webkit-keyframes uk-progress-bar-stripes { + 0% { + background-position: 0 0; + } + 100% { + background-position: 30px 0; + } +} +@keyframes uk-progress-bar-stripes { + 0% { + background-position: 0 0; + } + 100% { + background-position: 30px 0; + } +} +/* Size modifiers + ========================================================================== */ +.uk-progress-mini, +.uk-progress-small { + border-radius: 500px; +} +/* ======================================================================== + Component: Animation + ========================================================================== */ +[class*='uk-animation-'] { + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} +/* Hide animated element if scrollspy is used */ +@media screen { + [data-uk-scrollspy*='uk-animation-'] { + opacity: 0; + } +} +/* + * Fade + * Higher specificity (!important) needed because of reverse modifier + */ +.uk-animation-fade { + -webkit-animation-name: uk-fade; + animation-name: uk-fade; + -webkit-animation-duration: 0.8s; + animation-duration: 0.8s; + -webkit-animation-timing-function: linear !important; + animation-timing-function: linear !important; +} +/* + * Fade with scale + */ +.uk-animation-scale-up { + -webkit-animation-name: uk-fade-scale-02; + animation-name: uk-fade-scale-02; +} +.uk-animation-scale-down { + -webkit-animation-name: uk-fade-scale-18; + animation-name: uk-fade-scale-18; +} +/* + * Fade with slide + */ +.uk-animation-slide-top { + -webkit-animation-name: uk-fade-top; + animation-name: uk-fade-top; +} +.uk-animation-slide-bottom { + -webkit-animation-name: uk-fade-bottom; + animation-name: uk-fade-bottom; +} +.uk-animation-slide-left { + -webkit-animation-name: uk-fade-left; + animation-name: uk-fade-left; +} +.uk-animation-slide-right { + -webkit-animation-name: uk-fade-right; + animation-name: uk-fade-right; +} +/* + * Scale + */ +.uk-animation-scale { + -webkit-animation-name: uk-scale-12; + animation-name: uk-scale-12; +} +/* + * Shake + */ +.uk-animation-shake { + -webkit-animation-name: uk-shake; + animation-name: uk-shake; +} +/* Direction modifiers + ========================================================================== */ +.uk-animation-reverse { + -webkit-animation-direction: reverse; + animation-direction: reverse; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} +/* Duration modifiers +========================================================================== */ +.uk-animation-15 { + -webkit-animation-duration: 15s; + animation-duration: 15s; +} +/* Origin modifiers +========================================================================== */ +.uk-animation-top-left { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; +} +.uk-animation-top-center { + -webkit-transform-origin: 50% 0; + transform-origin: 50% 0; +} +.uk-animation-top-right { + -webkit-transform-origin: 100% 0; + transform-origin: 100% 0; +} +.uk-animation-middle-left { + -webkit-transform-origin: 0 50%; + transform-origin: 0 50%; +} +.uk-animation-middle-right { + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; +} +.uk-animation-bottom-left { + -webkit-transform-origin: 0 100%; + transform-origin: 0 100%; +} +.uk-animation-bottom-center { + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100%; +} +.uk-animation-bottom-right { + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; +} +/* Sub-object: `uk-animation-hover` +========================================================================== */ +/* + * Enable animation only on hover + * Needed for Firefox because animations are not triggered when switching between display `hidden` and `block` + */ +.uk-animation-hover:not(:hover), +.uk-animation-hover:not(:hover) [class*='uk-animation-'], +.uk-touch .uk-animation-hover:not(.uk-hover), +.uk-touch .uk-animation-hover:not(.uk-hover) [class*='uk-animation-'] { + -webkit-animation-name: none; + animation-name: none; +} +/* Keyframes: Fade + * Used by dropdown, datepicker and slideshow component + ========================================================================== */ +@-webkit-keyframes uk-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes uk-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +/* Keyframes: Fade with slide + ========================================================================== */ +/* + * Top + */ +@-webkit-keyframes uk-fade-top { + 0% { + opacity: 0; + -webkit-transform: translateY(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} +@keyframes uk-fade-top { + 0% { + opacity: 0; + transform: translateY(-100%); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +/* + * Bottom + */ +@-webkit-keyframes uk-fade-bottom { + 0% { + opacity: 0; + -webkit-transform: translateY(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} +@keyframes uk-fade-bottom { + 0% { + opacity: 0; + transform: translateY(100%); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +/* + * Left + */ +@-webkit-keyframes uk-fade-left { + 0% { + opacity: 0; + -webkit-transform: translateX(-100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + } +} +@keyframes uk-fade-left { + 0% { + opacity: 0; + transform: translateX(-100%); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} +/* + * Right + */ +@-webkit-keyframes uk-fade-right { + 0% { + opacity: 0; + -webkit-transform: translateX(100%); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + } +} +@keyframes uk-fade-right { + 0% { + opacity: 0; + transform: translateX(100%); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} +/* Keyframes: Fade with scale + ========================================================================== */ +/* + * Scale by 0.2 + */ +@-webkit-keyframes uk-fade-scale-02 { + 0% { + opacity: 0; + -webkit-transform: scale(0.2); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + } +} +@keyframes uk-fade-scale-02 { + 0% { + opacity: 0; + transform: scale(0.2); + } + 100% { + opacity: 1; + transform: scale(1); + } +} +/* + * Scale by 1.5 + * Used by slideshow component + */ +@-webkit-keyframes uk-fade-scale-15 { + 0% { + opacity: 0; + -webkit-transform: scale(1.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + } +} +@keyframes uk-fade-scale-15 { + 0% { + opacity: 0; + transform: scale(1.5); + } + 100% { + opacity: 1; + transform: scale(1); + } +} +/* + * Scale by 1.8 + */ +@-webkit-keyframes uk-fade-scale-18 { + 0% { + opacity: 0; + -webkit-transform: scale(1.8); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + } +} +@keyframes uk-fade-scale-18 { + 0% { + opacity: 0; + transform: scale(1.8); + } + 100% { + opacity: 1; + transform: scale(1); + } +} +/* Keyframes: Slide + * Used by slideshow component + ========================================================================== */ +/* + * Left + */ +@-webkit-keyframes uk-slide-left { + 0% { + -webkit-transform: translateX(-100%); + } + 100% { + -webkit-transform: translateX(0); + } +} +@keyframes uk-slide-left { + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(0); + } +} +/* + * Right + */ +@-webkit-keyframes uk-slide-right { + 0% { + -webkit-transform: translateX(100%); + } + 100% { + -webkit-transform: translateX(0); + } +} +@keyframes uk-slide-right { + 0% { + transform: translateX(100%); + } + 100% { + transform: translateX(0); + } +} +/* + * Left third + */ +@-webkit-keyframes uk-slide-left-33 { + 0% { + -webkit-transform: translateX(33%); + } + 100% { + -webkit-transform: translateX(0); + } +} +@keyframes uk-slide-left-33 { + 0% { + transform: translateX(33%); + } + 100% { + transform: translateX(0); + } +} +/* + * Right third + */ +@-webkit-keyframes uk-slide-right-33 { + 0% { + -webkit-transform: translateX(-33%); + } + 100% { + -webkit-transform: translateX(0); + } +} +@keyframes uk-slide-right-33 { + 0% { + transform: translateX(-33%); + } + 100% { + transform: translateX(0); + } +} +/* Keyframes: Scale + ========================================================================== */ +@-webkit-keyframes uk-scale-12 { + 0% { + -webkit-transform: scale(1.2); + } + 100% { + -webkit-transform: scale(1); + } +} +@keyframes uk-scale-12 { + 0% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} +/* Keyframes: Rotate + * Used by icon and search component + ========================================================================== */ +@-webkit-keyframes uk-rotate { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@keyframes uk-rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +/* Keyframes: Shake + ========================================================================== */ +@-webkit-keyframes uk-shake { + 0%, + 100% { + -webkit-transform: translateX(0); + } + 10% { + -webkit-transform: translateX(-9px); + } + 20% { + -webkit-transform: translateX(8px); + } + 30% { + -webkit-transform: translateX(-7px); + } + 40% { + -webkit-transform: translateX(6px); + } + 50% { + -webkit-transform: translateX(-5px); + } + 60% { + -webkit-transform: translateX(4px); + } + 70% { + -webkit-transform: translateX(-3px); + } + 80% { + -webkit-transform: translateX(2px); + } + 90% { + -webkit-transform: translateX(-1px); + } +} +@keyframes uk-shake { + 0%, + 100% { + transform: translateX(0); + } + 10% { + transform: translateX(-9px); + } + 20% { + transform: translateX(8px); + } + 30% { + transform: translateX(-7px); + } + 40% { + transform: translateX(6px); + } + 50% { + transform: translateX(-5px); + } + 60% { + transform: translateX(4px); + } + 70% { + transform: translateX(-3px); + } + 80% { + transform: translateX(2px); + } + 90% { + transform: translateX(-1px); + } +} +/* Keyframes: Fade with slide fixed + * Used by dropdown and search component + ========================================================================== */ +/* + * Top fixed + */ +@-webkit-keyframes uk-slide-top-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(-10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} +@keyframes uk-slide-top-fixed { + 0% { + opacity: 0; + transform: translateY(-10px); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +/* + * Bottom fixed + */ +@-webkit-keyframes uk-slide-bottom-fixed { + 0% { + opacity: 0; + -webkit-transform: translateY(10px); + } + 100% { + opacity: 1; + -webkit-transform: translateY(0); + } +} +@keyframes uk-slide-bottom-fixed { + 0% { + opacity: 0; + transform: translateY(10px); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +/* ======================================================================== + Component: Dropdown + ========================================================================== */ +/* + * 1. Hide by default + * 2. Set position + * 3. Box-sizing is needed for `uk-dropdown-justify` + * 4. Set style + * 5. Reset button group whitespace hack + */ +.uk-dropdown { + /* 1 */ + display: none; + /* 2 */ + position: absolute; + top: 100%; + left: 0; + z-index: 1020; + /* 3 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + /* 4 */ + width: 200px; + margin-top: 5px; + padding: 15px; + background: #ffffff; + color: #444444; + /* 5 */ + font-size: 1rem; + vertical-align: top; + border: 1px solid #dddddd; + border-radius: 4px; +} +/* + * 1. Show dropdown + * 2. Set animation + * 3. Needed for scale animation + */ +.uk-open > .uk-dropdown { + /* 1 */ + display: block; + /* 2 */ + -webkit-animation: uk-fade 0.2s ease-in-out; + animation: uk-fade 0.2s ease-in-out; + /* 3 */ + -webkit-transform-origin: 0 0; + transform-origin: 0 0; +} +/* Alignment modifiers + ========================================================================== */ +/* + * Modifier `uk-dropdown-flip` + */ +.uk-dropdown-flip { + left: auto; + right: 0; +} +/* + * Modifier `uk-dropdown-up` + */ +.uk-dropdown-up { + top: auto; + bottom: 100%; + margin-top: auto; + margin-bottom: 5px; +} +/* Nav in dropdown + ========================================================================== */ +.uk-dropdown .uk-nav { + margin: 0 -15px; +} +/* Grid and panel in dropdown + ========================================================================== */ +/* +* Vertical gutter +*/ +/* + * Grid + * Higher specificity to override large gutter + */ +.uk-grid .uk-dropdown-grid + .uk-dropdown-grid { + margin-top: 15px; +} +/* Panels */ +.uk-dropdown-grid > [class*='uk-width-'] > .uk-panel + .uk-panel { + margin-top: 15px; +} +/* Tablet and bigger */ +@media (min-width: 768px) { + /* + * Horizontal gutter + */ + .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid { + margin-left: -15px; + margin-right: -15px; + } + .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-'] { + padding-left: 15px; + padding-right: 15px; + } + /* + * Column divider + */ + .uk-dropdown:not(.uk-dropdown-stack) > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { + border-left: 1px solid #dddddd; + } + /* + * Width multiplier for dropdown columns + */ + .uk-dropdown-width-2:not(.uk-dropdown-stack) { + width: 400px; + } + .uk-dropdown-width-3:not(.uk-dropdown-stack) { + width: 600px; + } + .uk-dropdown-width-4:not(.uk-dropdown-stack) { + width: 800px; + } + .uk-dropdown-width-5:not(.uk-dropdown-stack) { + width: 1000px; + } +} +/* Phone landscape and smaller */ +@media (max-width: 767px) { + /* + * Stack columns and take full width + */ + .uk-dropdown-grid > [class*='uk-width-'] { + width: 100%; + } + /* + * Vertical gutter + */ + .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { + margin-top: 15px; + } +} +/* +* Stack grid columns +*/ +.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-'] { + width: 100%; +} +.uk-dropdown-stack > .uk-dropdown-grid > [class*='uk-width-']:nth-child(n+2) { + margin-top: 15px; +} +/* Modifier `uk-dropdown-small` + ========================================================================== */ +/* + * Set min-width and text expands dropdown if needed + */ +.uk-dropdown-small { + min-width: 150px; + width: auto; + padding: 5px; + white-space: nowrap; +} +/* + * Nav in dropdown + */ +.uk-dropdown-small .uk-nav { + margin: 0 -5px; +} +/* Modifier: `uk-dropdown-navbar` + ========================================================================== */ +.uk-dropdown-navbar { + margin-top: 6px; + background: #ffffff; + color: #444444; + left: -1px; + border: 1px solid #dddddd; + border-radius: 4px; +} +.uk-open > .uk-dropdown-navbar { + -webkit-animation: uk-slide-top-fixed 0.2s ease-in-out; + animation: uk-slide-top-fixed 0.2s ease-in-out; +} +/* Modifier `uk-dropdown-scrollable` + ========================================================================== */ +/* + * Usefull for long lists + */ +.uk-dropdown-scrollable { + overflow-y: auto; + max-height: 200px; +} +.uk-dropdown-navbar.uk-dropdown-flip { + left: auto; +} +/* ======================================================================== + Component: Modal + ========================================================================== */ +/* + * This is the modal overlay and modal dialog container + * 1. Hide by default + * 2. Set fixed position + * 3. Allow scrolling for the modal dialog + * 4. Mask the background page + * 5. Fade-in transition + */ +.uk-modal { + /* 1 */ + display: none; + /* 2 */ + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1010; + /* 3 */ + overflow-y: auto; + -webkit-overflow-scrolling: touch; + /* 4 */ + background: rgba(0, 0, 0, 0.6); + /* 5 */ + opacity: 0; + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +/* + * Open state + */ +.uk-modal.uk-open { + opacity: 1; +} +/* + * Prevents duplicated scrollbar caused by 4. + */ +.uk-modal-page, +.uk-modal-page body { + overflow: hidden; +} +/* Sub-object: `uk-modal-dialog` + ========================================================================== */ +/* + * 1. Create position context for `uk-modal-dialog-frameless` + * 2. Set box sizing + * 3. Set style + * 4. Slide-in transition + */ +.uk-modal-dialog { + /* 1 */ + position: relative; + /* 2 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + margin: 50px auto; + padding: 20px; + width: 600px; + max-width: 100%; + max-width: calc(100% - 20px); + /* 3 */ + background: #ffffff; + /* 4 */ + opacity: 0; + -webkit-transform: translateY(-100px); + transform: translateY(-100px); + -webkit-transition: opacity 0.3s linear, -webkit-transform 0.3s ease-out; + transition: opacity 0.3s linear, transform 0.3s ease-out; + border-radius: 4px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); +} +/* Phone landscape and smaller */ +@media (max-width: 767px) { + /* + * Fit in small screen + */ + .uk-modal-dialog { + width: auto; + margin: 10px; + } +} +/* + * Open state + */ +.uk-open .uk-modal-dialog { + /* 4 */ + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); +} +/* + * Remove margin from the last-child + */ +.uk-modal-dialog > :last-child { + margin-bottom: 0; +} +/* Close in modal + ========================================================================== */ +.uk-modal-dialog > .uk-close:first-child { + margin: -10px -10px 0 0; + float: right; +} +/* + * Remove margin from adjacent element + */ +.uk-modal-dialog > .uk-close:first-child + * { + margin-top: 0; +} +/* Modifier: `uk-modal-dialog-frameless` + ========================================================================== */ +.uk-modal-dialog-frameless { + padding: 0; +} +/* + * Close in modal + */ +.uk-modal-dialog-frameless > .uk-close:first-child { + position: absolute; + top: -12px; + right: -12px; + margin: 0; + float: none; +} +/* Phone landscape and smaller */ +@media (max-width: 767px) { + .uk-modal-dialog-frameless > .uk-close:first-child { + top: -7px; + right: -7px; + } +} +/* Modifier: `uk-modal-dialog-large` + ========================================================================== */ +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-modal-dialog-large { + width: 930px; + } +} +/* Large screen and bigger */ +@media (min-width: 1220px) { + .uk-modal-dialog-large { + width: 1130px; + } +} +/* ======================================================================== + Component: Off-canvas + ========================================================================== */ +/* + * This is the offcanvas overlay and bar container + * 1. Hide by default + * 2. Set fixed position + * 3. Deactivate browser touch actions in IE11 + * 4. Mask the background page + */ +.uk-offcanvas { + /* 1 */ + display: none; + /* 2 */ + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1000; + /* 3 */ + touch-action: none; + /* 4 */ + background: rgba(0, 0, 0, 0.1); +} +.uk-offcanvas.uk-active { + display: block; +} +/* Sub-object `uk-offcanvas-page` + ========================================================================== */ +/* + * Prepares the whole HTML page to slide-out + * 1. Fix the main page and disallow scrolling + * 2. Side-out transition + */ +.uk-offcanvas-page { + /* 1 */ + position: fixed; + /* 2 */ + -webkit-transition: margin-left 0.3s ease-in-out; + transition: margin-left 0.3s ease-in-out; +} +/* Sub-object `uk-offcanvas-bar` + ========================================================================== */ +/* + * This is the offcanvas bar + * 1. Set fixed position + * 2. Size and style + * 3. Allow scrolling + * 4. Side-out transition + * 5. Deavtivate scroll chaining in IE11 + */ +.uk-offcanvas-bar { + /* 1 */ + position: fixed; + top: 0; + bottom: 0; + left: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + z-index: 1001; + /* 2 */ + width: 270px; + max-width: 100%; + background: #333333; + /* 3 */ + overflow-y: auto; + -webkit-overflow-scrolling: touch; + /* 4 */ + -webkit-transition: -webkit-transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; + /* 5 */ + -ms-scroll-chaining: none; +} +.uk-offcanvas.uk-active .uk-offcanvas-bar.uk-offcanvas-bar-show { + -webkit-transform: translateX(0%); + transform: translateX(0%); +} +/* Modifier `uk-offcanvas-bar-flip` + ========================================================================== */ +.uk-offcanvas-bar-flip { + left: auto; + right: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); +} +/* Panel in offcanvas + ========================================================================== */ +.uk-offcanvas .uk-panel { + margin: 20px 15px; + color: #777777; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +.uk-offcanvas .uk-panel-title { + color: #cccccc; +} +.uk-offcanvas .uk-panel a:not([class]) { + color: #cccccc; +} +.uk-offcanvas .uk-panel a:not([class]):hover { + color: #ffffff; +} +.uk-offcanvas-bar:after { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 1px; + background: rgba(0, 0, 0, 0.6); + box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.6); +} +.uk-offcanvas-bar-flip:after { + right: auto; + left: 0; + width: 1px; + background: rgba(0, 0, 0, 0.6); + box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.6); +} +/* ======================================================================== + Component: Switcher + ========================================================================== */ +.uk-switcher { + margin: 0; + padding: 0; + list-style: none; +} +/* + * Items + */ +.uk-switcher > *:not(.uk-active) { + display: none; +} +/* ======================================================================== + Component: Tooltip + ========================================================================== */ +/* + * 1. Hide by default + * 2. Set fixed position + * 3. Set dimensions + * 4. Set style + */ +.uk-tooltip { + /* 1 */ + display: none; + /* 2 */ + position: absolute; + z-index: 1030; + /* 3 */ + -moz-box-sizing: border-box; + box-sizing: border-box; + max-width: 200px; + padding: 5px 8px; + /* 4 */ + background: #333333; + color: rgba(255, 255, 255, 0.7); + font-size: 12px; + line-height: 18px; + text-align: center; + border-radius: 3px; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); +} +/* Triangle + ========================================================================== */ +/* + * 1. Dashed is less antialised than solid + */ +.uk-tooltip:after { + content: ""; + display: block; + position: absolute; + width: 0; + height: 0; + /* 1 */ + border: 5px dashed #333333; +} +/* Direction modifiers + ========================================================================== */ +/* + * Top + */ +.uk-tooltip-top:after, +.uk-tooltip-top-left:after, +.uk-tooltip-top-right:after { + bottom: -5px; + border-top-style: solid; + border-bottom: none; + border-left-color: transparent; + border-right-color: transparent; + border-top-color: #333333; +} +/* + * Bottom + */ +.uk-tooltip-bottom:after, +.uk-tooltip-bottom-left:after, +.uk-tooltip-bottom-right:after { + top: -5px; + border-bottom-style: solid; + border-top: none; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-color: #333333; +} +/* + * Top/Bottom center + */ +.uk-tooltip-top:after, +.uk-tooltip-bottom:after { + left: 50%; + margin-left: -5px; +} +/* + * Top/Bottom left + */ +.uk-tooltip-top-left:after, +.uk-tooltip-bottom-left:after { + left: 10px; +} +/* + * Top/Bottom right + */ +.uk-tooltip-top-right:after, +.uk-tooltip-bottom-right:after { + right: 10px; +} +/* + * Left + */ +.uk-tooltip-left:after { + right: -5px; + top: 50%; + margin-top: -5px; + border-left-style: solid; + border-right: none; + border-top-color: transparent; + border-bottom-color: transparent; + border-left-color: #333333; +} +/* + * Right + */ +.uk-tooltip-right:after { + left: -5px; + top: 50%; + margin-top: -5px; + border-right-style: solid; + border-left: none; + border-top-color: transparent; + border-bottom-color: transparent; + border-right-color: #333333; +} +/* ======================================================================== + Component: Text + ========================================================================== */ +/* Size modifiers + ========================================================================== */ +.uk-text-small { + font-size: 11px; + line-height: 16px; +} +.uk-text-large { + font-size: 18px; + line-height: 24px; + font-weight: normal; +} +/* Weight modifiers + ========================================================================== */ +.uk-text-bold { + font-weight: bold; +} +/* Color modifiers + ========================================================================== */ +.uk-text-muted { + color: #999999 !important; +} +.uk-text-primary { + color: #2d7091 !important; +} +.uk-text-success { + color: #659f13 !important; +} +.uk-text-warning { + color: #e28327 !important; +} +.uk-text-danger { + color: #d85030 !important; +} +/* Alignment modifiers + ========================================================================== */ +.uk-text-left { + text-align: left !important; +} +.uk-text-right { + text-align: right !important; +} +.uk-text-center { + text-align: center !important; +} +.uk-text-justify { + text-align: justify !important; +} +.uk-text-top { + vertical-align: top !important; +} +.uk-text-middle { + vertical-align: middle !important; +} +.uk-text-bottom { + vertical-align: bottom !important; +} +/* Only tablets portrait and smaller */ +@media (max-width: 959px) { + .uk-text-center-medium { + text-align: center !important; + } +} +/* Phone landscape and smaller */ +@media (max-width: 767px) { + .uk-text-center-small { + text-align: center !important; + } +} +/* Wrap modifiers + ========================================================================== */ +/* + * Prevent text from wrapping onto multiple lines + */ +.uk-text-nowrap { + white-space: nowrap; +} +/* + * Prevent text from wrapping onto multiple lines, and truncate with an ellipsis + */ +.uk-text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +/* + * Break strings if their length exceeds the width of their container + */ +.uk-text-break { + word-wrap: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + -moz-hyphens: auto; + hyphens: auto; +} +/* ======================================================================== + Component: Utility + ========================================================================== */ +/* Container + ========================================================================== */ +.uk-container { + -moz-box-sizing: border-box; + box-sizing: border-box; + max-width: 980px; + padding: 0 25px; +} +/* Large screen and bigger */ +@media (min-width: 1220px) { + .uk-container { + max-width: 1200px; + padding: 0 35px; + } +} +/* + * Micro clearfix + */ +.uk-container:before, +.uk-container:after { + content: ""; + display: block; +} +.uk-container:after { + clear: both; +} +/* + * Center container + */ +.uk-container-center { + margin-left: auto; + margin-right: auto; +} +/* Clearing + ========================================================================== */ +/* + * Micro clearfix + * 1. Not possible to use `table` because it creates a 1px gap when it becomes a flex item + */ +.uk-clearfix:before, +.uk-clearfix:after { + content: ""; + /* 1 */ + display: block; +} +.uk-clearfix:after { + clear: both; +} +/* + * Create a new block formatting context + */ +.uk-nbfc { + overflow: hidden; +} +.uk-nbfc-alt { + display: table-cell; + width: 10000px; +} +/* Alignment of block elements + ========================================================================== */ +/* + * Float blocks + * 1. Prevent content overflow on small devices + */ +.uk-float-left { + float: left; +} +.uk-float-right { + float: right; +} +/* 1 */ +[class*='uk-float-'] { + max-width: 100%; +} +/* Alignment of images and objects + ========================================================================== */ +/* + * Alignment + */ +[class*='uk-align-'] { + display: block; + margin-bottom: 15px; +} +.uk-align-left { + margin-right: 15px; + float: left; +} +.uk-align-right { + margin-left: 15px; + float: right; +} +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-align-medium-left { + margin-right: 15px; + margin-bottom: 15px; + float: left; + } + .uk-align-medium-right { + margin-left: 15px; + margin-bottom: 15px; + float: right; + } +} +.uk-align-center { + margin-left: auto; + margin-right: auto; +} +/* Vertical alignment + ========================================================================== */ +/* + * Remove whitespace between child elements when using `inline-block` + */ +.uk-vertical-align { + font-size: 0.001px; +} +/* + * The `uk-vertical-align` container needs a specific height + */ +.uk-vertical-align:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +/* + * Sub-object which can have any height + * 1. Reset whitespace hack + */ +.uk-vertical-align-middle, +.uk-vertical-align-bottom { + display: inline-block; + max-width: 100%; + /* 1 */ + font-size: 1rem; +} +.uk-vertical-align-middle { + vertical-align: middle; +} +.uk-vertical-align-bottom { + vertical-align: bottom; +} +/* Height + ========================================================================== */ +/* + * More robust if padding and border are used + */ +[class*='uk-height'] { + -moz-box-sizing: border-box; + box-sizing: border-box; +} +/* + * Useful to extend the `html` and `body` element to the full height of the page. + */ +.uk-height-1-1 { + height: 100%; +} +/* + * Useful to create image teasers + */ +.uk-height-viewport { + height: 100vh; + min-height: 600px; +} +/* Responsive objects + * Note: Images are already responsive by default, see Base component + ========================================================================== */ +/* + * 1. Corrects `max-width` and `max-height` behavior if padding and border are used + */ +.uk-responsive-width, +.uk-responsive-height { + -moz-box-sizing: border-box; + box-sizing: border-box; +} +/* + * Responsiveness: Sets a maximum width relative to the parent and auto scales the height + * `important` needed to override `uk-img-preserve img` + */ +.uk-responsive-width { + max-width: 100% !important; + height: auto; +} +/* + * Responsiveness: Sets a maximum height relative to the parent and auto scales the width + * Only works if the parent element has a fixed height. + */ +.uk-responsive-height { + max-height: 100%; + width: auto; +} +/* Margin + ========================================================================== */ +/* + * Create a block with the same margin of a paragraph + * Add margin if adjacent element + */ +.uk-margin { + margin-bottom: 15px; +} +* + .uk-margin { + margin-top: 15px; +} +.uk-margin-top { + margin-top: 15px !important; +} +.uk-margin-bottom { + margin-bottom: 15px !important; +} +.uk-margin-left { + margin-left: 15px !important; +} +.uk-margin-right { + margin-right: 15px !important; +} +/* + * Larger margins + */ +.uk-margin-large { + margin-bottom: 50px; +} +* + .uk-margin-large { + margin-top: 50px; +} +.uk-margin-large-top { + margin-top: 50px !important; +} +.uk-margin-large-bottom { + margin-bottom: 50px !important; +} +.uk-margin-large-left { + margin-left: 50px !important; +} +.uk-margin-large-right { + margin-right: 50px !important; +} +/* + * Smaller margins + */ +.uk-margin-small { + margin-bottom: 5px; +} +* + .uk-margin-small { + margin-top: 5px; +} +.uk-margin-small-top { + margin-top: 5px !important; +} +.uk-margin-small-bottom { + margin-bottom: 5px !important; +} +.uk-margin-small-left { + margin-left: 5px !important; +} +.uk-margin-small-right { + margin-right: 5px !important; +} +/* + * Remove margins + */ +.uk-margin-remove { + margin: 0 !important; +} +.uk-margin-top-remove { + margin-top: 0 !important; +} +.uk-margin-bottom-remove { + margin-bottom: 0 !important; +} +/* Border + ========================================================================== */ +.uk-border-circle { + border-radius: 50%; +} +.uk-border-rounded { + border-radius: 5px; +} +/* Headings + ========================================================================== */ +/* Tablet and bigger */ +@media (min-width: 768px) { + .uk-heading-large { + font-size: 52px; + line-height: 64px; + } +} +/* Link + ========================================================================== */ +/* + * Let links appear in default text color + */ +.uk-link-muted, +.uk-link-muted a { + color: #444444; +} +.uk-link-muted:hover, +.uk-link-muted a:hover { + color: #444444; +} +/* + * Reset link style + */ +.uk-link-reset, +.uk-link-reset a, +.uk-link-reset:hover, +.uk-link-reset a:hover { + color: inherit; + text-decoration: none; +} +/* Scrollable + ========================================================================== */ +/* + * Enable scrolling for preformatted text + */ +.uk-scrollable-text { + height: 300px; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + resize: both; +} +/* + * Box with scrolling enabled + */ +.uk-scrollable-box { + -moz-box-sizing: border-box; + box-sizing: border-box; + height: 170px; + padding: 10px; + border: 1px solid #dddddd; + overflow: auto; + -webkit-overflow-scrolling: touch; + resize: both; + border-radius: 3px; +} +.uk-scrollable-box > :last-child { + margin-bottom: 0; +} +/* Overflow + ========================================================================== */ +/* + * Enable scrollbars if content is clipped + */ +.uk-overflow-container { + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.uk-overflow-container > :last-child { + margin-bottom: 0; +} +/* Position + ========================================================================== */ +.uk-position-absolute { + position: absolute !important; +} +.uk-position-relative { + position: relative !important; +} +.uk-position-cover { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +/* Display + ========================================================================== */ +/* + * Display + */ +.uk-display-block { + display: block !important; +} +.uk-display-inline { + display: inline !important; +} +.uk-display-inline-block { + display: inline-block !important; +} +/* + * Visibility + * Avoids setting display to `block` so it works also with `inline-block` and `table` + */ +/* Desktop and bigger */ +@media (min-width: 960px) { + .uk-visible-small { + display: none !important; + } + .uk-visible-medium { + display: none !important; + } + .uk-hidden-large { + display: none !important; + } +} +/* Tablets portrait */ +@media (min-width: 768px) and (max-width: 959px) { + .uk-visible-small { + display: none !important; + } + .uk-visible-large { + display: none !important ; + } + .uk-hidden-medium { + display: none !important; + } +} +/* Phone landscape and smaller*/ +@media (max-width: 767px) { + .uk-visible-medium { + display: none !important; + } + .uk-visible-large { + display: none !important; + } + .uk-hidden-small { + display: none !important; + } +} +/* Remove from the flow and screen readers on any device */ +.uk-hidden { + display: none !important; + visibility: hidden !important; +} +/* It's hidden, but still affects layout */ +.uk-invisible { + visibility: hidden !important; +} +/* Show on hover */ +.uk-visible-hover:hover .uk-hidden, +.uk-visible-hover:hover .uk-invisible { + display: block !important; + visibility: visible !important; +} +.uk-visible-hover-inline:hover .uk-hidden, +.uk-visible-hover-inline:hover .uk-invisible { + display: inline-block !important; + visibility: visible !important; +} +/* ======================================================================== + Component: Print + ========================================================================== */ +@media print { + * { + background: transparent !important; + color: black !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Bold.woff b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-Bold.woff new file mode 100755 index 0000000000000000000000000000000000000000..df131b573e91d862ad18b306a70cb65872f68ac9 GIT binary patch literal 19184 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�sKfjY=`ZNqD_w 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedBold.woff b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedBold.woff new file mode 100755 index 0000000000000000000000000000000000000000..7750b96a28d98125d8a93f9286b014257238fb5e GIT binary patch literal 15180 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedLight.woff b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans-CondensedLight.woff new file mode 100755 index 0000000000000000000000000000000000000000..9c5168d2f1f37abe80b6615b7f23a74b256f17f8 GIT binary patch literal 13944 zcmb`uWprChkS%P-%*+%s#O#=vV`gS%W=_n^%*@Qp%!!#TGc)6-+?n~_-1TP7uh**T z-nCVyRoyCS=`2;d$%%=9fPw%Un>z^7-%%GHX#d0fwf=h(7ZDW$0RdG9a+v=pGRV5P zyqpq{vj^Jn|0o6sthkbj5Rmf*+8RK0-WcCZms4V326D?lTL-B6xyK2ZMm7e(>%MRR z?L?ps&iFf$nHf0!ip#pNSSU}g< zg44oXYda(0waofJzjC0qGnJFZ+8DS4WBLAfU0?s|7eCNTTLT*tAV&+d2Y`ODgsL3v z_I6IrKn@rSXb>VJ0d@0EYsmw&9afBL^W3;WLl#2u7igtcD~6r}fhtAc@X zwNZ4sI(Gv=mp&$V@341+1j;<#?r-C{{E9YkOD#~VL#OEXl&$`DpCfR2Dk7_^pfe|9 ztbg!wzpP`vP5a#m6&DU1l3^|o0k|mO+(!DQh=%h9`lj3ZSwohSy}eXOd1(yHg-lG0 z%#02!4NML7j7)Vr`ud)iy}8I!y}h}8AmG8#ebWMxfKNTPXFn2nI{Yqa6j=DkTR}(K z=E^kzNBBt)6Jtcm|D0c6-&h~g5E7CQ5;K@UKr=!Rbacn?O8?5Z)QDrsJ{!PaKy1V~ z$5gB(?S?LbUWmSjo`_zFu8l50==jDU{#V_{P;pgTj@2Atp$II*6Wdjr*VWm&)LEku30+BOss9&zP9nq|)2pC8T zCTkaPf5AYYfqRPy0`>U`g5(YwSOJbol5ZF)ksAt4EFvP0j)6iV zHdu?!`1LC{m7+l7B8J;gm1>!$Xrm;ZO_|H-&f=b?FQ8%leFeRGqcvQ24Ho5VlR^e9lC9shSA^htE3{Mp7h!>k%Uo8VQcXDfv2T zbmkY4J8KPz-8Q6XsXoy&a?2{=SG5-kBUbzo@z^@uOm>0_wNj5JZZEvMv#P@tEzms% zO}ts}Nqx3WxTq!eCh*2g`0r3I;6o4>E${9OSCk)Q^iqAG_DS7J`aY;<0~U8#ffM?? z0E(^-#3qTob$uZh>=6rZXGkQZF6j!^z(8CC&!7;+@`W*;QfI{=T%pmNS@~EmDic(g z#7+x@71Ra~+jpMZ^yl>OPMe5kI_3c57up64O4%$<@}}Wf?q#S8@e6hN*W}l0RRwiL zsulg zidAuvVy@y!6dx-AgwK%zqnFX&!Qof>*g72FzL~kYKH#fIvSONx_niqM2VzavAM8z! zXOp64@ww~>mvUVLmU{SFT`G1ro2JzrtkjV19%g!c?l)Q$M&SNdwC3E3Z||n@-H-Dxx?fYRdRg{YI_OFJxF=hO zSj51aV+Q!|vpSy(O;@H7iA8ZwItZM@bC{apbI?jN(nlA}++Inv3TG=#xVW&KkpCcd zQz~zwvO8Q2+^=9;Okcbd5bPCR!#i}Cec!6P1b|(&F|x-^c9Bg&sFA6JwBrcH%3cB> zQ*>AKH9K7wZos*4j4JKCv8p#dA?S5D0-LODx%_adC|nm)-r{hR6pNH87jRs}iV!s+ zKV}~a{Z*c&mMQ1 zSX<0OS?vNcsUL)U+dwv2zz*ly0mCi&bjV?t@KTq;-4)i!(jYT?cUHHfTM)s#<{V%> z9}^7sWe?fx_(Fg^jdvn#ah~tTK{>1|m>RoJZ6r3m5c}g9Un{~eTesz_t*nNZ*9yKf zT+I-}0PXV6i(OWCPTQf&JkLhZ9CUNrqEMKZ%|Xb8dgKBTnuTA44r%n^Pnx{&Kah`8 ztckGo_#j2By=h072q9yyX}|)5afKQOzZSL2cZ^9E=E~<~G&9dudFOdf2d*Oz3=V~@ zrTfP_U0;r_ftN72U8MF5&)9_J#bjheBI}gN%jX%+fc$I{Sgu)|j8b;T%)1bz3EO!%Eq(T-rNY&< z?T6ttH?sIv7|BM$+R^Tb2c?Y<^p9h;ghx_+(I*?R(`YXiE@geen=FG+*nq&<6$aT(GIvvupi(yuxme zo^DdlnX{CpfwYUNsFJGU$J@$Uhp!fqQoHrbuV$%NtZb>xweIuzgebU{p5}6su5ss| zTlH^4>jX;q5BuG%+RMUIfjMx2IUkwB7g(CbF6?eiq~-DaxWj?9n3~Rc@8zcL6-*vR zXi6#@(*as~D?u}whl(mV%+KgN5OOD{@he2Az1S&tSL14OS7n!*l}E5`aeCAAw#@fWoS!o}>?i1S1yzC7^|4^wzQZSnA)|+b&?y0)*3)s>^%6AmPU7$mr z;iZV=%k#*X$i7C^V=I;flRrV2(s_Hx>{VW&1YIk0Ud!h*)a10iHQjl@1;a;1*jSgY zYT0Qd@uGk3K}UvuJB~)%kKiYH-NSD0cJ?@jlgiJDcdMky$Nvg(pCDi0kN6evJBnF^ zge<6S4mAIbd(KFnLF0^Lf;LutXD>MS=qi$weBwjHvCKuNh@#d0=COytr_oO3)qCxx z6U2u>t>)))*%6y7^(4(CmjkpdV*g3#{L@TLc5t58^sbt3@5r_3mf-PbKv@2PKc2NM zcl6d^2BWQY@YfW%)Tlp5d_SL(5-&7q((8T^y6aXX{P4ItHte)gKs25X?yMfVIrMB> zB4J z#()BgkNiHi5o#L+TW)QvkMg5j6ykwT%Z7FN3^>&BHn9eiB z=q)>*onY|D8)3xJVBug*$oR%H#kUv_?3Q&K;6}`Xs!6+ zo`R`$IUk?gvsl&J=5aT-QZ0jM#3Fo~OQ1DA=I=ec21ST>`a;y1bUpPHixM|hlHH=o zRIdrD_1i=XS)!aqfndL=1EuDWaK(vcWK*zslw5Z=AYeEutTB1#KHK7^O=>8G`#vOt z6Do?4xdf>QR8fpHFMW;i3?1^BByfgOUUYOOcdGk5vDt}bNEmabYKP;jZWP1d_kkieXz69k^K*Zz zp%(^mK4Pt%gszNR!--F{Ho(sMl~0>lg@vH-~!F874Rv(P#`uum@@*?Dd8lW3g#A`XJ5t|Qw!wbmR1l>rEmv-gI_=Rcldpq(WkH@l2O8Xe@6X&+ z=B#tr4J;1eHJ{OO;Ng2@5*gUzhDtsS;auX zNmuIxgW+56_#jihz@@ZYwf}Iwx0`%;QsHR8KoW|$9yeqt6+G0(LEdk%M|ncu)r(%D zTa(|C55!!-M9b#i@MRlKj=?NCTkG&c(@7z#kI^OWv;sd4+Ql0vz>7Zm9k^{K+vn

@#esXEV0mkFj{4ajO5DyXF2lz#EaSOp~3uQeQ{a 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%0DE>ep71=c8 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

m#e0*GM$FQP{q=+pCF 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans.woff b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/fonts/OpenSans.woff new file mode 100755 index 0000000000000000000000000000000000000000..28b9458191fe82436cffaba65fddf8eeb5644e79 GIT binary patch literal 19396 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 q%u^)w#YX9ZIvhtu?9Cy6YRi6f6G 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/be.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/be.png new file mode 100755 index 0000000000000000000000000000000000000000..e857ef57be0cc517fe8a3230ff7bf4f86db46b26 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3HE3?VkA`NU;<N%Zdpy^g`HK7a6UcbO&e;gQu&X%Q~loCIFNpQpNxP literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/bg.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/bg.png new file mode 100755 index 0000000000000000000000000000000000000000..70f9a0f7b9ae64e43130d59c447f0bf94f9e65fe GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3HE3?VkA`NU;<4nJ za0`Jj}lsZwE6iP&9c9;6C^w&f$;8+R$gPP z=6UP)FKCXjDYZz^^70#I_V0j3Ze2R%0DE-#H$#(8u{E` TtXa1XXe)!KtDnm{r-UW|PP9|` literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/cn.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/cn.png new file mode 100755 index 0000000000000000000000000000000000000000..54a82519f11d7e85ce9d3e34d2cbd40ee4e88c4b GIT binary patch literal 894 zcmV-^1A+XBP)~ix2n6RCz)AdL`9KgqvYUa4=X5m z^C0*mya+0u{Q-LOs7I0g1$y=1Z*W2I;z1X(Du^gXj2V+ocUQe0swa}nOeW%J+HoEz zW|*!n`kD8mx@76ZjPe^{Mz)d%9B4VR6@Lh$5mqoQ#k7?4uM*8=B+LE?b|>tsF#s*W z&MJp*b=ZGpop|2uIDao0Dy#*>^N#qKLyH|E=Rgug8sW39jUgH~L35#Xwm?$l{nH4E zd*?_5ZdG`5txdAv$e%|@s%QZSh%m}-@m=%^Yc;Cx(om*O=SW15aFqand>#IipbF)3 zCA%Rs|1QX1*v;$IptQIC?;4~e1uUqC#&Jh7?}?6j8jDqJT0-ikx@9G?A=)@d{&dV< zTIa~^RqTwfP50gsVJ#s(=-GcYBRcHRj$m3E1c5`>KjT*fX({D9!-u;~HvY3cX|4cq zxDP`uBHKl_zj$Z?@to(twKdW+C42^o>S7E`L-r`*{jDbXl0}mK3;Rr%I#s2#1K+7f zO7{o@oBQbO<#lE*WRO=E5?Hy{VEN7z_)yD$TSs3&v8k$o3d=4pe9wu}iB#=P+T#iX$*hcF!A)a%@a}LdSp8GTD8(}RV zIbM<+b1dI%^6`EO3fVKu?8S`6V#&ty!S$;pOr0#)cR52M<-Fcof+SlnYc5En zy~W@G1=X-0o0bwC@Ms~pPl8{OTGaC3Bs28LLjT{orzI5P1xNNI#&=-jqYd|T8($3= z$z$|AEh$JGMqSbwc5!&vHLe?d**q=P$a9myHT*3on6@Gok_E@wqj=~`$zCy<2yZ_v z)l?QnnbM}7DZHJU^v<8hM0nhp2#-4x;c;goJnl?{$DN7rxHAzRcP7H)&Tl9D1q9R) UMxZCHQ2+n{07*qoM6N<$f@HgtDF6Tf literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/cz.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/cz.png new file mode 100755 index 0000000000000000000000000000000000000000..57afc80000175a9af5a0941059a726f02ca9809f GIT binary patch literal 502 zcmVEIMZM9))5|BeH&(GQKR4}nIjh7U^+pq02dB8a zZB6Sv&hyH(Amks`wM$6{R<(zOIg8qf!ki`Tk;0r6?Nq{?cJ0){oM!E@g*lDd6A5$w z+O6mvJDXMU+L?s8i|Yp!+L?tp4cfU0bCR`l73QRBI}zrjX*(0goMOAKKuvJyg2kfhI{w%0+f4(61v_U2k&j0`b07*qoM6N<$f_RhPIsgCw literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/de.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/de.png new file mode 100755 index 0000000000000000000000000000000000000000..11fdab3ca7c773d0372937eb1a01e642181d4b9a GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3HE3?VkA`NU;<~HTmatvE z%DR5ldBs+4X_$bdPq_G=P4)9Xgxx)aq)yVOoN@VHW;uTy#yFro44$rjF6*2UngCQd BOoIRb literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/dk.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/dk.png new file mode 100755 index 0000000000000000000000000000000000000000..8059e3991084382a79dbc4716660abe5b27fd43e GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3HE3?VkA`NU;<J52t&_k^A`U9zU9JZ5V1q`nHFeD-mx`S@x5!7J+J|2 OHG`+CpUXO@geCynuUO6i literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ee.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/ee.png new file mode 100755 index 0000000000000000000000000000000000000000..e5e63ad2f22154cc55c007595fda3898a853b01f GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3HE3?VkA`NU;<&&vU$xEoemgHh%y`B-hP-WTy=L!x?*r{&@O1Ta JS?83{1OS(BPd@+v literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/err.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/err.png new file mode 100755 index 0000000000000000000000000000000000000000..0511b7ff3c593eca49e4795811c5798ba8238afa GIT binary patch literal 2797 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 S5Q#Vd0000;G6~HASjJuq>_waw(+t1|)w3fls L)z4*}Q$iB}I$>33 literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/fr.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/fr.png new file mode 100755 index 0000000000000000000000000000000000000000..ff3dbc35abbceab13aaf7ad1e340d0f139ccf660 GIT binary patch literal 228 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 Q1=`5q>FVdQ&MBb@0Lx)c%K!iX literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/nl.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/nl.png new file mode 100755 index 0000000000000000000000000000000000000000..b91472114e561958d78ed2b4590671ff4e3c3263 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3HE3?VkA`NU;<H>?Xsj# zy20FoB~P1_jcxf;;C!~rQ@Q(o>YrzxiKK|_vh4XL4jpY?<7Ysd7(8A5T-G@yGywpl CPf7^@ literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/p.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/p.png new file mode 100755 index 0000000000000000000000000000000000000000..22eac9c4d4b6405f91b5204cf60fb8a12f5f8667 GIT binary patch literal 997 zcmV=jW-Zsb*$o@9*!)$;r33 zw~~^Qqobp!sJGYG*WuyeUS3}F^YaW048z02pP!$zv$I-STD!Zu>+9=kYHBkxGtA7) zY;0`z_xD#Doq$DN&>PEJl37#J=tF5lnZv9YnW zwYBBt<=NTUxw*NktE=hh>G}Ej)6>(vy}j-2?WLuq!NI}L&(Foh#i600@$vCYOiW;4 zVDDZyF)uMRFEKS_Yf{$$0010xMObuG zZ)S9NVRB^vL1b@YWgtdra%FdKa%*!SLsK^Byt0e{00K!#L_t(YiKW(UbJ9Q%2k@kZ zniw%ngf@~wkwAsi0V*5J}5W`48(-0j`rT)d*3i!)J0 zQSA5opHM*%42Q$nY&M_I7ab_qbuXdbL-l&w?RK?V#c`bH3Kv&UQ51~>ZJSWSGCY|~ zdT4EojhSsgrD>}0rLw(qsL^Qj4a!4Y5qh!sfqm`Jo`;y(h=m@HzeDlH)uCe^I-e3u zL#H$}u{1Pxrj~{N`_{3m`!6+CI-gEOXFK#=iLz?nnxQ3@yA;X3XD2P_rV%F$oQ;^{EOwM(Du+aA~xv@s$Ye@zBXV!K^VKErlNshr{uB{M^PLKG4wj z64THc|HrwE5MRsD;(aBy&I95vo6Tmo+re0NDV85R@O{9g^PsRg4+JYKaAbxyu{aO- z(KmXrd>=7A4{7rc#n9OOjoB>oW3fy65O*r^liuRxa=BhJj4S;Tel$a8A>hEiYER?#4Tknb=ul#2v9HEo--)_r z6&brkaf5``xZA@k&pZ!2bQp51M~l;rdmz}jYSn02nBJBI)Azv+9ku|M-UovDRZA}q zxy7t+i(|Ud?21=-TN|3=hW$QJd?IuvLnAidha=*1>#D`k613IlSnX2Hqh^ej#`Q08 zTotSa&#LVBU47j2eD%+XUtcrk3&*JM@GF@6 w!0KRW(`%ONoa=;R%=>b`XHEsN(4?vv#G2U5|FNVx0qtP$boFyt=akR{072hLIRF3v literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/proxy.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/proxy.png new file mode 100755 index 0000000000000000000000000000000000000000..6ce105e6eeb5c577c4683d60b40b522aaf53c2d8 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3-p)re>Z6Qq09po*^6@9Je3(KLB#g0(?ST zjg5`}|Np;Y#rC42qW$~#+uPgEoH_I9)2C@^X+AzaH*emoudhFI=1gQ{rMqEamT z(fM}LNxnk{JTAx2?khR@|G&=TOU$Az%%Vb0Go6KQSKSlw5pVIdyVk&N^I-j?B|Gkvm+qK?znYb}34a^Rsivtx_nEZUdyFJBS-Zi7WspRqA_YTLJVm9L-dCj;^l{mA&Le~)WF7_Dc&}3>{5p7x^`{9 zwqL)Sf7EDV7U^n9mOj7FIq!MS`zG%>IRcxn_4yx3?M?rm%bzpi`QAXSsSD3^>cTUf zy6{Y=E)@wS)Cwj$e+6MBWY&vCofqRid_Gvg@vK_MVP#)BZS?6#!R4 zZ5~6*c*vhM;2rQ$XSwLNl*zr4$9q~Qnoz3|{+yV$a6Dk~@!BKFx=P6da zHJb(fGL8WI*N<~X_gHj1hHguYEO7Ys-X!tI*2kiR^R+AQ$|L#k=;bM{ zzcN5-QpV9`qR9|Wa}(pU=i`b#@$MqcL67p!I-VsU$_Xw_761t^As}?a(55V1J7(9c zT~sV=2sU?jOmb#KqO5r|4Jx$k(J>#mhQ^)S02nx#z%1D;-q(STkN5cVv}}Ei(Q8$_ z`2xY04BQQ63Sk!`Csj>qDk?tM?nr?z&xYt5SD9si?|~$OEC?uqh$4u*`e`38yx)r= zim0N5EQyFRNCkmeI}PId476UA+;Xd$PE%5GhF8T3oJgt|DVxip4jIE{U}c(%b(`29 zV;;I~Dd~LauQ^%Op?6uDNK2W>rYz=(EKX6x?6TqW;B;O76BP?D43+4ZBXD3;`jZ)=qQ>$)5zLs1uQ`Zm z5i93G4cl?W!l#QGR!Jf#`D|R2rsGg6EhltJiyd}6c^#7La{9MP%u<=|g)MBfUF2uJ zLOZT8e1k;#K9k08eS(8BV$7|k)09*!d?cxHQOx7To;c|6vKXc-ER#8Yin!w-8XDW* zJIq+dJ6_+XMi z_9)iD9y~x7CFUC~xb1VXx>96IXEAd!seX&-)<$G%SJJ|Ce;!swP2RmZ!R~KDNE);@ zgiubl5I|GgaiZ(HguV688cB|SJ8zmp6OFq>f&xHQhZ0D{b+428-J%N&y<6i2JZPVz_wLM z9$ubd@2>_2M{L4MhM;O9HHERdUF_9mOy5P@8lruyw$H*psY-_b!t-gD3fw*~#}#ue z;)cf@+ru6g@CPLH9);Lh6}6^C{7@l@+>o+aW26M!q7V|xU}|1cAa@5l>c{n8rnZ~`Qq09po*^6@9Je3(KLBzK0(?ST z|Ns9FWD*bb?=GkYsum~-@(X4VR5Er6O)Kx1xoY>ByYK#&O=T1X%5fHWL>4nJa0`Jj zKmDmd$of$nH zou|%WV7(#4>17pj;d0Qj1s>DyD1@J2bSPk+VBygBphHKkQ6(+ye)dMe=!#?ix5ri2 zpVv9?|M;)c?`9vDI`wKEsB8PUyY*4)gl8+euNzH#!Z7uWP1484Q&Ah19&Kx`){=Hw zbF}a1#HfuAHY`3W-fjNYYPXeabj;P8hm!INebZe(iL2%QbjiH^KtJJ)5OZ?6@1D1Z zW#fX66dz+tdi+JLk1<_Wc;j+Dt@#XJjgIZ+Z4K-^Eg|3OB;ot}fPvF(riz}2Hy_-} ziivMkz9qr`Ncd$GM?Z(ZlSO#FPQ!Ah{cDfa^82sR6^ftg%bJ>{$F2Os`^D+|wLP0x zOMQQm#P<8?f!UXWnpZZ7_3xTdu_kWq#`vx|udGTp#GkMUT9=V?D?x2);|sUuxoSeE zc&Dvy&fH}brE&YqL_WKa9lD~g9xZIn{ms4f(RAhmh8O2=3yb@xvXHrbV{qlUH+ReB krQ9r&-q_UmbbjQ1cj!Ry4D;7Xz^G#IboFyt=akR{0KS^{8vpFVdQ&MBb@0EQP#i2wiq literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/uk.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/uk.png new file mode 100755 index 0000000000000000000000000000000000000000..b4fd9b9e0614a99a33365cca3e4ab8ad78cdebf4 GIT binary patch literal 1168 zcmV;B1aJF^P)``f+n=hm_w+JMg|?0B7;#K)gep`g9VB=rbC&dX-lG@uIz;~1*=F^EJXLhi0z!R z94s46-5ZTyFAA|dA|AFL+D)y7Z=ha{nKKDof|gOf~5 zox={)>0SW76NH@Cx2P%r!u>~W`Mw7{Za#edQPzEbhS@-XjH2L>BpO2@#8fy;+~eU= zG^*dQ-d)G3BioVpKSI5;#+E@;f?L-(2=;H~t9KsemVGag@cGCn3JqQ_o_HLW-;cPq zy`7Arkns8Vb;k}eilTSW>)T9xw2O|`4NDlKFdk}I#}6lcyl`8BxW_{(9L6C@Y#bS( zITF#IV6krWGwuim5uHw!qixOV_@1=AsSn?6`~gXm?iF#VejJzaLLLZnh!AA!lLvq#X?Z#D3ha}M)iSYNKcWK)azX#B z*T9{f+(@VSePDov?x*;;e^b%*wxz&UtiJzOGxzR{@b%1vg8SF%?e{)8tGC&0yP)#0 z(7D+80|9+;-R1Yw7z%OZ^q&k4Pjls3#?qjmyk|V>oi)6*_d$Ano3q+4MWg!p z4$+}AEQWA#WJJwn_4(JnU8DogXFOgFU zJ?A;>BUoPz!8z)nv_re48Dls;3x5j>0BXH~!;>>qYbvEBTHr)71-0Jz)jN?`oXE|G z$ZEJ+Q@MHtfVH69uGhR$zx2aWpLY^+z|YMq6iZaL z=zx`%qUPBuNnKaXP2y1wMZ}&&@vd=j# z=61RM+D==2?X<40Z}6DOa`7pjmn^5SPODSBnh`nRhs`!jmRmS5V+`SoD9V*rZcGmN zv9vHpnqN3@BAMb~t&)U|wGbx8J>>a?0yD&eo>TIyT%2o4|UP;egF! oN$)a&^)3@w?=pe)F2e!811y!0_HUVi*8l(j07*qoM6N<$f~>I*DgXcg literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/us.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/co/us.png new file mode 100755 index 0000000000000000000000000000000000000000..ca535f8cc5f776e820a1c3b9df0558d9a32331e0 GIT binary patch literal 456 zcmV;(0XP1MP)!#wHo>h1v960Os|)4Jf3N_BGNRWC`#Jxhns7M z!x?KUoO=;5906EcvDv(Fxx6!(q%0OwIvrDsW^E;6^b0=|&hv!z`k8(|r6??`)fQvo zTC~yVv%^Y>JaP$3UQ0haJfHvW;jOgL;X5POVIllXSfs;YO5ZWz(BaVGa1a0QguVNg zHYO&|Q+B)4^~h-*GZ@@n+wV`5rQDQOzWviu&N&goQbf`(aBsXbtQ>?R-DJEo+`_LR y?O(#)84gpr>3C;2OzEcMo#8O0n@%v?bUpyOhxfU6KfbR30000E7)(r#^o<>vs<;oU6_hu_o$z#IW<<1@w%**wj78OY+@^b*@07tqx2|-_8l=f zcC!%|+X#ciP}>9>nB5ztNl2Kq3RS>v=4d?U0000@00003b3#c}2nYz< z;ZNWI00G)iOjJc9aq^P6`QhyTMThinqW8bn`!;>_|NsA4l=Z2|`qkw9eysRFg!D9g z^PRx?@AdvnjP=dm{A8QR(= zYoPaqu=rk=_382cd#d*?c=MRO`9g*CNQv~^>HRu@^t#jg(&7D$wfH!G^DB1qbEWrD zkM*z1`)Qx{GJ5mF*!)6=_2cdRK7;h~_x|Vb{x*E`r^fnVnf89H_ng1^R+9DW^8VT8 z{mn58FnII1()*9M`C^&&T9x;)&HAaw`uF?)IDYk5 zll9l-{lC@w(c%1XqxV#i^;(qm-Rb@D_5Y>C`d*j!T$lIj@&A0Q_kphWm%I6Zt@v!9 z_wDoknZ5Z=kM*Cy`N`Y;EO+y2pZ1}``nl8lhqL+9G;bf@=XoA-LD_p{IYjko##|NmZ@_pQtOug&|X z$NM&Z^{dJI)#d$IllQ;X{m%Wj&Hw-a32;bRa{vGp)&Kw%)&bUQS^WS20338hSaefw zW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#RuPC2a}0gYH6a8PRu_@F|g#x@$Ugb%hpVzdbq{_x&wkJs+OHGXU76YMfS zW@cw+X1lmomahLmibxX6!d9{W4Um@=ZI$z0|J_NWoF#vxBbI>>#@ycRGDDE9Ur~aB zIS}o;uVvMTg~{u+8fn{eaB$GK6cHthK=8SHhGEK2z6i^*oYRYe%N*c1mL&wx9Eh?7 zS$lX0rBqcGWqWjD;Zh{iOo3=x(Y@w*V+Gn4bfO~$ECZ2SRrS?t3YP~?2Ra4rp zBrOi=z&9r0>j;PiH@*AWR{}b8pl1`A``jUr-NA=5;ZCJq19;3BQo1L0cnd&fQtI+g z)R37prFOLk3bNS7&hr~5Cxsf2+475{6b%!goH6N@v&_N_Ly(M}l0Q_SAXI{r+SxkZ z?iQ1W@!Q+8aE-W~CKGA(5N1!+=25P?qx&gi!0dJy#DEnGVP#%bdgva4Fi}?vP<#hYL2~xe0XAFVu=ocxc6p6p0EqRR~`6{G&~T1Qcg>`K!RieR~v9L zB%cXDbfNt|NE@&?s9nT)Qe`9nbpx4WKm&?eOpZEp8MyQi<*7hErvAX+nT2rLEas{R zQDuLIxYr6~r*vRALTg6oP}z?Yn+qvzaCP<~a+%_J%;NY4kB-Ie#M zJSj;jiM@=8;eiMe8XafR_hETwU7!?M;?)CB#)b8KaN0nf*j|(@Ei6%+J-Ilb7vsXp zr@7akjJss<2ggH7aSXU4mS-CPmUdSelFWGX5oj`t(5EkuyFDs7>RA&#p~rihNPp*< z0#znR`+5fsld=TkU!3oi6|+I99Z(Toe$b1W2&1&dWCdth{z2d$tqPu(Z9w=g00000 LNkvXXu0mjf{ozbq literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/hide.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/hide.png new file mode 100755 index 0000000000000000000000000000000000000000..1468ab6945bfdf9604521dec09d6ebe84dd3eff0 GIT binary patch literal 2466 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 literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico19g-2.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/ico19g-2.png new file mode 100755 index 0000000000000000000000000000000000000000..8c1e1587e18462c428e19ed1b1827d8551f94121 GIT binary patch literal 926 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 m#+A_YyrA~Qm)NtG&-Xv*H8ftF2?fjm0000P ztz3QJfWqH*oB>Ur?f%)_9-1kxvDfcATRI^=VVG#Bcdg2oNcQ4Q!22WQ% Jmvv4FO#rA+YODYN literal 0 HcmV?d00001 diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/on.png b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/im/on.png new file mode 100755 index 0000000000000000000000000000000000000000..0940f0674843626ca3c6f35107d6d9081263c932 GIT binary patch literal 242 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 -1) { + nl.drew.cp.state.uproxys.splice(delUproxyList, 1); + nl.drew.cp.ls.set("uproxys", nl.drew.cp.state.uproxys, false); + nl.drew.cp.core.cache.nowProxyAllClean(); + nl.drew.cp.core.filter.inst(); + } + } + } else { + if (msg.param == "uproxy") { + if (typeof msg.val != "undefined" && typeof msg.val.oldname != "undefined" && msg.val.oldname) { + var i = nl.drew.cp.core.lib.inUproxyList(msg.val.oldname); + var newname = msg.val.proto.toUpperCase() + " " + msg.val.ip + ":" + msg.val.port; + if (i > -1) { + nl.drew.cp.state.uproxys[i].co = msg.val.co; + nl.drew.cp.state.uproxys[i].proto = msg.val.proto; + nl.drew.cp.state.uproxys[i].ip = msg.val.ip; + nl.drew.cp.state.uproxys[i].port = msg.val.port; + nl.drew.cp.state.uproxys[i].name = newname; + nl.drew.cp.state.uproxys[i].off = msg.val.hasOwnProperty("off") ? msg.val.off : nl.drew.cp.state.uproxys[i].off; + if (nl.drew.cp.state.listContrySite.hasOwnProperty(msg.val.oldname)) { + nl.drew.cp.state.listContrySite[msg.val.co] = nl.drew.cp.lib.clone(nl.drew.cp.state.listContrySite[msg.val.oldname]); + delete nl.drew.cp.state.listContrySite[msg.val.oldname]; + } + } else { + nl.drew.cp.state.uproxys.push({ip:msg.val.ip, port:msg.val.port, sport:"", proto:msg.val.proto, co:msg.val.co, name:newname, off:msg.val.hasOwnProperty("off") ? msg.val.off : false}); + } + nl.drew.cp.core.cache.nowProxyAllClean(); + nl.drew.cp.ls.set("uproxys", nl.drew.cp.state.uproxys, false); + nl.drew.cp.core.filter.inst(); + } + } else { + if (msg.param == "liston") { + if (typeof msg.val != "undefined") { + nl.drew.cp.core.lib.liston(msg.val); + nl.drew.cp.core.api.postMessage({param:"lists", val:nl.drew.cp.core.lib.globalListGen()}); + } + } else { + if (msg.param == "listoff") { + if (typeof msg.val != "undefined") { + nl.drew.cp.core.lib.listoff(msg.val); + } + } else { + if (msg.param == "listonrest") { + if (typeof msg.val != "undefined") { + nl.drew.cp.core.lib.liston(msg.val, true); + } + } else { + if (msg.param == "listonremove") { + if (typeof msg.val != "undefined") { + var nosend = false; + if (typeof msg.val.nosend != "undefined") { + nosend = msg.val.nosend; + } + nl.drew.cp.core.lib.listoff(msg.val.host, true, nosend); + } + } else { + if (msg.param == "listoffrest") { + if (typeof msg.val != "undefined") { + if (nl.drew.cp.core.lib.inOffSiteListAllParam(msg.val) == -1) { + nl.drew.cp.state.offlist.push(msg.val); + } + } + nl.drew.cp.core.cache.nowProxyClean({host:msg.val}); + } else { + if (msg.param == "listoffremove") { + if (typeof msg.val != "undefined") { + lid = nl.drew.cp.core.lib.inOffSiteListAllParam(msg.val); + if (lid == -1) { + return; + } + nl.drew.cp.state.offlist.splice(lid, 1); + nl.drew.cp.ls.set("offlist", nl.drew.cp.state.offlist, false); + nl.drew.cp.core.cache.nowProxyClean({host:msg.val}); + } + } else { + if (msg.param == "globalalwproxy") { + if (typeof msg.val != "undefined") { + nl.drew.cp.state.alwProxy = msg.val; + nl.drew.cp.ls.set("globalalwproxy", nl.drew.cp.state.alwProxy, false); + nl.drew.cp.core.cache.nowProxyAllClean(); + nl.drew.cp.core.filter.inst(); + } + } else { + if (msg.param == "contrymain") { + if (typeof msg.val != "undefined" && msg.val) { + nl.drew.cp.state.contryMain = msg.val; + nl.drew.cp.ls.set("contrymain", nl.drew.cp.state.contryMain, false); + nl.drew.cp.core.cache.nowProxyAllClean(); + nl.drew.cp.core.filter.inst(); + } + } else { + if (msg.param == "tor") { + if (typeof msg.val != "undefined") { + if (typeof msg.val.all != "undefined") { + nl.drew.cp.state.torAll = msg.val.all; + nl.drew.cp.ls.set("torall", nl.drew.cp.state.torAll, false); + } + nl.drew.cp.core.api.sendtoPortAnonymitynow(); + } + } else { + if (msg.param == "torsite") { + if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { + return; + } + if (msg.val.val) { + if (nl.drew.cp.core.lib.inTorSiteList(msg.val.host) > -1) { + return; + } + nl.drew.cp.state.listTorSite.push(msg.val.host); + } else { + var ind = nl.drew.cp.core.lib.inTorSiteList(msg.val.host); + if (ind == -1) { + return; + } + nl.drew.cp.state.listTorSite.splice(ind, 1); + } + nl.drew.cp.ls.set("torSite", nl.drew.cp.state.listTorSite, false); + nl.drew.cp.core.interf.icoupdate7(tab.url); + nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); + }); + } + } else { + if (msg.param == "anonymity") { + if (typeof msg.val != "undefined") { + if (typeof msg.val.all != "undefined") { + nl.drew.cp.state.anonymityAll = msg.val.all; + nl.drew.cp.ls.set("anonymityall", nl.drew.cp.state.anonymityAll, false); + } + nl.drew.cp.core.api.sendtoPortAnonymitynow(); + } + } else { + if (msg.param == "anonymitysite") { + if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { + return; + } + if (msg.val.val) { + if (nl.drew.cp.core.lib.inAnSiteList(msg.val.host) > -1) { + return; + } + nl.drew.cp.state.listAnSite.push(msg.val.host); + } else { + var ind = nl.drew.cp.core.lib.inAnSiteList(msg.val.host); + if (ind == -1) { + return; + } + nl.drew.cp.state.listAnSite.splice(ind, 1); + } + lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); + if (lid > -1) { + nl.drew.cp.state.offlist.splice(lid, 1); + } + nl.drew.cp.ls.set("anSite", nl.drew.cp.state.listAnSite, false); + var nosend = false; + if (typeof msg.val.nosend != "undefined") { + nosend = msg.val.nosend; + } + if (!nosend) { + nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); + } + nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); + }); + } + } else { + if (msg.param == "nonproxy") { + if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + nl.drew.cp.core.cache.nowProxyClean(purl); + if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { + return; + } + if (msg.val.val) { + if (nl.drew.cp.core.lib.inNonProxySiteList(msg.val.host) > -1) { + return; + } + nl.drew.cp.state.listNonProxySite.push(msg.val.host); + var ind = nl.drew.cp.core.lib.inAlwProxySiteList(msg.val.host); + if (ind > -1) { + nl.drew.cp.state.listAlwProxySite.splice(ind, 1); + } + } else { + var ind = nl.drew.cp.core.lib.inNonProxySiteList(msg.val.host); + if (ind == -1) { + return; + } + nl.drew.cp.state.listNonProxySite.splice(ind, 1); + } + lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); + if (lid > -1) { + nl.drew.cp.state.offlist.splice(lid, 1); + } + nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); + nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); + nl.drew.cp.core.filter.inst(); + var nosend = false; + if (typeof msg.val.nosend != "undefined") { + nosend = msg.val.nosend; + } + if (!nosend) { + nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); + } + nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); + }); + } + } else { + if (msg.param == "alwproxy") { + if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + nl.drew.cp.core.cache.nowProxyClean(purl); + if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { + return; + } + if (msg.val.val) { + if (nl.drew.cp.core.lib.inAlwProxySiteListEqually(msg.val.host) > -1) { + return; + } + nl.drew.cp.state.listAlwProxySite.push(msg.val.host); + var ind = nl.drew.cp.core.lib.inNonProxySiteList(msg.val.host); + if (ind > -1) { + nl.drew.cp.state.listNonProxySite.splice(ind, 1); + } + } else { + var ind = nl.drew.cp.core.lib.inAlwProxySiteListEqually(msg.val.host); + if (ind == -1) { + return; + } + nl.drew.cp.state.listAlwProxySite.splice(ind, 1); + } + lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); + if (lid > -1) { + nl.drew.cp.state.offlist.splice(lid, 1); + } + nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); + nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); + nl.drew.cp.core.filter.inst(); + var nosend = false; + if (typeof msg.val.nosend != "undefined") { + nosend = msg.val.nosend; + } + if (!nosend) { + nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); + } + nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); + }); + } + } else { + if (msg.param == "contrysite") { + if (typeof msg.val != "undefined" && typeof msg.val.host != "undefined" && msg.val.host) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + nl.drew.cp.core.cache.nowProxyClean(purl); + if ((typeof msg.val.list == "undefined" || !msg.val.list) && (!purl.allow || msg.val.host != purl.host)) { + return; + } + var key = msg.val.val; + if (key != "main") { + nl.drew.cp.core.lib.delContrySiteList(msg.val.host); + if (typeof nl.drew.cp.state.listContrySite[key] == "undefined") { + nl.drew.cp.state.listContrySite[key] = []; + } + nl.drew.cp.state.listContrySite[key].push(msg.val.host); + } else { + nl.drew.cp.core.lib.delContrySiteList(msg.val.host); + } + lid = nl.drew.cp.core.lib.checkListOnOff(msg.val.host); + if (lid > -1) { + nl.drew.cp.state.offlist.splice(lid, 1); + } + nl.drew.cp.ls.set("contrySiteList", nl.drew.cp.state.listContrySite, false); + nl.drew.cp.core.proxy.getNowProxy(null, purl, true, true); + nl.drew.cp.core.filter.inst(); + var nosend = false; + if (typeof msg.val.nosend != "undefined") { + nosend = msg.val.nosend; + } + if (!nosend) { + nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); + if (typeof msg.val.list != "undefined" && msg.val.list) { + nl.drew.cp.core.api.sendtoPortContrys(msg.val); + } + nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); + } + nl.drew.cp.core.api.sendList(msg.val.listRequest, msg.val.host); + }); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } else { + if (msg.msg == "get") { + if (msg.param == "https") { + port.postMessage({param:"https", val:nl.drew.cp.state.https}); + } else { + if (msg.param == "globalalwproxy") { + port.postMessage({param:"globalalwproxy", val:nl.drew.cp.state.alwProxy}); + } else { + if (msg.param == "isenabled") { + port.postMessage({param:"isenabled", val:nl.drew.cp.state.isenabled}); + } else { + if (msg.param == "state") { + port.postMessage({param:"state", val:nl.drew.cp.state.state}); + } else { + if (msg.param == "uproxy") { + port.postMessage({param:"uproxy", val:{uproxy:nl.drew.cp.state.uproxys, template:nl.drew.cp.config.proxyTemplate}}); + } else { + if (msg.param == "mainproxy") { + nl.drew.cp.core.api.sendtoPortMainproxy(); + } else { + if (msg.param == "contrys") { + nl.drew.cp.core.api.sendtoPortContrys(msg.val); + } else { + if (msg.param == "anonymity") { + nl.drew.cp.core.api.sendtoPortAnonymity(msg.val); + } else { + if (msg.param == "anonymitynow") { + nl.drew.cp.core.api.sendtoPortAnonymitynow(msg.val); + } else { + if (msg.param == "tor") { + nl.drew.cp.core.api.sendtoPortTor(msg.val); + } else { + if (msg.param == "nonproxyalwproxy") { + nl.drew.cp.core.api.sendtoPortInProxyList(msg.val); + } else { + if (msg.param == "lists") { + nl.drew.cp.core.api.sendList(true); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }; + api.sendList = function(isSend, host) { + if (!isSend) { + return; + } + nl.drew.cp.core.api.postMessage({param:"lists", val:nl.drew.cp.core.lib.globalListGen(), host:host}); + }; + api.sendtoPortInProxyList = function(val) { + if (nl.drew.cp.core.api.port) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); + nl.drew.cp.core.api.postMessage({param:"nonproxyalwproxy", val:{host:purl.host, nonproxy:nl.drew.cp.core.lib.inNonProxySiteList(purl.host), alwproxy:nl.drew.cp.core.lib.inAlwProxySiteList(purl.host)}}); + }); + } + }; + api.sendtoPortAnonymitynow = function(val) { + if (nl.drew.cp.core.api.port) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); + var nowProxy = nl.drew.cp.core.proxy.getNowProxy(null, purl, true, true); + if (nowProxy && nowProxy.co.length > 2) { + nl.drew.cp.core.api.postMessage({param:"anonymitynow", val:[false, false]}); + } else { + nl.drew.cp.core.api.postMessage({param:"anonymitynow", val:[nl.drew.cp.core.header.getAnonymityNow(purl.host), nl.drew.cp.core.header.getTorNow(purl.host)]}); + } + nl.drew.cp.core.interf.icoupdate7(tab.url); + }); + } + }; + api.sendtoPortAnonymity = function(val) { + if (nl.drew.cp.core.api.port) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); + nl.drew.cp.core.api.postMessage({param:"anonymity", val:nl.drew.cp.core.header.getAnonymity(purl.host)}); + }); + } + }; + api.sendtoPortTor = function(val) { + if (nl.drew.cp.core.api.port) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); + nl.drew.cp.core.api.postMessage({param:"tor", val:nl.drew.cp.core.header.getTor(purl.host)}); + }); + } + }; + api.sendtoPortState = function() { + nl.drew.cp.core.api.postMessage({param:"state", val:nl.drew.cp.state.state}); + }; + api.sendtoPortMainproxy = function(nowProxys) { + if (nl.drew.cp.core.api.port) { + chrome.tabs.getSelected(null, function(tab) { + if (nl.drew.cp.state.started) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + var nowProxy = {}; + if (nl.drew.cp.state.alwProxy) { + nowProxy = {name:"  proxy server", co:"public", allow:true}; + } else { + nowProxy = nl.drew.cp.core.proxy.getNowProxy(nowProxys, purl, true, true); + } + if (purl.allow && nowProxy == null) { + nowProxy = {host:purl.host}; + } + nl.drew.cp.core.interf.icoupdate7(tab.url); + nl.drew.cp.core.api.sendtoPort({param:"mainproxy", val:nowProxy}); + } else { + nl.drew.cp.core.api.postMessage({param:"mainproxy", val:false}); + } + }); + } + }; + api.sendtoPortContrys = function(val) { + if (nl.drew.cp.core.api.port) { + chrome.tabs.getSelected(null, function(tab) { + var purl = nl.drew.cp.lib.parseUrl(tab.url); + purl.host = nl.drew.cp.core.api.preSendtoPort(val, purl); + nl.drew.cp.core.api.postMessage({param:"contrys", val:{contrys:nl.drew.cp.state.contrys, uproxys:nl.drew.cp.state.uproxys, contrymain:nl.drew.cp.state.contryMain, contrysite:nl.drew.cp.core.lib.inContrySiteList(purl.host), host:purl.host}}); + }); + } + }; + api.preSendtoPort = function(val, purl) { + if ((!val || typeof val.list == "undefined" || !val.list) && !purl.allow) { + return ""; + } else { + if (val && typeof val.list != "undefined" && val.list) { + return val.host; + } else { + if (!val || typeof val.host == "undefined" || !val.host) { + return purl.host; + } else { + if (val.host != purl.host) { + return ""; + } + } + } + } + return purl.host; + }; + api.sendtoPort = function(msg) { + nl.drew.cp.core.api.postMessage(msg); + }; + api.postMessage = function(msg) { + if (nl.drew.cp.core.api.port) { + try { + nl.drew.cp.core.api.port.postMessage(msg); + } catch (err) { + } + } + }; + return api; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/cache.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/cache.js new file mode 100755 index 0000000..24acf9f --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/cache.js @@ -0,0 +1,13 @@ +nl.drew.cp.core.cache = function() { + var cache = {}; + cache.nowProxyAllClean = function() { + nl.drew.cp.state.nowProxyCache = {}; + }; + cache.nowProxyClean = function(purl) { + if (typeof purl.host != "undefined" && purl.host) { + delete nl.drew.cp.state.nowProxyCache[purl.host]; + } + }; + return cache; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/conf.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/conf.js new file mode 100755 index 0000000..ace98c3 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/conf.js @@ -0,0 +1,185 @@ +nl.drew.cp.core.conf = function() { + var conf = {}; + conf.getApiUrl = function() { + if (nl.drew.cp.ls.isset("conf")) { + var conf = nl.drew.cp.ls.get("conf"); + if (conf) { + if (typeof conf.Apiurl != "undefined" && conf.Apiurl.length > 0) { + nl.drew.cp.config.apiurl = conf.Apiurl; + } + if (typeof conf.Apiext != "undefined" && conf.Apiext.length > 0) { + nl.drew.cp.config.apiext = conf.Apiext; + } + if (typeof conf.Apiind != "undefined" && conf.Apiind.length > 0) { + nl.drew.cp.config.apiind = conf.Apiind; + } + if (typeof conf.Apidop != "undefined" && conf.Apidop.length > 0) { + nl.drew.cp.config.apidop = conf.Apidop; + } + } + } + var ret = new Array; + var uriapi; + for (var i in nl.drew.cp.config.apiurl) { + for (var j in nl.drew.cp.config.apiext) { + for (var k in nl.drew.cp.config.apiind) { + uriapi = nl.drew.cp.config.apiurl[i] + nl.drew.cp.config.apiind[k] + "." + nl.drew.cp.config.apiext[j]; + ret.push("https://" + uriapi + "/"); + } + } + } + nl.drew.cp.state.allApiUrls = ret; + nl.drew.cp.state.allApiUrls = nl.drew.cp.state.allApiUrls.concat(nl.drew.cp.config.apidop); + }; + conf.preLoadConfigFromServer = function(callback) { + if (!nl.drew.cp.state.isenabled) { + if (callback != null) { + callback(); + } + return; + } + nl.drew.cp.state.loadConfigFailCount = 0; + var allapiurlsLen = nl.drew.cp.state.allApiUrls.length; + if (allapiurlsLen < 1) { + nl.drew.cp.lib.debug("+++++++ crome-proxy +++++++ no api urls"); + return null; + } + var ind = Math.random() * allapiurlsLen; + ind = ind ^ 0; + nl.drew.cp.state.apiUrl = nl.drew.cp.state.allApiUrls[ind]; + conf.loadConfigFromServer(callback, ind); + }; + conf.loadLocalConfig = function() { + if (nl.drew.cp.ls.isset("isenabled")) { + nl.drew.cp.state.isenabled = nl.drew.cp.ls.get("isenabled", false); + } else { + nl.drew.cp.state.isenabled = nl.drew.cp.config.isenabled; + } + if (nl.drew.cp.state.isenabled) { + if (nl.drew.cp.ls.isset("authHeader") && nl.drew.cp.ls.isset("authHeaderEnd")) { + nl.drew.cp.state.authHeader = nl.drew.cp.ls.get("authHeader", "96W3tAJeY40DufpX"); + nl.drew.cp.state.authHeaderEnd = nl.drew.cp.ls.get("authHeaderEnd", false); + } + if (nl.drew.cp.ls.isset("contrymain")) { + var contrymain = nl.drew.cp.ls.get("contrymain", false); + if (contrymain) { + nl.drew.cp.state.contryMain = contrymain; + } + } + if (nl.drew.cp.ls.isset("globalalwproxy")) { + nl.drew.cp.state.alwProxy = nl.drew.cp.ls.get("globalalwproxy", false); + } + if (nl.drew.cp.ls.isset("anonymityall")) { + nl.drew.cp.state.anonymityAll = nl.drew.cp.ls.get("anonymityall", false); + } + if (nl.drew.cp.ls.isset("contrySiteList")) { + nl.drew.cp.state.listContrySite = nl.drew.cp.ls.get("contrySiteList", false); + } + if (nl.drew.cp.ls.isset("alwProxySite")) { + nl.drew.cp.state.listAlwProxySite = nl.drew.cp.ls.get("alwProxySite", false); + } + if (nl.drew.cp.ls.isset("nonProxySite")) { + nl.drew.cp.state.listNonProxySite = nl.drew.cp.ls.get("nonProxySite", false); + } + if (nl.drew.cp.ls.isset("anSite")) { + nl.drew.cp.state.listAnSite = nl.drew.cp.ls.get("anSite", false); + } + if (nl.drew.cp.ls.isset("torSite")) { + nl.drew.cp.state.listTorSite = nl.drew.cp.ls.get("torSite", false); + } + if (nl.drew.cp.ls.isset("offlist")) { + nl.drew.cp.state.offlist = nl.drew.cp.ls.get("offlist", false); + } + if (nl.drew.cp.ls.isset("uproxys")) { + nl.drew.cp.state.uproxys = nl.drew.cp.ls.get("uproxys", false); + } + nl.drew.cp.core.proxy.loadLocalProxy(); + } + }; + conf.clearConfigTimer = function() { + if (nl.drew.cp.state.loadConfigUpdTimer) { + clearTimeout(nl.drew.cp.state.loadConfigUpdTimer); + nl.drew.cp.state.loadConfigUpdTimer = null; + } + }; + conf.startConfigTimer = function(callback) { + nl.drew.cp.state.loadConfigUpdTimer = setTimeout(function startLoadConfig() { + nl.drew.cp.core.conf.preLoadConfigFromServer(callback); + }, nl.drew.cp.config.loadConfigUpdT); + }; + conf.startConfigTimer3 = function() { + nl.drew.cp.state.loadConfigUpdTimer = setTimeout(function startLoadConfig() { + nl.drew.cp.core.conf.loadConfigFromServer(); + }, nl.drew.cp.config.loadConfigUpdT3); + }; + conf.loadConfigFromServer = function(callback, ind) { + var apiUrl = nl.drew.cp.state.apiUrl; + if (!apiUrl) { + nl.drew.cp.lib.debug("+++++++ crome-proxy +++++++ no api url"); + return null; + } + var onFail = function() { + var allapiurlsLen = nl.drew.cp.state.allApiUrls.length; + nl.drew.cp.state.loadConfigFailCount++; + if (ind !== null) { + ind++; + if (ind >= allapiurlsLen) { + ind = 0; + } + nl.drew.cp.state.apiUrl = nl.drew.cp.state.allApiUrls[ind]; + if (nl.drew.cp.state.loadConfigFailCount >= allapiurlsLen) { + nl.drew.cp.state.loadConfigFailCountt = 0; + conf.loadConfigFromServer(callback, null); + nl.drew.cp.core.interf.icoupdate(); + } else { + conf.loadConfigFromServer(callback, ind); + } + return null; + } else { + nl.drew.cp.core.conf.clearConfigTimer(); + nl.drew.cp.core.conf.startConfigTimer(callback); + } + }; + nl.drew.cp.lib.ReqJson(apiUrl + nl.drew.cp.config.api + "?crome-proxy-ywPHzueGrJX4vLYmC6Zj8TpotBacbgEf", 1E4, function(response) { + nl.drew.cp.core.conf.serverRespParse(response); + if (callback != null) { + callback(); + } + nl.drew.cp.core.conf.clearConfigTimer(); + nl.drew.cp.core.conf.startConfigTimer3(); + }, onFail, onFail, "POST", "ip=" + encodeURIComponent(nl.drew.cp.state.ip) + "&s=" + encodeURIComponent(nl.drew.cp.state.lastUpdate) + "&sk=" + encodeURIComponent(nl.drew.cp.state.lastUpdateKey)); + }; + conf.serverRespParse = function(response) { + var responseJSON = {}; + try { + responseJSON = JSON.parse(response); + } catch (e) { + nl.drew.cp.lib.debug("+++++++ crome-proxy +++++++ can't parse"); + return null; + } + if (typeof responseJSON.Key != "undefined" && responseJSON.Key && typeof responseJSON.KeyD != "undefined" && typeof responseJSON.Now != "undefined") { + nl.drew.cp.state.authHeader = responseJSON.Key; + nl.drew.cp.state.authHeaderEnd = responseJSON.KeyD + (nl.drew.cp.lib.time() - responseJSON.Now); + nl.drew.cp.ls.set("authHeader", nl.drew.cp.state.authHeader, "96W3tAJeY40DufpX"); + nl.drew.cp.ls.set("authHeaderEnd", nl.drew.cp.state.authHeaderEnd, false); + } + if (typeof responseJSON.Proxy != "undefined" && Object.prototype.toString.call(responseJSON.Proxy) === "[object Array]") { + nl.drew.cp.core.proxy.fromServerParser(responseJSON.Proxy); + } else { + if (typeof responseJSON.ProxyStat != "undefined") { + nl.drew.cp.core.proxy.setProxysCh(responseJSON.ProxyStat); + nl.drew.cp.core.proxy.setMainProxys(); + } + } + if (typeof responseJSON.Conf != "undefined" && responseJSON.Conf) { + } + if (typeof responseJSON.S != "undefined" && responseJSON.S) { + nl.drew.cp.state.lastUpdate = responseJSON.S; + } + if (typeof responseJSON.KeyD != "undefined" && responseJSON.KeyD) { + nl.drew.cp.state.lastUpdateKey = responseJSON.KeyD; + } + }; + return conf; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/core.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/core.js new file mode 100755 index 0000000..d44e416 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/core.js @@ -0,0 +1,118 @@ +nl.drew.cp.core.main = function() { + var main = {}; + main.firstStart = function() { + chrome.runtime.onConnect.addListener(function(port) { + port.onMessage.addListener(function(msg) { + nl.drew.cp.core.api.handling(port, msg); + }); + }); + nl.drew.cp.state.icon = new iconAnimator("im/ico38-2.png"); + nl.drew.cp.state.iconoff = new iconAnimator("im/ico19g-2.png"); + chrome.tabs.onActivated.addListener(function onActTabs(info) { + nl.drew.cp.core.interf.icoupdate71(info.tabId); + }); + chrome.webRequest.onCompleted.addListener(function onCompleted(details) { + if (details.url) { + nl.drew.cp.core.interf.icoupdate7(details.url); + } + }, {urls:["http://*/*", "https://*/*", "ftp://*/*", "file://*/*"], types:["main_frame"]}); + nl.drew.cp.core.main.start(); + }; + main.onProxyError = function(details) { + if (details && typeof details.levelOfControl != "undefined" && details.levelOfControl != "controllable_by_this_extension" && details.levelOfControl != "controlled_by_this_extension") { + nl.drew.cp.state.started = null; + nl.drew.cp.core.main.started(false); + return false; + } else { + chrome.proxy.settings.get({"incognito":false}, function(details) { + if (details && typeof details.levelOfControl != "undefined" && details.levelOfControl != "controllable_by_this_extension" && details.levelOfControl != "controlled_by_this_extension") { + nl.drew.cp.state.started = null; + nl.drew.cp.core.main.started(false); + return false; + } + }); + } + if (!nl.drew.cp.state.timerCheckProxy) { + nl.drew.cp.state.timerCheckProxy = setInterval(nl.drew.cp.core.main.onProxyError, 7E3); + } + }; + main.start = function(needEnabled) { + chrome.proxy.settings.get({"incognito":false}, function(details) { + nl.drew.cp.core.main.onProxyError(details); + if (needEnabled) { + nl.drew.cp.state.isenabled = true; + nl.drew.cp.ls.set("isenabled", true, false); + } + if (nl.drew.cp.state.started !== null && !nl.drew.cp.state.started) { + nl.drew.cp.state.started = null; + nl.drew.cp.state.state = {text:"Starting...", cl:"uk-text-success", blink:true}; + nl.drew.cp.core.api.sendtoPortState(); + nl.drew.cp.core.conf.loadLocalConfig(); + if (nl.drew.cp.state.isenabled) { + nl.drew.cp.core.header.inst(); + var proxyObjKeys = Object.keys(nl.drew.cp.state.proxys); + if (proxyObjKeys.length > 1 && nl.drew.cp.state.authHeader.length > 0 && nl.drew.cp.state.authHeaderEnd > nl.drew.cp.lib.time()) { + nl.drew.cp.core.proxy.setMainProxys(); + nl.drew.cp.core.filter.inst(function() { + nl.drew.cp.core.main.started(true); + nl.drew.cp.core.conf.getApiUrl(); + nl.drew.cp.core.conf.preLoadConfigFromServer(function() { + nl.drew.cp.core.filter.inst(nl.drew.cp.core.interf.icoupdate71); + }); + }); + } else { + nl.drew.cp.core.conf.getApiUrl(); + nl.drew.cp.core.conf.preLoadConfigFromServer(function() { + nl.drew.cp.core.proxy.setMainProxys(); + nl.drew.cp.core.filter.inst(function() { + nl.drew.cp.core.main.started(true); + }); + }); + } + } else { + nl.drew.cp.core.main.started(false); + } + } else { + nl.drew.cp.core.interf.icoupdate(); + } + }); + }; + main.stop = function() { + nl.drew.cp.state.isenabled = false; + nl.drew.cp.ls.set("isenabled", false, false); + if (nl.drew.cp.state.started !== null && nl.drew.cp.state.started) { + nl.drew.cp.state.started = null; + nl.drew.cp.core.filter.uninst(function() { + }); + nl.drew.cp.core.header.uninst(); + nl.drew.cp.core.main.started(false); + } + if (nl.drew.cp.state.timerCheckProxy) { + clearInterval(nl.drew.cp.state.timerCheckProxy); + } + nl.drew.cp.state.timerCheckProxy = null; + }; + main.started = function(flag) { + if (flag) { + nl.drew.cp.state.state = {text:"Ok", cl:"uk-text-success", blink:false}; + nl.drew.cp.core.api.sendtoPortState(); + nl.drew.cp.state.started = true; + nl.drew.cp.core.interf.icoupdate71(); + } else { + nl.drew.cp.state.state = {text:"Off", cl:"uk-text-muted", blink:false}; + nl.drew.cp.core.api.sendtoPortState(); + nl.drew.cp.core.api.sendtoPortContrys(); + nl.drew.cp.core.interf.icoupdate(); + nl.drew.cp.state.started = false; + nl.drew.cp.core.api.sendtoPortMainproxy(); + } + }; + return main; +}(); +window.addEventListener("load", function load(event) { + window.removeEventListener("load", load, false); + setTimeout(nl.drew.cp.core.main.firstStart, 1); +}, false); +window.addEventListener("close", function load(event) { +}, false); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/header.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/header.js new file mode 100755 index 0000000..ede431a --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/header.js @@ -0,0 +1,96 @@ +nl.drew.cp.core.header = function() { + var header = {}; + header.inst = function() { + nl.drew.cp.core.header.uninst(); + chrome.webRequest.onHeadersReceived.addListener(nl.drew.cp.core.header.onResponse, {urls:["http://*/*"]}); + chrome.webRequest.onBeforeSendHeaders.addListener(nl.drew.cp.core.header.listener, {urls:["http://*/*"]}, ["requestHeaders", "blocking"]); + }; + header.uninst = function() { + if (chrome.webRequest.onBeforeSendHeaders.hasListener(nl.drew.cp.core.header.listener)) { + chrome.webRequest.onBeforeSendHeaders.removeListener(nl.drew.cp.core.header.listener); + } + if (chrome.webRequest.onHeadersReceived.hasListener(nl.drew.cp.core.header.onResponse)) { + chrome.webRequest.onHeadersReceived.removeListener(nl.drew.cp.core.header.onResponse); + } + }; + header.listener = function(details) { + var auth = ""; + var name = ""; + var purl = nl.drew.cp.lib.parseUrl(details.url); + if (!purl.allow) { + return{requestHeaders:details.requestHeaders}; + } + var nowProxy = nl.drew.cp.core.proxy.getNowProxy(null, purl, true, false); + if (!nowProxy) { + return{requestHeaders:details.requestHeaders}; + } + if (nowProxy.co.length == 2) { + name = "Proxy-Authorization"; + if (nl.drew.cp.core.header.getTorNow(purl.host) || nl.drew.cp.state.alwProxy) { + auth = nl.drew.cp.state.authHeader[2]; + } else { + if (nl.drew.cp.core.header.getAnonymityNow(purl.host)) { + auth = nl.drew.cp.state.authHeader[1]; + } else { + auth = nl.drew.cp.state.authHeader[0]; + } + } + } else { + if (nowProxy.ip == "proxy.googlezip.net" || nowProxy.ip == "compress.googlezip.net" || nowProxy.ip == "74.125.205.211") { + name = "Chrome-Proxy"; + auth = nl.drew.cp.core.header.authGoogleHeader(); + } + } + if (name) { + details.requestHeaders.push({name:name, value:auth}); + } + return{requestHeaders:details.requestHeaders}; + }; + header.getAnonymityNow = function(host) { + var ret = false; + if (nl.drew.cp.state.anonymityAll) { + return true; + } + if (nl.drew.cp.core.lib.inAnSiteList(host) > -1) { + return true; + } + return ret; + }; + header.getTorNow = function(host) { + var ret = false; + if (nl.drew.cp.state.torAll) { + return true; + } + if (nl.drew.cp.core.lib.inTorSiteList(host) > -1) { + return true; + } + return ret; + }; + header.getTor = function(host) { + var ret = {all:null, site:null, url:null}; + ret.all = nl.drew.cp.state.torAll; + if (host) { + ret.site = nl.drew.cp.core.lib.inTorSiteList(host) > -1; + } + return ret; + }; + header.getAnonymity = function(host) { + var ret = {all:null, site:null, url:null}; + ret.all = nl.drew.cp.state.anonymityAll; + if (host) { + ret.site = nl.drew.cp.core.lib.inAnSiteList(host) > -1; + ret.host = host; + } + return ret; + }; + header.authGoogleHeader = function() { + var authValue = "ac4500dd3b7579186c1b0620614fdb1f7d61f944"; + var timestamp = Date.now().toString().substring(0, 10); + var chromeVersion = navigator.appVersion.match(/Chrome\/(\d+)\.(\d+)\.(\d+)\.(\d+)/); + return "ps=" + timestamp + "-" + Math.floor(Math.random() * 1E9) + "-" + Math.floor(Math.random() * 1E9) + "-" + Math.floor(Math.random() * 1E9) + ", sid=" + nl.drew.cp.core.lib.MD5(timestamp + authValue + timestamp) + ", b=" + chromeVersion[3] + ", p=" + chromeVersion[4]; + }; + header.onResponse = function(response) { + }; + return header; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/interf.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/interf.js new file mode 100755 index 0000000..8c0c97d --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/interf.js @@ -0,0 +1,84 @@ +nl.drew.cp.core.interf = function() { + var interf = {}; + interf.icoupdate71 = function(tabid) { + var icoupd = function(tab) { + var url; + if (typeof tab.url != "undefined") { + url = tab.url; + nl.drew.cp.core.interf.icoupdate7(url); + } + }; + if (tabid) { + chrome.tabs.get(tabid, function(tab) { + icoupd(tab); + }); + } else { + chrome.tabs.getSelected(null, function(tab) { + icoupd(tab); + }); + } + }; + interf.icoupdate7 = function(url) { + var purl = nl.drew.cp.lib.parseUrl(url); + var nowproxy = nl.drew.cp.core.proxy.getNowProxy(null, purl, true, false); + if (nowproxy) { + var co = nowproxy.co; + if (purl.allow && co.length < 3 && nl.drew.cp.core.header.getTorNow(purl.host)) { + co = "tor"; + } + nl.drew.cp.core.interf.icoupdate3(co, purl.pathname); + } else { + nl.drew.cp.core.interf.icoupdate3(); + } + }; + interf.icoupdate3 = function(co, url) { + if (url) { + if (url.indexOf("_/chrome/newtab") != -1) { + co = false; + } + } + if (nl.drew.cp.lib.isNumeric(co)) { + co = false; + } + if (nl.drew.cp.state.isenabled && nl.drew.cp.state.started) { + if (co) { + if (nl.drew.cp.state.alwProxy) { + co = "public"; + } + nl.drew.cp.state.icon.setCo(co); + } else { + nl.drew.cp.state.icon.set(); + } + } else { + if (nl.drew.cp.state.started == null) { + nl.drew.cp.state.iconoff.setErr(); + } else { + nl.drew.cp.state.iconoff.set(); + } + } + }; + interf.icoupdate = function() { + if (nl.drew.cp.state.isenabled && nl.drew.cp.state.started) { + nl.drew.cp.state.icon.set(); + nl.drew.cp.state.icon.rotate(); + } else { + if (nl.drew.cp.state.started == null) { + nl.drew.cp.state.iconoff.setErr(); + } else { + nl.drew.cp.state.iconoff.set(); + nl.drew.cp.state.iconoff.rotate(); + } + } + }; + interf.icoupdate2 = function() { + if (nl.drew.cp.state.isenabled && nl.drew.cp.state.started) { + nl.drew.cp.state.icon.set(); + nl.drew.cp.state.icon.pulse2(); + } else { + nl.drew.cp.state.iconoff.set(); + nl.drew.cp.state.iconoff.pulse2(); + } + }; + return interf; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/lib.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/lib.js new file mode 100755 index 0000000..a4e319a --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/lib.js @@ -0,0 +1,463 @@ +nl.drew.cp.core.lib = function() { + var lib = {}; + lib.inTorSiteList = function(host) { + return this.isUriInAnyList(host, nl.drew.cp.state.listTorSite); + }; + lib.inAnSiteList = function(host) { + return this.isUriInAnyList(host, nl.drew.cp.state.listAnSite); + }; + lib.inAnSiteListEqually = function(host) { + return this.quickInArray2(host, nl.drew.cp.state.listAnSite); + }; + lib.inAlwProxySiteList = function(host) { + return this.isUriInAnyList(host, nl.drew.cp.state.listAlwProxySite); + }; + lib.inAlwProxySiteListEqually = function(host) { + return this.quickInArray2(host, nl.drew.cp.state.listAlwProxySite); + }; + lib.inNonProxySiteList = function(host) { + return this.isUriInAnyList(host, nl.drew.cp.state.listNonProxySite); + }; + lib.inNonProxySiteListEqually = function(host) { + return this.quickInArray2(host, nl.drew.cp.state.listNonProxySite); + }; + lib.inOffSiteList = function(host) { + return this.quickInArray(host, nl.drew.cp.state.offlist); + }; + lib.inUproxyList = function(co) { + var i = nl.drew.cp.state.uproxys.length; + while (i--) { + if (typeof nl.drew.cp.state.uproxys[i] == "undefined") { + continue; + } + if (nl.drew.cp.state.uproxys[i].co == co) { + return i; + } + } + return-1; + }; + lib.inOffSiteListAllParam = function(obj) { + var i = nl.drew.cp.state.offlist.length; + while (i--) { + if (typeof nl.drew.cp.state.offlist[i] == "undefined") { + continue; + } + if (nl.drew.cp.state.offlist[i].host == obj.host && nl.drew.cp.state.offlist[i].an == obj.an && nl.drew.cp.state.offlist[i].nonproxy == obj.nonproxy && nl.drew.cp.state.offlist[i].alwproxy == obj.alwproxy && nl.drew.cp.state.offlist[i].loc == obj.loc) { + return i; + } + } + return-1; + }; + lib.isUriInAnyList = function(host, list) { + var i, lenHost; + if (!host) { + return-1; + } + i = list.length; + while (i--) { + if (typeof list[i] == "undefined") { + continue; + } + if (list[i] == host) { + return i; + } else { + if (list[i][0] == "*") { + lenHost = -1 * (list[i].length - 2); + if (list[i].substr(lenHost) == host.substr(lenHost)) { + return i; + } + } + } + } + return-1; + }; + lib.delContrySiteList = function(host) { + if (host) { + var key; + var ind; + for (key in nl.drew.cp.state.listContrySite) { + if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { + continue; + } + if (nl.drew.cp.state.listContrySite[key].length < 1) { + continue; + } + ind = this.isUriInAnyList(host, nl.drew.cp.state.listContrySite[key]); + if (ind > -1) { + nl.drew.cp.state.listContrySite[key].splice(ind, 1); + } + } + } + }; + lib.inContrySiteList = function(host) { + if (host) { + var key; + var nowProxys = nl.drew.cp.core.proxy.getNowProxys(); + for (key in nl.drew.cp.state.listContrySite) { + if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { + continue; + } + if (nl.drew.cp.state.listContrySite[key].length < 1) { + continue; + } + if (this.isUriInAnyList(host, nl.drew.cp.state.listContrySite[key]) > -1) { + if (nowProxys.hasOwnProperty(key)) { + return key; + } + } + } + } + return "main"; + }; + lib.inContrySiteListEqually = function(host) { + if (host) { + var key; + for (key in nl.drew.cp.state.listContrySite) { + if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { + continue; + } + if (nl.drew.cp.state.listContrySite[key].length < 1) { + continue; + } + if (this.quickInArray2(host, nl.drew.cp.state.listContrySite[key]) > -1) { + return key; + } + } + } + return "main"; + }; + lib.quickInArray = function(it, arr) { + var i = arr.length; + while (i--) { + if (arr[i].host == it) { + return i; + } + } + return-1; + }; + lib.quickInArray2 = function(it, arr) { + var i = arr.length; + while (i--) { + if (typeof arr[i] == "undefined") { + continue; + } + if (arr[i] == it) { + return i; + } + } + return-1; + }; + lib.globalListGen = function() { + var retGlobal = []; + var i, findkey; + var listNonProxySite = nl.drew.cp.state.listNonProxySite.slice(); + var listAlwProxySite = nl.drew.cp.state.listAlwProxySite.slice(); + var offlist = nl.drew.cp.state.offlist.slice(); + while (i = offlist.shift()) { + retGlobal.push(i); + } + while (i = listNonProxySite.shift()) { + retGlobal.push({host:i, nonproxy:true, alwproxy:false, an:false, loc:"", del:false, off:false}); + } + while (i = listAlwProxySite.shift()) { + retGlobal.push({host:i, alwproxy:true, nonproxy:false, an:false, loc:"", del:false, off:false}); + } + var j = nl.drew.cp.state.listAnSite.length; + while (j--) { + if (typeof nl.drew.cp.state.listAnSite[j] == "undefined") { + continue; + } + if ((findkey = this.quickInArray(nl.drew.cp.state.listAnSite[j], retGlobal)) != -1) { + retGlobal[findkey].an = true; + } else { + retGlobal.push({host:nl.drew.cp.state.listAnSite[j], an:true, nonproxy:false, alwproxy:false, loc:"", del:false, off:false}); + } + } + var key; + for (key in nl.drew.cp.state.listContrySite) { + if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { + continue; + } + j = nl.drew.cp.state.listContrySite[key].length; + if (j < 1) { + continue; + } + while (j--) { + if (typeof nl.drew.cp.state.listContrySite[key][j] == "undefined") { + continue; + } + if ((findkey = this.quickInArray(nl.drew.cp.state.listContrySite[key][j], retGlobal)) != -1) { + retGlobal[findkey].loc = key; + } else { + retGlobal.push({host:nl.drew.cp.state.listContrySite[key][j], loc:key, nonproxy:false, alwproxy:false, an:false, del:false, off:false}); + } + } + } + var i = retGlobal.length; + while (i--) { + if (typeof retGlobal[i].par == "undefined") { + retGlobal[i].par = -1; + } + if (retGlobal[i].host[0] == "*") { + var lenHost = -1 * (retGlobal[i].host.length - 2); + var j = retGlobal.length; + while (j--) { + if (i != j) { + if (retGlobal[i].host.substr(lenHost) == retGlobal[j].host.substr(lenHost)) { + if (typeof retGlobal[j].par != "undefined" && retGlobal[j].par > -1) { + if (retGlobal[i].host.length > retGlobal[retGlobal[j].par].host.length) { + retGlobal[j].par = i; + } + } else { + retGlobal[j].par = i; + } + } + } + } + } + } + return retGlobal; + }; + lib.returnGen = function(nowProxy) { + var ret = "return 'DIRECT'"; + if (nowProxy) { + if (nowProxy.co.length == 2) { + ret = "if ( schema=='https' ) " + "return 'SOCKS5 " + nowProxy.ip + ":" + nowProxy.sport + "'; " + "else " + "return 'HTTPS " + nowProxy.ip + ":" + nowProxy.port + "'; "; + } else { + nowProxy.proto = nowProxy.proto.toUpperCase(); + ret = "return '" + nowProxy.proto + " " + nowProxy.ip + ":" + nowProxy.port + "'; "; + if (nowProxy.proto != "SOCKS5" && nowProxy.proto != "SOCKS") { + ret = "if ( schema=='http:' ) " + ret; + } + } + } + return ret; + }; + lib.searchInListCodeGen = function(listName, list, action) { + var ret; + if (list.length < 1) { + return " "; + } + var listJson = JSON.stringify(list); + ret = " var " + listName + " = " + listJson + "; " + "for (var i = 0, length = " + listName + ".length; i < length; i++) if (" + listName + ".hasOwnProperty(i)) {" + "if (" + listName + "[i]==host) {" + action + "break; } else {" + "if (" + listName + "[i][0] == '*') { " + "var lenHost = -1 * (" + listName + "[i].length - 2);" + "if (" + listName + "[i].substr(lenHost) == host.substr(lenHost)) {" + action + "break; }}}}"; + return ret; + }; + lib.checkListOnOff = function(host) { + var offiteam = {host:"", nonproxy:false, alwproxy:false, an:false, loc:"", del:false, off:true}; + var ch = false; + if (nl.drew.cp.core.lib.inAnSiteListEqually(host) > -1) { + ch = true; + offiteam.an = true; + } + var co = nl.drew.cp.core.lib.inContrySiteListEqually(host); + if (co != "main") { + offiteam.loc = co; + ch = true; + } + if (nl.drew.cp.core.lib.inAlwProxySiteListEqually(host) > -1) { + ch = true; + offiteam.alwproxy = true; + } + if (nl.drew.cp.core.lib.inNonProxySiteListEqually(host) > -1) { + ch = true; + offiteam.nonproxy = true; + } + if (ch) { + offiteam.host = host; + return nl.drew.cp.core.lib.inOffSiteListAllParam(offiteam); + } + return-1; + }; + lib.liston = function(val, onlsave) { + nl.drew.cp.core.cache.nowProxyClean(val); + if (!onlsave) { + var lid = nl.drew.cp.core.lib.inOffSiteListAllParam(val); + if (lid == -1) { + return; + } + } + var host = val.host; + this.listoff(host); + var ind; + if (val.an) { + if (nl.drew.cp.core.lib.inAnSiteListEqually(host) == -1) { + nl.drew.cp.state.listAnSite.push(host); + nl.drew.cp.ls.set("anSite", nl.drew.cp.state.listAnSite, false); + nl.drew.cp.core.api.sendtoPortAnonymitynow({host:host, list:true}); + nl.drew.cp.core.api.sendtoPortAnonymity({host:host, list:true}); + } + } + if (val.nonproxy) { + if (nl.drew.cp.core.lib.inNonProxySiteListEqually(host) == -1) { + nl.drew.cp.state.listNonProxySite.push(host); + } + ind = nl.drew.cp.core.lib.inAlwProxySiteListEqually(host); + if (ind > -1) { + nl.drew.cp.state.listAlwProxySite.splice(ind, 1); + } + nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); + nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); + } else { + if (val.alwproxy) { + if (nl.drew.cp.core.lib.inAlwProxySiteListEqually(host) == -1) { + nl.drew.cp.state.listAlwProxySite.push(host); + } + ind = nl.drew.cp.core.lib.inNonProxySiteListEqually(host); + if (ind > -1) { + nl.drew.cp.state.listNonProxySite.splice(ind, 1); + } + nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); + nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); + } + } + if (val.loc) { + if (val.loc != "main") { + nl.drew.cp.core.lib.delContrySiteList(host); + if (typeof nl.drew.cp.state.listContrySite[val.loc] == "undefined") { + nl.drew.cp.state.listContrySite[val.loc] = []; + } + nl.drew.cp.state.listContrySite[val.loc].push(host); + nl.drew.cp.ls.set("contrySiteList", nl.drew.cp.state.listContrySite, false); + nl.drew.cp.core.api.sendtoPortContrys({host:host, list:true}); + } + } + nl.drew.cp.core.filter.inst(); + nl.drew.cp.core.api.sendtoPortInProxyList({host:host, list:true}); + if (!onlsave) { + nl.drew.cp.state.offlist.splice(lid, 1); + nl.drew.cp.ls.set("offlist", nl.drew.cp.state.offlist, false); + } + }; + lib.listoff = function(host, onlremove, nosendtoport) { + nl.drew.cp.lib.debug(host); + nl.drew.cp.core.cache.nowProxyClean({host:host}); + var offiteam = {host:"", nonproxy:false, alwproxy:false, an:false, loc:"", del:false, off:true}; + var an, nonproxy, alwproxy; + var ch = false; + if ((an = nl.drew.cp.core.lib.inAnSiteListEqually(host)) > -1) { + ch = true; + offiteam.an = true; + } + var co = nl.drew.cp.core.lib.inContrySiteListEqually(host); + if (co != "main") { + offiteam.loc = co; + ch = true; + } + if ((alwproxy = nl.drew.cp.core.lib.inAlwProxySiteListEqually(host)) > -1) { + ch = true; + offiteam.alwproxy = true; + } + if ((nonproxy = nl.drew.cp.core.lib.inNonProxySiteListEqually(host)) > -1) { + ch = true; + offiteam.nonproxy = true; + } + if (ch) { + nl.drew.cp.lib.debug(offiteam); + offiteam.host = host; + if (offiteam.an) { + nl.drew.cp.state.listAnSite.splice(an, 1); + nl.drew.cp.ls.set("anSite", nl.drew.cp.state.listAnSite, false); + if (!nosendtoport) { + nl.drew.cp.core.api.sendtoPortAnonymitynow({host:host, list:true}); + nl.drew.cp.core.api.sendtoPortAnonymity({host:host, list:true}); + } + } + if (offiteam.alwproxy) { + nl.drew.cp.state.listAlwProxySite.splice(alwproxy, 1); + nl.drew.cp.ls.set("alwProxySite", nl.drew.cp.state.listAlwProxySite, false); + } else { + if (offiteam.nonproxy) { + nl.drew.cp.state.listNonProxySite.splice(nonproxy, 1); + nl.drew.cp.ls.set("nonProxySite", nl.drew.cp.state.listNonProxySite, false); + } + } + if (co) { + nl.drew.cp.core.lib.delContrySiteList(host); + nl.drew.cp.ls.set("contrySiteList", nl.drew.cp.state.listContrySite, false); + if (!nosendtoport) { + nl.drew.cp.core.api.sendtoPortContrys({host:host, list:true}); + } + } + nl.drew.cp.core.filter.inst(); + if (!nosendtoport) { + nl.drew.cp.core.api.sendtoPortInProxyList({host:host, list:true}); + } + if (!onlremove) { + if (this.inOffSiteListAllParam(offiteam) == -1) { + nl.drew.cp.state.offlist.push(offiteam); + } + nl.drew.cp.ls.set("offlist", nl.drew.cp.state.offlist, false); + } + } + }; + lib.MD5 = function(e) { + function h(a, b) { + var c, d, e, f, g; + e = a & 2147483648; + f = b & 2147483648; + c = a & 1073741824; + d = b & 1073741824; + g = (a & 1073741823) + (b & 1073741823); + return c & d ? g ^ 2147483648 ^ e ^ f : c | d ? g & 1073741824 ? g ^ 3221225472 ^ e ^ f : g ^ 1073741824 ^ e ^ f : g ^ e ^ f; + } + function k(a, b, c, d, e, f, g) { + a = h(a, h(h(b & c | ~b & d, e), g)); + return h(a << f | a >>> 32 - f, b); + } + function l(a, b, c, d, e, f, g) { + a = h(a, h(h(b & d | c & ~d, e), g)); + return h(a << f | a >>> 32 - f, b); + } + function m(a, b, d, c, e, f, g) { + a = h(a, h(h(b ^ d ^ c, e), g)); + return h(a << f | a >>> 32 - f, b); + } + function n(a, b, d, c, e, f, g) { + a = h(a, h(h(d ^ (b | ~c), e), g)); + return h(a << f | a >>> 32 - f, b); + } + function p(a) { + var b = "", d = "", c; + for (c = 0;3 >= c;c++) { + d = a >>> 8 * c & 255, d = "0" + d.toString(16), b += d.substr(d.length - 2, 2); + } + return b; + } + var f = [], q, r, s, t, a, b, c, d; + e = function(a) { + a = a.replace(/\r\n/g, "\n"); + for (var b = "", d = 0;d < a.length;d++) { + var c = a.charCodeAt(d); + 128 > c ? b += String.fromCharCode(c) : (127 < c && 2048 > c ? b += String.fromCharCode(c >> 6 | 192) : (b += String.fromCharCode(c >> 12 | 224), b += String.fromCharCode(c >> 6 & 63 | 128)), b += String.fromCharCode(c & 63 | 128)); + } + return b; + }(e); + f = function(b) { + var a, c = b.length; + a = c + 8; + for (var d = 16 * ((a - a % 64) / 64 + 1), e = Array(d - 1), f = 0, g = 0;g < c;) { + a = (g - g % 4) / 4, f = g % 4 * 8, e[a] |= b.charCodeAt(g) << f, g++; + } + a = (g - g % 4) / 4; + e[a] |= 128 << g % 4 * 8; + e[d - 2] = c << 3; + e[d - 1] = c >>> 29; + return e; + }(e); + a = 1732584193; + b = 4023233417; + c = 2562383102; + d = 271733878; + for (e = 0;e < f.length;e += 16) { + q = a, r = b, s = c, t = d, a = k(a, b, c, d, f[e + 0], 7, 3614090360), d = k(d, a, b, c, f[e + 1], 12, 3905402710), c = k(c, d, a, b, f[e + 2], 17, 606105819), b = k(b, c, d, a, f[e + 3], 22, 3250441966), a = k(a, b, c, d, f[e + 4], 7, 4118548399), d = k(d, a, b, c, f[e + 5], 12, 1200080426), c = k(c, d, a, b, f[e + 6], 17, 2821735955), b = k(b, c, d, a, f[e + 7], 22, 4249261313), a = k(a, b, c, d, f[e + 8], 7, 1770035416), d = k(d, a, b, c, f[e + 9], 12, 2336552879), c = k(c, d, a, b, f[e + + 10], 17, 4294925233), b = k(b, c, d, a, f[e + 11], 22, 2304563134), a = k(a, b, c, d, f[e + 12], 7, 1804603682), d = k(d, a, b, c, f[e + 13], 12, 4254626195), c = k(c, d, a, b, f[e + 14], 17, 2792965006), b = k(b, c, d, a, f[e + 15], 22, 1236535329), a = l(a, b, c, d, f[e + 1], 5, 4129170786), d = l(d, a, b, c, f[e + 6], 9, 3225465664), c = l(c, d, a, b, f[e + 11], 14, 643717713), b = l(b, c, d, a, f[e + 0], 20, 3921069994), a = l(a, b, c, d, f[e + 5], 5, 3593408605), d = l(d, a, b, c, f[e + + 10], 9, 38016083), c = l(c, d, a, b, f[e + 15], 14, 3634488961), b = l(b, c, d, a, f[e + 4], 20, 3889429448), a = l(a, b, c, d, f[e + 9], 5, 568446438), d = l(d, a, b, c, f[e + 14], 9, 3275163606), c = l(c, d, a, b, f[e + 3], 14, 4107603335), b = l(b, c, d, a, f[e + 8], 20, 1163531501), a = l(a, b, c, d, f[e + 13], 5, 2850285829), d = l(d, a, b, c, f[e + 2], 9, 4243563512), c = l(c, d, a, b, f[e + 7], 14, 1735328473), b = l(b, c, d, a, f[e + 12], 20, 2368359562), a = m(a, b, c, d, f[e + 5], + 4, 4294588738), d = m(d, a, b, c, f[e + 8], 11, 2272392833), c = m(c, d, a, b, f[e + 11], 16, 1839030562), b = m(b, c, d, a, f[e + 14], 23, 4259657740), a = m(a, b, c, d, f[e + 1], 4, 2763975236), d = m(d, a, b, c, f[e + 4], 11, 1272893353), c = m(c, d, a, b, f[e + 7], 16, 4139469664), b = m(b, c, d, a, f[e + 10], 23, 3200236656), a = m(a, b, c, d, f[e + 13], 4, 681279174), d = m(d, a, b, c, f[e + 0], 11, 3936430074), c = m(c, d, a, b, f[e + 3], 16, 3572445317), b = m(b, c, d, a, f[e + 6], + 23, 76029189), a = m(a, b, c, d, f[e + 9], 4, 3654602809), d = m(d, a, b, c, f[e + 12], 11, 3873151461), c = m(c, d, a, b, f[e + 15], 16, 530742520), b = m(b, c, d, a, f[e + 2], 23, 3299628645), a = n(a, b, c, d, f[e + 0], 6, 4096336452), d = n(d, a, b, c, f[e + 7], 10, 1126891415), c = n(c, d, a, b, f[e + 14], 15, 2878612391), b = n(b, c, d, a, f[e + 5], 21, 4237533241), a = n(a, b, c, d, f[e + 12], 6, 1700485571), d = n(d, a, b, c, f[e + 3], 10, 2399980690), c = n(c, d, a, b, f[e + 10], 15, + 4293915773), b = n(b, c, d, a, f[e + 1], 21, 2240044497), a = n(a, b, c, d, f[e + 8], 6, 1873313359), d = n(d, a, b, c, f[e + 15], 10, 4264355552), c = n(c, d, a, b, f[e + 6], 15, 2734768916), b = n(b, c, d, a, f[e + 13], 21, 1309151649), a = n(a, b, c, d, f[e + 4], 6, 4149444226), d = n(d, a, b, c, f[e + 11], 10, 3174756917), c = n(c, d, a, b, f[e + 2], 15, 718787259), b = n(b, c, d, a, f[e + 9], 21, 3951481745), a = h(a, q), b = h(b, r), c = h(c, s), d = h(d, t); + } + return(p(a) + p(b) + p(c) + p(d)).toLowerCase(); + }; + return lib; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js new file mode 100755 index 0000000..841ae45 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/onoff.js @@ -0,0 +1,18 @@ +nl.drew.cp.core.onoff = function() { + var onoff = {}; + onoff.on = function() { + nl.drew.cp.state.isenabled = true; + nl.drew.cp.ls.set("isenabled", true, false); + console.log("onoff.on"); + nl.drew.cp.core.interf.icoupdate(); + nl.drew.cp.core.proxy.loadLocalProxy(); + }; + onoff.off = function() { + nl.drew.cp.state.isenabled = false; + nl.drew.cp.ls.set("isenabled", false, false); + console.log("onoff.off"); + nl.drew.cp.core.interf.icoupdate(); + }; + return onoff; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js new file mode 100755 index 0000000..d7c7bee --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/proxy.js @@ -0,0 +1,298 @@ +nl.drew.cp.core.proxy = function() { + var proxy = {}; + proxy.setProxysCh = function(proxys) { + for (var i in proxys) { + if (!proxys.hasOwnProperty(i)) { + continue; + } + if (typeof nl.drew.cp.state.proxys[i] != "undefined") { + nl.drew.cp.state.proxys[i].chanel = proxys[i]; + } + } + }; + proxy.loadLocalProxy = function() { + if (nl.drew.cp.ls.isset("proxys")) { + nl.drew.cp.state.proxys = nl.drew.cp.ls.get("proxys", "vw5yHc8t6dU10fRe"); + if (!nl.drew.cp.state.proxys) { + nl.drew.cp.state.proxys = {}; + nl.drew.cp.ls.del("proxys"); + } + } + var proxyObjKeys = Object.keys(nl.drew.cp.state.proxys); + if (proxyObjKeys.length < 1) { + nl.drew.cp.state.proxys[nl.drew.cp.config.startProxy.id] = nl.drew.cp.lib.clone(nl.drew.cp.config.startProxy); + } + }; + proxy.getNowProxy = function(nowProxys, purl, noupdico, nocache) { + if (!purl) { + return null; + } + var now = nl.drew.cp.lib.time(); + if (!nocache && nl.drew.cp.state.nowProxyCache.hasOwnProperty(purl.host) && now < nl.drew.cp.state.nowProxyCache[purl.host].t) { + return nl.drew.cp.state.nowProxyCache[purl.host].d; + } + now = now + 25; + var proxyInd = "main"; + if (!nowProxys || nowProxys.length < 1) { + nowProxys = this.getNowProxys(); + } + if (purl.allow) { + var host = purl.host; + var alwProxy = nl.drew.cp.state.alwProxy; + var needproxy = false; + if (nl.drew.cp.core.lib.inNonProxySiteList(host) > -1) { + nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:null}; + if (!noupdico) { + nl.drew.cp.core.interf.icoupdate3(); + } + return null; + } + if (nl.drew.cp.core.lib.inAlwProxySiteList(host) > -1) { + needproxy = true; + } + if (!needproxy && !alwProxy) { + nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:null}; + if (!noupdico) { + nl.drew.cp.core.interf.icoupdate3(); + } + return null; + } + proxyInd = nl.drew.cp.core.lib.inContrySiteList(host); + } else { + if (!noupdico) { + nl.drew.cp.core.interf.icoupdate3(); + } + } + if (proxyInd == "main") { + if (typeof nowProxys[nl.drew.cp.state.contryMain] != "undefined") { + proxyInd = nl.drew.cp.state.contryMain; + } + } + if (nowProxys.hasOwnProperty(proxyInd)) { + var retproxy = nl.drew.cp.lib.clone(nowProxys[proxyInd]); + retproxy.allow = purl.allow; + nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:retproxy}; + if (!noupdico) { + if (proxyInd == "main") { + proxyInd = nowProxys["main"].co; + } + nl.drew.cp.core.interf.icoupdate3(proxyInd, purl.pathname); + } + return retproxy; + } + nl.drew.cp.state.nowProxyCache[purl.host] = {t:now, d:null}; + if (!noupdico) { + nl.drew.cp.core.interf.icoupdate3(); + } + return null; + }; + proxy.getNowProxys = function() { + var key, i; + var ret = {}; + var now = Date.now(); + var contrys = nl.drew.cp.state.contrys.slice(); + contrys.push("main"); + for (i in contrys) { + if (!contrys.hasOwnProperty(i)) { + continue; + } + key = contrys[i]; + if (typeof nl.drew.cp.state.proxys != "undefined" && typeof nl.drew.cp.state.proxyMain[key] != "undefined" && nl.drew.cp.state.proxyMain[key] != null && typeof nl.drew.cp.state.proxyMainInd[key] != "undefined" && typeof nl.drew.cp.state.proxys[nl.drew.cp.state.proxyMain[key][nl.drew.cp.state.proxyMainInd[key]]] != "undefined") { + ret[key] = nl.drew.cp.state.proxys[nl.drew.cp.state.proxyMain[key][nl.drew.cp.state.proxyMainInd[key]]]; + } + } + for (i in nl.drew.cp.state.uproxys) { + if (!nl.drew.cp.state.uproxys.hasOwnProperty(i)) { + continue; + } + key = nl.drew.cp.state.uproxys[i].co; + ret[key] = nl.drew.cp.state.uproxys[i]; + } + return ret; + }; + proxy.setMainProxys = function() { + var key, i; + var now = Date.now(); + nl.drew.cp.state.contrys = nl.drew.cp.core.proxy.contrys(); + var contrys = nl.drew.cp.state.contrys.slice(); + contrys.push("main"); + for (i in contrys) { + if (!contrys.hasOwnProperty(i)) { + continue; + } + key = contrys[i]; + if (typeof nl.drew.cp.state.proxyMain == "undefined") { + nl.drew.cp.state.proxyMain = []; + } + if (typeof nl.drew.cp.state.proxyMain[key] == "undefined" || nl.drew.cp.state.proxyMain[key] == null || nl.drew.cp.state.proxyMainT[key] < now || typeof nl.drew.cp.state.proxyMainInd[key] == "undefined" || typeof nl.drew.cp.state.proxys[nl.drew.cp.state.proxyMain[key][nl.drew.cp.state.proxyMainInd[key]]] == "undefined") { + nl.drew.cp.state.proxyMain[key] = nl.drew.cp.core.proxy.choice(key); + nl.drew.cp.state.proxyMainT[key] = now + nl.drew.cp.config.proxyUpdT; + nl.drew.cp.state.proxyMainInd[key] = 0; + } + } + nl.drew.cp.core.cache.nowProxyAllClean(); + nl.drew.cp.core.api.sendtoPortContrys(); + }; + proxy.choice = function(co) { + var tmpArr = []; + var ret = []; + var tmpArrLen; + var key; + for (key in nl.drew.cp.state.proxys) { + if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { + continue; + } + if (co == null || co == "main" || co == nl.drew.cp.state.proxys[key].co) { + tmpArr.push(nl.drew.cp.state.proxys[key]); + } + } + tmpArr.sort(function(proxy1, proxy2) { + return proxy1.chanel - proxy2.chanel; + }); + tmpArrLen = tmpArr.length; + if (tmpArrLen > 0) { + for (var j = 0;j < tmpArrLen;j++) { + ret.push(tmpArr[j].id); + } + } + return ret; + }; + proxy.contrys = function() { + var key; + var ret = []; + for (key in nl.drew.cp.state.proxys) { + if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { + continue; + } + if (ret.indexOf(nl.drew.cp.state.proxys[key].co) == -1) { + ret.push(nl.drew.cp.state.proxys[key].co); + } + } + return ret; + }; + proxy.fromServerParser = function(proxys) { + var key, i; + var is; + var ischange = false; + for (i in proxys) { + if (!proxys.hasOwnProperty(i)) { + continue; + } + key = proxys[i].Id; + if (typeof nl.drew.cp.state.proxys[key] == "undefined") { + nl.drew.cp.state.proxys[key] = {}; + nl.drew.cp.state.proxys[key].id = proxys[i].Id; + nl.drew.cp.state.proxys[key].ip = proxys[i].Ip; + nl.drew.cp.state.proxys[key].port = proxys[i].Port; + nl.drew.cp.state.proxys[key].sport = proxys[i].Sport; + nl.drew.cp.state.proxys[key].chanel = proxys[i].Ch; + nl.drew.cp.state.proxys[key].co = proxys[i].Co; + nl.drew.cp.state.proxys[key].name = proxys[i].Na + ".chrome-proxy.com"; + nl.drew.cp.state.proxys[key].ssl = proxys[i].Ssl; + ischange = true; + } else { + if (proxys[i].Ch != nl.drew.cp.state.proxys[key].chanel) { + nl.drew.cp.state.proxys[key].chanel = proxys[i].Ch; + } + if (proxys[i].Port != nl.drew.cp.state.proxys[key].port || proxys[i].Sport != nl.drew.cp.state.proxys[key].sport || proxys[i].Ssl != nl.drew.cp.state.proxys[key].ssl) { + ischange = true; + nl.drew.cp.state.proxys[key].port = proxys[i].Port; + nl.drew.cp.state.proxys[key].sport = proxys[i].Sport; + nl.drew.cp.state.proxys[key].ssl = proxys[i].Ssl; + } + } + nl.drew.cp.state.proxys[key].d = proxys[i].D + nl.drew.cp.lib.time(); + } + for (key in nl.drew.cp.state.proxys) { + if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { + continue; + } + is = false; + for (i in proxys) { + if (!proxys.hasOwnProperty(i)) { + continue; + } + if (key == proxys[i].Id) { + is = true; + } + } + if (!is) { + ischange = true; + delete nl.drew.cp.state.proxys[key]; + } + } + if (ischange) { + nl.drew.cp.core.proxy.setMainProxys(); + } + var saveProxyArr = {}; + for (key in nl.drew.cp.state.proxys) { + if (!nl.drew.cp.state.proxys.hasOwnProperty(key)) { + continue; + } + saveProxyArr[key] = {id:nl.drew.cp.state.proxys[key].id, ip:nl.drew.cp.state.proxys[key].ip, port:nl.drew.cp.state.proxys[key].port, sport:nl.drew.cp.state.proxys[key].sport, chanel:nl.drew.cp.state.proxys[key].chanel, co:nl.drew.cp.state.proxys[key].co, name:nl.drew.cp.state.proxys[key].name, ssl:nl.drew.cp.state.proxys[key].ssl, d:nl.drew.cp.state.proxys[key].d}; + } + nl.drew.cp.ls.set("proxys", saveProxyArr, "vw5yHc8t6dU10fRe"); + }; + return proxy; +}(); +nl.drew.cp.core.filter = function() { + var filter = {}; + filter.uninst = function(callback) { + try { + chrome.proxy.settings.clear({scope:"regular"}, callback); + } catch (e) { + callback(); + } + }; + filter.inst = function(callback) { + if (typeof callback != "function") { + callback = function() { + }; + } + if (nl.drew.cp.state.isenabled) { + var nowProxys = nl.drew.cp.core.proxy.getNowProxys(); + var nowProxy; + var key; + if (typeof nowProxys[nl.drew.cp.state.contryMain] != "undefined") { + nowProxy = nowProxys[nl.drew.cp.state.contryMain]; + } else { + nowProxy = nowProxys["main"]; + } + nl.drew.cp.core.api.sendtoPortMainproxy(nowProxys); + var contryCodeStrig = ""; + for (key in nl.drew.cp.state.listContrySite) { + if (!nl.drew.cp.state.listContrySite.hasOwnProperty(key)) { + continue; + } + if (!nowProxys.hasOwnProperty(key)) { + continue; + } + if (nl.drew.cp.state.listContrySite[key].length < 1) { + continue; + } + contryCodeStrig = contryCodeStrig + nl.drew.cp.core.lib.searchInListCodeGen(key, nl.drew.cp.state.listContrySite[key], nl.drew.cp.core.lib.returnGen(nowProxys[key])) + " "; + } + postclearproxy = function() { + var scr = "function FindProxyForURL(url, host) { " + "var schema=url.substring(0,5); " + "if ( schema!='https' && schema!='http:' ) " + "return 'DIRECT'; " + "if ( isPlainHostName(host) || " + "host=='127.0.0.1' || " + "shExpMatch(url,'*crome-proxy-ywPHzueGrJX4vLYmC6Zj8TpotBacbgEf*') || " + "shExpMatch(host, '*.local') || " + "isInNet(dnsResolve(host), '10.0.0.0', '255.0.0.0') || " + "isInNet(dnsResolve(host), '172.16.0.0', '255.240.0.0') || " + "isInNet(dnsResolve(host), '192.168.0.0', '255.255.0.0') || " + + "isInNet(dnsResolve(host), '127.0.0.0', '255.255.255.0') ) " + "return 'DIRECT'; " + "var alwProxy = " + JSON.stringify(nl.drew.cp.state.alwProxy) + ";" + "var needproxy = false;" + nl.drew.cp.core.lib.searchInListCodeGen("nonproxy", nl.drew.cp.state.listNonProxySite, "return 'DIRECT';") + nl.drew.cp.core.lib.searchInListCodeGen("alwproxy", nl.drew.cp.state.listAlwProxySite, "needproxy = true;") + "if ( !needproxy && !alwProxy) " + "return 'DIRECT'; " + contryCodeStrig + nl.drew.cp.core.lib.returnGen(nowProxy) + + "}"; + var config = {mode:"pac_script", pacScript:{data:scr}}; + try { + chrome.proxy.settings.set({value:config, scope:"regular"}, callback); + } catch (e) { + callback(); + } + }; + } else { + postclearproxy = callback; + } + try { + chrome.proxy.settings.clear({scope:"regular"}, postclearproxy); + } catch (e) { + postclearproxy(); + } + return null; + }; + return filter; +}(); + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/vars.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/vars.js new file mode 100755 index 0000000..ce593b8 --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/core/vars.js @@ -0,0 +1,13 @@ +if (!nl) { + var nl = {} +} +if (!nl.drew) { + nl.drew = {}; +} +if (!nl.drew.cp) { + nl.drew.cp = {}; +} +nl.drew.cp = {core:{}, api:{}, config:{loadConfigUpdT:1E3 * 60 * 1, loadConfigUpdT3:1E3 * 60 * 15, isDebug:false, isenabled:true, startProxy:{id:0, ip:"nl0.myproxy.org", port:"433", sport:"1010", chanel:0, co:"nl", name:"nl0", ssl:true, d:false}, api:"api", port:8088, proxyUpdT:1E3 * 60 * 60, apiurl:["cpapi.friproxy"], apiext:["eu", "biz"], apiind:[""], apidop:[], minute:1E3 * 60 * 1, proxyTemplate:[{co:"Google_3", ip:"74.125.205.211", port:"80", proto:"http"}, {co:"TOR", ip:"127.0.0.1", port:"9050", +proto:"socks5"}, {co:"TOR-Browser", ip:"127.0.0.1", port:"9150", proto:"socks5"}]}, state:{state:{text:"Off", cl:"uk-text-muted", blink:false}, isenabled:true, started:false, authHeader:null, isOnlyStartProxy:true, nowProxyCache:{}, uproxys:[], proxys:{}, anonymityAll:false, torAll:false, alwProxy:true, https:true, icon:null, iconoff:null, authHeader:[], authHeaderEnd:null, contrys:[], contryCh:"", proxyMain:{}, proxyMainT:{}, proxyMainInd:{}, ip:0, lastUpdate:0, lastUpdateKey:0, apiUrl:"", allApiUrls:[], +loadConfigUpdTimer:null, loadConfigFailCount:0, proxyhttps:false, contryMain:"main", listTorSite:[], listAnSite:[], listNonProxySite:[], listAlwProxySite:[], listContrySite:{}, offlist:[], timerCheckProxy:null}}; + diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js new file mode 100755 index 0000000..964b63c --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/icoanimation.js @@ -0,0 +1,328 @@ +function iconAnimator(strPath) { + var icon = document.createElement("img"); + icon.setAttribute("src", strPath); + var canvas = document.createElement("canvas"); + canvas.setAttribute("width", "19"); + canvas.setAttribute("height", "19"); + var canvasContext = canvas.getContext("2d"); + var time = 0; + var ru = new Image; + ru.src = "im/co/ru.png"; + var de = new Image; + de.src = "im/co/de.png"; + var uk = new Image; + uk.src = "im/co/uk.png"; + var fr = new Image; + fr.src = "im/co/fr.png"; + var nl = new Image; + nl.src = "im/co/nl.png"; + var es = new Image; + es.src = "im/co/es.png"; + var google = new Image; + google.src = "im/co/google.png"; + var err = new Image; + err.src = "im/co/err.png"; + var proxy = new Image; + proxy.src = "im/co/p.png"; + var tor = new Image; + tor.src = "im/co/tor.png"; + this.setErr = function() { + var coimg = err; + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + canvasContext.drawImage(coimg, -8, -10, 16, 16); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, 19, 19)}); + }; + this.setCo = function(co) { + var coimg = false; + co = co.toLowerCase(); + if (co) { + if (co == "ru") { + coimg = ru; + } else { + if (co == "de") { + coimg = de; + } else { + if (co == "uk") { + coimg = uk; + } else { + if (co == "fr") { + coimg = fr; + } else { + if (co == "nl") { + coimg = nl; + } else { + if (co == "es") { + coimg = es; + } else { + if (co == "err") { + coimg = err; + } else { + if (co == "public") { + coimg = proxy; + } else { + if (co == "tor") { + coimg = tor; + } else { + if (co.indexOf("google") != -1) { + coimg = google; + } else { + coimg = proxy; + } + } + } + } + } + } + } + } + } + } + } + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + canvasContext.fillStyle = "rgba(190,190,190,1)"; + canvasContext.fillRect(-2, 1, 11, 8); + if (coimg) { + canvasContext.drawImage(coimg, -1, 1, 10, 8); + } + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, 19, 19)}); + }; + this.set = function() { + chrome.browserAction.setIcon({path:{19:strPath}}); + }; + function ease(x) { + return(1 - Math.sin(Math.PI / 2 + x * Math.PI)) / 2; + } + this.rotate = function() { + var rotation = 0; + var animationFrames = 30; + var animationSpeed = 1; + var cicles = 0; + function drawIconAtRotation() { + var width = canvas.width - 1; + var height = canvas.height - 1; + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.rotate(2 * Math.PI * ease(rotation)); + canvasContext.drawImage(icon, -Math.ceil(width / 2), -Math.ceil(height / 2), width, height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + rotation += 1 / animationFrames; + drawIconAtRotation(); + if (cicles <= 2) { + if (rotation >= 1) { + rotation = 0; + cicles += 1; + } + setTimeout(Do, animationSpeed); + } else { + rotation = 0; + chrome.browserAction.setIcon({path:{19:icon.src}}); + } + } + Do(); + }; + this.flipHorizontal = function() { + var rotation = -2; + var animationFrames = 60; + var animationSpeed = 1; + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.scale(ease(rotation), 1); + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + rotation += 1 / animationFrames; + drawIconAtRotation(); + if (rotation <= 1) { + setTimeout(Do, animationSpeed); + } else { + rotation = -2; + chrome.browserAction.setIcon({path:{19:icon.src}}); + } + } + Do(); + }; + this.flipVertical = function() { + var rotation = -2; + var animationFrames = 60; + var animationSpeed = 1; + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.scale(1, ease(rotation)); + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + rotation += 1 / animationFrames; + drawIconAtRotation(); + if (rotation <= 1) { + setTimeout(Do, animationSpeed); + } else { + rotation = -2; + chrome.browserAction.setIcon({path:{19:icon.src}}); + } + } + Do(); + }; + this.pulse = function() { + var rotation = -3; + var animationFrames = 60; + var animationSpeed = 2; + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.scale(ease(rotation), ease(rotation)); + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + rotation += 1 / animationFrames; + drawIconAtRotation(); + if (rotation <= 1) { + setTimeout(Do, animationSpeed); + } else { + rotation = -3; + chrome.browserAction.setIcon({path:{19:icon.src}}); + } + } + Do(); + }; + this.pulse2 = function() { + var rotation = -3; + var animationFrames = 15; + var animationSpeed = 1; + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.scale(ease(rotation), ease(rotation)); + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + rotation += 1 / animationFrames; + drawIconAtRotation(); + if (rotation <= 1) { + setTimeout(Do, animationSpeed); + } else { + rotation = -3; + chrome.browserAction.setIcon({path:{19:icon.src}}); + } + } + Do(); + }; + this.flipHorizontalChange = function(Icon) { + var rotation = -1; + var animationFrames = 35; + var animationSpeed = 7; + var i = 0; + var newIcon = document.createElement("img"); + newIcon.setAttribute("src", Icon); + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.translate(Math.ceil(canvas.width / 2), Math.ceil(canvas.height / 2)); + canvasContext.scale(rotation, 1); + if (rotation > 0) { + canvasContext.drawImage(newIcon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + } else { + canvasContext.drawImage(icon, -Math.ceil(canvas.width / 2), -Math.ceil(canvas.height / 2), canvas.width, canvas.height); + } + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + rotation += 1 / animationFrames; + drawIconAtRotation(); + i++; + if (rotation <= 1) { + setTimeout(Do, animationSpeed); + } else { + rotation = -1; + chrome.browserAction.setIcon({path:{19:newIcon.src}}); + icon = newIcon; + } + } + Do(); + }; + this.slideRightChange = function(Icon) { + var rotation = 0; + var animationFrames = 60; + var animationSpeed = 10; + var newIcon = document.createElement("img"); + newIcon.setAttribute("src", Icon); + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width + canvas.width, canvas.height); + var position = canvas.width * rotation; + canvasContext.translate(position, 0); + canvasContext.drawImage(icon, 0, 0, canvas.width, canvas.height); + canvasContext.drawImage(newIcon, -canvas.width, 0, canvas.width, canvas.height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + drawIconAtRotation(); + rotation += 1 / animationFrames; + if (rotation <= 1) { + setTimeout(Do, animationSpeed); + } else { + rotation = 0; + chrome.browserAction.setIcon({path:{19:newIcon.src}}); + icon = newIcon; + } + } + Do(); + }; + this.slideLeftChange = function(Icon) { + var rotation = 0; + var animationFrames = 60; + var animationSpeed = 10; + var newIcon = document.createElement("img"); + newIcon.setAttribute("src", Icon); + function drawIconAtRotation() { + canvasContext.save(); + canvasContext.clearRect(0, 0, canvas.width + canvas.width, canvas.height); + var position = canvas.width * rotation; + canvasContext.translate(position, 0); + canvasContext.drawImage(icon, 0, 0, canvas.width, canvas.height); + canvasContext.drawImage(newIcon, canvas.width, 0, canvas.width, canvas.height); + canvasContext.restore(); + chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width, canvas.height)}); + } + function Do() { + drawIconAtRotation(); + rotation -= 1 / animationFrames; + if (rotation >= -1) { + setTimeout(Do, animationSpeed); + } else { + rotation = 0; + chrome.browserAction.setIcon({path:{19:newIcon.src}}); + icon = newIcon; + } + } + Do(); + }; +} +; diff --git a/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js new file mode 100755 index 0000000..79d631f --- /dev/null +++ b/extensions/chromium/pages/Proxy-for-Chrome_v1.12/js/lib/jquery-2.1.3.js @@ -0,0 +1,9205 @@ +/*! + * jQuery JavaScript Library v2.1.3 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-18T15:11Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// + +var arr = []; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + version = "2.1.3", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; + }, + + isPlainObject: function( obj ) { + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.constructor && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + // Support: Android<4.0, iOS<6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf("use strict") === 1 ) { + script = document.createElement("script"); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + indirect( code ); + } + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE9-11+ + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Support: Android<4.1 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.0-pre + * http://sizzlejs.com/ + * + * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-16 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + nodeType = context.nodeType; + + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + if ( !seed && documentIsHTML ) { + + // Try to shortcut find operations when possible (e.g., not under DocumentFragment) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document (jQuery #6963) + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType !== 1 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + parent = doc.defaultView; + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Support tests + ---------------------------------------------------------------------- */ + documentIsHTML = !isXML( doc ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; + }); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Support: Blackberry 4.6 + // gEBID returns nodes no longer in the document (#6963) + if ( elem && elem.parentNode ) { + // Inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }, + + sibling: function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter(function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.unique( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // Add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // If we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * The ready event handler and self cleanup method + */ +function completed() { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + jQuery.ready(); +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // We once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[0], key ) : emptyGet; +}; + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( owner ) { + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + +function Data() { + // Support: Android<4, + // Old WebKit does not have Object.preventExtensions/freeze method, + // return new empty object instead with no [[set]] accessor + Object.defineProperty( this.cache = {}, 0, { + get: function() { + return {}; + } + }); + + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; +Data.accepts = jQuery.acceptData; + +Data.prototype = { + key: function( owner ) { + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return the key for a frozen object. + if ( !Data.accepts( owner ) ) { + return 0; + } + + var descriptor = {}, + // Check if the owner object already has a cache key + unlock = owner[ this.expando ]; + + // If not, create one + if ( !unlock ) { + unlock = Data.uid++; + + // Secure it in a non-enumerable, non-writable property + try { + descriptor[ this.expando ] = { value: unlock }; + Object.defineProperties( owner, descriptor ); + + // Support: Android<4 + // Fallback to a less secure definition + } catch ( e ) { + descriptor[ this.expando ] = unlock; + jQuery.extend( owner, descriptor ); + } + } + + // Ensure the cache object + if ( !this.cache[ unlock ] ) { + this.cache[ unlock ] = {}; + } + + return unlock; + }, + set: function( owner, data, value ) { + var prop, + // There may be an unlock assigned to this node, + // if there is no entry for this "owner", create one inline + // and set the unlock as though an owner entry had always existed + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Fresh assignments by object are shallow copied + if ( jQuery.isEmptyObject( cache ) ) { + jQuery.extend( this.cache[ unlock ], data ); + // Otherwise, copy the properties one-by-one to the cache object + } else { + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + } + return cache; + }, + get: function( owner, key ) { + // Either a valid cache is found, or will be created. + // New caches will be created and the unlock returned, + // allowing direct access to the newly created + // empty data object. A valid owner object must be provided. + var cache = this.cache[ this.key( owner ) ]; + + return key === undefined ? + cache : cache[ key ]; + }, + access: function( owner, key, value ) { + var stored; + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ((key && typeof key === "string") && value === undefined) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase(key) ); + } + + // [*]When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + if ( key === undefined ) { + this.cache[ unlock ] = {}; + + } else { + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + }, + hasData: function( owner ) { + return !jQuery.isEmptyObject( + this.cache[ owner[ this.expando ] ] || {} + ); + }, + discard: function( owner ) { + if ( owner[ this.expando ] ) { + delete this.cache[ owner[ this.expando ] ]; + } + } +}; +var data_priv = new Data(); + +var data_user = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + data_user.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend({ + hasData: function( elem ) { + return data_user.hasData( elem ) || data_priv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return data_user.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + data_user.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to data_priv methods, these can be deprecated. + _data: function( elem, name, data ) { + return data_priv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + data_priv.remove( elem, name ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = data_user.get( elem ); + + if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + data_priv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + data_user.set( this, key ); + }); + } + + return access( this, function( value ) { + var data, + camelKey = jQuery.camelCase( key ); + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + // Attempt to get data from the cache + // with the key as-is + data = data_user.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to get data from the cache + // with the key camelized + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each(function() { + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = data_user.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + data_user.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf("-") !== -1 && data !== undefined ) { + data_user.set( this, key, value ); + } + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + data_user.remove( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = data_priv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = data_priv.access( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return data_priv.get( elem, key ) || data_priv.access( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + data_priv.remove( elem, [ type + "queue", key ] ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = data_priv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + }; + +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Safari<=5.1 + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari<=5.1, Android<4.2 + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<=11+ + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +})(); +var strundefined = typeof undefined; + + + +support.focusinBubbles = "onfocusin" in window; + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + data_priv.remove( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome<28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } +}; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + // Support: Android<4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && e.preventDefault ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && e.stopPropagation ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// Support: Chrome 15+ +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// Support: Firefox, Chrome, Safari +// Create "bubbling" focus and blur events +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = data_priv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = data_priv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + data_priv.remove( doc, fix ); + + } else { + data_priv.access( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); + + +var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + + // Support: IE9 + option: [ 1, "" ], + + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] + }; + +// Support: IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: 1.x compatibility +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute("type"); + } + + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + data_priv.set( + elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) + ); + } +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( data_priv.hasData( src ) ) { + pdataOld = data_priv.access( src ); + pdataCur = data_priv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( data_user.hasData( src ) ) { + udataOld = data_user.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + data_user.set( dest, udataCur ); + } +} + +function getAll( context, tag ) { + var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : + context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + // Support: QtWebKit, PhantomJS + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: QtWebKit, PhantomJS + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + }, + + cleanData: function( elems ) { + var data, elem, type, key, + special = jQuery.event.special, + i = 0; + + for ( ; (elem = elems[ i ]) !== undefined; i++ ) { + if ( jQuery.acceptData( elem ) ) { + key = elem[ data_priv.expando ]; + + if ( key && (data = data_priv.cache[ key ]) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + if ( data_priv.cache[ key ] ) { + // Discard any remaining `private` data + delete data_priv.cache[ key ]; + } + } + } + // Discard any remaining `user` data + delete data_user.cache[ elem[ data_user.expando ] ]; + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each(function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + }); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map(function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + self.domManip( args, callback ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optimization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = (iframe || jQuery( "