From 68e54bc7d3a5a50bc0a01e8b62bc80e25dfb4eb0 Mon Sep 17 00:00:00 2001 From: Martin Donnelly Date: Mon, 6 Jun 2016 11:45:51 +0100 Subject: [PATCH] =?UTF-8?q?=E2=80=9D2016-06-06=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes obrand/.DS_Store | Bin 0 -> 6148 bytes .../O-BrandServer/.editorconfig | 26 + .../O-BrandServer/.gitignore | 194 + .../obrand-admin-server/O-BrandServer/.jscsrc | 46 + .../O-BrandServer/.jshintrc | 34 + .../obrand-admin-server/O-BrandServer/.pgpass | 1 + .../O-BrandServer/dbconfig.js | 59 + .../O-BrandServer/dbrebuild.sh | 12 + .../O-BrandServer/ecosystem.json | 29 + .../O-BrandServer/obrand-server.js | 69 + .../O-BrandServer/obrand.sql | 668 + .../O-BrandServer/package.json | 37 + .../O-BrandServer/pg_hba.conf | 26 + .../O-BrandServer/process.json | 13 + .../O-BrandServer/rebuild.sh | 20 + .../O-BrandServer/server/app/accounts.js | 36 + .../O-BrandServer/server/app/beacon.js | 46 + .../O-BrandServer/server/app/companies.js | 60 + .../O-BrandServer/server/app/jade/type0.jade | 32 + .../O-BrandServer/server/app/newcompanies.js | 57 + .../O-BrandServer/server/app/pages.js | 163 + .../O-BrandServer/server/app/profiles.js | 82 + .../O-BrandServer/server/app/token.js | 58 + .../O-BrandServer/server/crossdomain.xml | 13 + .../O-BrandServer/server/css/mui.min.css | 1 + .../O-BrandServer/server/css/obrand.css | 15 + .../O-BrandServer/server/css/pure.min.css | 11 + .../O-BrandServer/server/index.js | 25 + .../O-BrandServer/server/units/db-accounts.js | 202 + .../O-BrandServer/server/units/db-company.js | 115 + .../server/units/db-connector.js | 21 + .../O-BrandServer/server/units/db-pages.js | 175 + .../O-BrandServer/server/units/md-errors.js | 37 + .../O-BrandServer/views/pages.jade | 25 + .../O-BrandServer/wwwroot/crossdomain.xml | 15 + .../O-BrandServer/wwwroot/css.css | 11 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes ...yview-9e18406779ed06ffa74d29e9520dd870.jpg | Bin 0 -> 272695 bytes .../O-BrandServer/wwwroot/index.html | 15 + .../O-BrandServer/wwwroot/robots.txt | 3 + .../O-BrandServer/wwwroot/scripts.js | 18583 ++++++++++++++++ obrand/obrand-admin/.bowerrc | 4 + obrand/obrand-admin/.editorconfig | 26 + obrand/obrand-admin/.ember-cli | 9 + obrand/obrand-admin/.gitignore | 192 + obrand/obrand-admin/.jscsrc | 47 + obrand/obrand-admin/.jshintrc | 37 + obrand/obrand-admin/.travis.yml | 23 + obrand/obrand-admin/.watchmanconfig | 3 + obrand/obrand-admin/README.md | 58 + .../obrand-admin/app/adapters/application.js | 6 + obrand/obrand-admin/app/adapters/company.js | 5 + .../obrand-admin/app/adapters/newcompany.js | 5 + obrand/obrand-admin/app/adapters/page.js | 5 + obrand/obrand-admin/app/adapters/profile.js | 5 + obrand/obrand-admin/app/app.js | 20 + .../obrand-admin/app/authenticators/oauth2.js | 10 + .../app/authorizers/application.js | 4 + obrand/obrand-admin/app/components/.gitkeep | 0 obrand/obrand-admin/app/components/nav-bar.js | 17 + .../app/components/page-manager.js | 7 + .../obrand-admin/app/components/side-bar.js | 4 + obrand/obrand-admin/app/controllers/.gitkeep | 0 .../app/controllers/application.js | 9 + .../obrand-admin/app/controllers/company.js | 29 + obrand/obrand-admin/app/controllers/login.js | 20 + .../app/controllers/newcompany.js | 23 + obrand/obrand-admin/app/controllers/pages.js | 78 + .../obrand-admin/app/controllers/profile.js | 23 + obrand/obrand-admin/app/helpers/.gitkeep | 0 obrand/obrand-admin/app/helpers/eq.js | 5 + obrand/obrand-admin/app/index.html | 25 + obrand/obrand-admin/app/models/.gitkeep | 0 obrand/obrand-admin/app/models/account.js | 12 + obrand/obrand-admin/app/models/application.js | 5 + obrand/obrand-admin/app/models/company.js | 20 + obrand/obrand-admin/app/models/newcompany.js | 19 + .../obrand-admin/app/models/page-content.js | 33 + obrand/obrand-admin/app/models/page.js | 44 + obrand/obrand-admin/app/models/profile.js | 19 + obrand/obrand-admin/app/resolver.js | 3 + obrand/obrand-admin/app/router.js | 21 + obrand/obrand-admin/app/routes/.gitkeep | 0 obrand/obrand-admin/app/routes/about.js | 4 + obrand/obrand-admin/app/routes/application.js | 18 + obrand/obrand-admin/app/routes/auth-error.js | 8 + obrand/obrand-admin/app/routes/company.js | 33 + obrand/obrand-admin/app/routes/index.js | 4 + obrand/obrand-admin/app/routes/login.js | 6 + obrand/obrand-admin/app/routes/newcompany.js | 23 + obrand/obrand-admin/app/routes/pages.js | 17 + obrand/obrand-admin/app/routes/profile.js | 18 + obrand/obrand-admin/app/routes/signup.js | 4 + obrand/obrand-admin/app/routes/venue.js | 12 + obrand/obrand-admin/app/serializers/useful.js | 38 + .../app/services/session-account.js | 24 + obrand/obrand-admin/app/styles/app.scss | 70 + obrand/obrand-admin/app/styles/profile.scss | 22 + obrand/obrand-admin/app/styles/side-bar.scss | 340 + obrand/obrand-admin/app/styles/signin.scss | 42 + obrand/obrand-admin/app/templates/about.hbs | 6 + .../app/templates/application.hbs | 15 + .../obrand-admin/app/templates/auth-error.hbs | 1 + obrand/obrand-admin/app/templates/company.hbs | 156 + .../app/templates/components/.gitkeep | 0 .../app/templates/components/nav-bar.hbs | 52 + .../app/templates/components/page-manager.hbs | 29 + .../app/templates/components/side-bar.hbs | 65 + obrand/obrand-admin/app/templates/index.hbs | 15 + obrand/obrand-admin/app/templates/login.hbs | 28 + .../obrand-admin/app/templates/newcompany.hbs | 62 + obrand/obrand-admin/app/templates/pages.hbs | 163 + obrand/obrand-admin/app/templates/profile.hbs | 143 + obrand/obrand-admin/app/templates/signup.hbs | 1 + obrand/obrand-admin/app/templates/venue.hbs | 1 + obrand/obrand-admin/bower.json | 13 + obrand/obrand-admin/config/environment.js | 52 + obrand/obrand-admin/ember-cli-build.js | 25 + obrand/obrand-admin/package.json | 66 + obrand/obrand-admin/public/crossdomain.xml | 15 + obrand/obrand-admin/public/images/skyview.jpg | Bin 0 -> 272695 bytes obrand/obrand-admin/public/robots.txt | 3 + obrand/obrand-admin/server/.jshintrc | 3 + obrand/obrand-admin/server/index.js | 37 + obrand/obrand-admin/server/mocks/accounts.js | 35 + obrand/obrand-admin/server/mocks/companies.js | 86 + .../obrand-admin/server/mocks/jade/type0.jade | 32 + .../obrand-admin/server/mocks/newcompanies.js | 83 + obrand/obrand-admin/server/mocks/pages.js | 109 + obrand/obrand-admin/server/mocks/profiles.js | 113 + .../server/mocks/static/css/obrand.css | 9 + obrand/obrand-admin/server/mocks/token.js | 84 + .../obrand-admin/server/units/db-accounts.js | 204 + .../obrand-admin/server/units/db-company.js | 115 + .../obrand-admin/server/units/db-connector.js | 21 + obrand/obrand-admin/server/units/db-pages.js | 72 + obrand/obrand-admin/server/units/md-errors.js | 38 + obrand/obrand-admin/testem.js | 13 + obrand/obrand-admin/tests/.jshintrc | 53 + .../obrand-admin/tests/helpers/destroy-app.js | 5 + .../tests/helpers/module-for-acceptance.js | 23 + obrand/obrand-admin/tests/helpers/resolver.js | 11 + .../obrand-admin/tests/helpers/start-app.js | 18 + obrand/obrand-admin/tests/index.html | 34 + .../obrand-admin/tests/integration/.gitkeep | 0 .../integration/components/nav-bar-test.js | 24 + .../components/page-manager-test.js | 24 + .../integration/components/side-bar-test.js | 24 + obrand/obrand-admin/tests/test-helper.js | 6 + obrand/obrand-admin/tests/unit/.gitkeep | 0 .../tests/unit/adapters/application-test.js | 12 + .../tests/unit/adapters/company-test.js | 12 + .../tests/unit/adapters/newcompany-test.js | 12 + .../tests/unit/adapters/page-test.js | 12 + .../tests/unit/adapters/profile-test.js | 12 + .../unit/controllers/application-test.js | 12 + .../tests/unit/controllers/company-test.js | 12 + .../tests/unit/controllers/login-test.js | 12 + .../tests/unit/controllers/newcompany-test.js | 12 + .../tests/unit/controllers/pages-test.js | 12 + .../tests/unit/controllers/profile-test.js | 12 + .../tests/unit/helpers/eq-test.js | 10 + .../tests/unit/models/account-test.js | 12 + .../tests/unit/models/application-test.js | 12 + .../tests/unit/models/company-test.js | 12 + .../tests/unit/models/newcompany-test.js | 12 + .../tests/unit/models/page-content-test.js | 12 + .../tests/unit/models/page-test.js | 12 + .../tests/unit/models/profile-test.js | 12 + .../tests/unit/routes/about-test.js | 11 + .../tests/unit/routes/application-test.js | 12 + .../tests/unit/routes/auth-error-test.js | 11 + .../tests/unit/routes/company-test.js | 11 + .../tests/unit/routes/index-test.js | 11 + .../tests/unit/routes/login-test.js | 11 + .../tests/unit/routes/newcompany-test.js | 11 + .../tests/unit/routes/pages-test.js | 11 + .../tests/unit/routes/profile-test.js | 11 + .../tests/unit/routes/signup-test.js | 11 + .../tests/unit/routes/venue-test.js | 11 + .../tests/unit/serializers/useful-test.js | 15 + .../unit/services/session-account-test.js | 12 + obrand/obrand-admin/vendor/.gitkeep | 0 obrand/obrand/obrand/.DS_Store | Bin 0 -> 6148 bytes obrand/obrand/obrand/O-BrandAdmin.zip | Bin 0 -> 346896 bytes obrand/obrand/obrand/O-BrandServer.zip | Bin 0 -> 607143 bytes obrand/obrand/obrand/obrand_install.sh | 283 + obrand/obrand/obrand/readme.md | 100 + sensortoy/sensortoy/.bowerrc | 5 + sensortoy/sensortoy/.editorconfig | 32 + sensortoy/sensortoy/.gitignore | 183 + sensortoy/sensortoy/.jscsrc | 46 + sensortoy/sensortoy/.jshintrc | 37 + sensortoy/sensortoy/app/css/app.css | 260 + sensortoy/sensortoy/app/css/custom.scss | 15 + sensortoy/sensortoy/app/css/index.css | 115 + .../sensortoy/app/css/material-icons.css | 15 + sensortoy/sensortoy/app/css/mui.css | 1912 ++ sensortoy/sensortoy/app/css/mui.custom.css | 1912 ++ sensortoy/sensortoy/app/css/mui.min.css | 1 + sensortoy/sensortoy/app/css/progress.css | 94 + sensortoy/sensortoy/app/css/ripple.css | 195 + .../app/fonts/Material_Icons-normal-400.woff | Bin 0 -> 58804 bytes .../app/fonts/Ubuntu-normal-300.woff | Bin 0 -> 42972 bytes .../app/fonts/Ubuntu-normal-400.woff | Bin 0 -> 38352 bytes .../app/fonts/Ubuntu-normal-500.woff | Bin 0 -> 34044 bytes .../app/fonts/Ubuntu-normal-700.woff | Bin 0 -> 33016 bytes .../fonts/Ubuntu_Condensed-normal-400.woff | Bin 0 -> 32468 bytes sensortoy/sensortoy/app/fonts/fonts.css | 41 + sensortoy/sensortoy/app/img/logo.png | Bin 0 -> 21814 bytes sensortoy/sensortoy/app/index.html | 125 + .../js/device/CC2650/cc2650_accelerometer.js | 175 + .../app/js/device/CC2650/cc2650_barometer.js | 164 + .../app/js/device/CC2650/cc2650_humidity.js | 170 + .../app/js/device/CC2650/cc2650_luxometer.js | 113 + .../app/js/device/CC2650/cc2650_thermopile.js | 167 + sensortoy/sensortoy/app/js/index.js | 576 + sensortoy/sensortoy/app/js/mandecoder.js | 112 + .../sensortoy/app/js/standards/battery.js | 61 + .../bluetooth_company_identifiers.js | 3238 +++ .../sensortoy/app/js/standards/button.js | 99 + .../sensortoy/app/js/standards/capability.js | 273 + .../sensortoy/app/js/standards/gadget.js | 21 + sensortoy/sensortoy/app/test.html | 34 + sensortoy/sensortoy/bower.json | 23 + sensortoy/sensortoy/config.xml | 56 + sensortoy/sensortoy/fonts.list | 2 + sensortoy/sensortoy/gulpfile.js | 151 + sensortoy/sensortoy/hooks/README.md | 23 + sensortoy/sensortoy/notes/notes.md | 23 + .../notes/ti/attr_cc2650 sensortag.html | 116 + sensortoy/sensortoy/output.txt | 53 + sensortoy/sensortoy/package.json | 38 + .../sensortoy/platforms/android/.gitignore | 14 + .../2.2.1/taskArtifacts/cache.properties | 1 + .../2.2.1/taskArtifacts/cache.properties.lock | Bin 0 -> 17 bytes .../2.2.1/taskArtifacts/fileHashes.bin | Bin 0 -> 148596 bytes .../2.2.1/taskArtifacts/fileSnapshots.bin | Bin 0 -> 10918810 bytes .../2.2.1/taskArtifacts/outputFileStates.bin | Bin 0 -> 20132 bytes .../2.2.1/taskArtifacts/taskArtifacts.bin | Bin 0 -> 61031 bytes .../platforms/android/AndroidManifest.xml | 18 + .../android/CordovaLib/AndroidManifest.xml | 23 + .../platforms/android/CordovaLib/build.gradle | 61 + .../android/CordovaLib/cordova.gradle | 201 + .../android/CordovaLib/project.properties | 16 + .../apache/cordova/AuthenticationToken.java | 69 + .../org/apache/cordova/CallbackContext.java | 144 + .../src/org/apache/cordova/Config.java | 72 + .../org/apache/cordova/ConfigXmlParser.java | 145 + .../org/apache/cordova/CordovaActivity.java | 508 + .../src/org/apache/cordova/CordovaArgs.java | 113 + .../src/org/apache/cordova/CordovaBridge.java | 184 + .../cordova/CordovaClientCertRequest.java | 96 + .../apache/cordova/CordovaDialogsHelper.java | 152 + .../cordova/CordovaHttpAuthHandler.java | 51 + .../org/apache/cordova/CordovaInterface.java | 88 + .../apache/cordova/CordovaInterfaceImpl.java | 243 + .../src/org/apache/cordova/CordovaPlugin.java | 422 + .../apache/cordova/CordovaPreferences.java | 101 + .../apache/cordova/CordovaResourceApi.java | 471 + .../org/apache/cordova/CordovaWebView.java | 142 + .../apache/cordova/CordovaWebViewEngine.java | 81 + .../apache/cordova/CordovaWebViewImpl.java | 613 + .../src/org/apache/cordova/CoreAndroid.java | 360 + .../src/org/apache/cordova/ExposedJsApi.java | 31 + .../cordova/ICordovaClientCertRequest.java | 66 + .../apache/cordova/ICordovaCookieManager.java | 33 + .../cordova/ICordovaHttpAuthHandler.java | 38 + .../src/org/apache/cordova/LOG.java | 234 + .../cordova/NativeToJsMessageQueue.java | 501 + .../src/org/apache/cordova/PluginEntry.java | 70 + .../src/org/apache/cordova/PluginManager.java | 527 + .../src/org/apache/cordova/PluginResult.java | 198 + .../org/apache/cordova/ResumeCallback.java | 76 + .../src/org/apache/cordova/Whitelist.java | 170 + .../cordova/engine/SystemCookieManager.java | 66 + .../cordova/engine/SystemExposedJsApi.java | 53 + .../cordova/engine/SystemWebChromeClient.java | 293 + .../apache/cordova/engine/SystemWebView.java | 88 + .../cordova/engine/SystemWebViewClient.java | 374 + .../cordova/engine/SystemWebViewEngine.java | 334 + .../sensortoy/platforms/android/android.json | 265 + .../android/nativeapiprovider.js | 36 + .../android/promptbasednativeapi.js | 35 + .../android/assets/www/cordova-js-src/exec.js | 283 + .../assets/www/cordova-js-src/platform.js | 125 + .../www/cordova-js-src/plugin/android/app.js | 108 + .../platforms/android/assets/www/cordova.js | 2167 ++ .../android/assets/www/cordova_plugins.js | 187 + .../platforms/android/assets/www/css/app.css | 2 + .../android/assets/www/css/custom.css | 1 + .../assets/www/fonts/Ubuntu-normal-300.woff | Bin 0 -> 42972 bytes .../assets/www/fonts/Ubuntu-normal-400.woff | Bin 0 -> 38352 bytes .../assets/www/fonts/Ubuntu-normal-500.woff | Bin 0 -> 34044 bytes .../assets/www/fonts/Ubuntu-normal-700.woff | Bin 0 -> 33016 bytes .../fonts/Ubuntu_Condensed-normal-400.woff | Bin 0 -> 32468 bytes .../android/assets/www/fonts/fonts.css | 34 + .../platforms/android/assets/www/img/logo.png | Bin 0 -> 21814 bytes .../platforms/android/assets/www/index.html | 1 + .../platforms/android/assets/www/js/app.js | 1 + .../platforms/android/assets/www/js/cc2650.js | 1 + .../android/assets/www/js/standards.js | 2 + .../android/assets/www/libs/vendor.js | 4 + .../cordova-plugin-ble-central/www/ble.js | 167 + .../cordova-plugin-device/www/device.js | 86 + .../cordova-plugin-file/www/DirectoryEntry.js | 120 + .../www/DirectoryReader.js | 76 + .../plugins/cordova-plugin-file/www/Entry.js | 265 + .../plugins/cordova-plugin-file/www/File.js | 82 + .../cordova-plugin-file/www/FileEntry.js | 96 + .../cordova-plugin-file/www/FileError.js | 49 + .../cordova-plugin-file/www/FileReader.js | 292 + .../cordova-plugin-file/www/FileSystem.js | 58 + .../www/FileUploadOptions.js | 44 + .../www/FileUploadResult.js | 32 + .../cordova-plugin-file/www/FileWriter.js | 327 + .../plugins/cordova-plugin-file/www/Flags.js | 39 + .../www/LocalFileSystem.js | 26 + .../cordova-plugin-file/www/Metadata.js | 43 + .../cordova-plugin-file/www/ProgressEvent.js | 70 + .../www/android/FileSystem.js | 52 + .../www/browser/isChrome.js | 29 + .../www/fileSystemPaths.js | 66 + .../www/fileSystems-roots.js | 48 + .../cordova-plugin-file/www/fileSystems.js | 28 + .../www/requestFileSystem.js | 85 + .../www/resolveLocalFileSystemURI.js | 95 + .../cordova-plugin-statusbar/www/statusbar.js | 116 + .../sensortoy/platforms/android/build.gradle | 305 + .../platforms/android/cordova/.jshintrc | 10 + .../platforms/android/cordova/Api.js | 504 + .../android/cordova/android_sdk_version | 29 + .../sensortoy/platforms/android/cordova/build | 48 + .../platforms/android/cordova/build.bat | 26 + .../platforms/android/cordova/check_reqs | 31 + .../platforms/android/cordova/check_reqs.bat | 26 + .../sensortoy/platforms/android/cordova/clean | 36 + .../platforms/android/cordova/clean.bat | 26 + .../platforms/android/cordova/defaults.xml | 26 + .../platforms/android/cordova/lib/Adb.js | 96 + .../android/cordova/lib/AndroidManifest.js | 161 + .../android/cordova/lib/AndroidProject.js | 184 + .../android/cordova/lib/ConsoleLogger.js | 75 + .../cordova/lib/android_sdk_version.js | 64 + .../platforms/android/cordova/lib/build.js | 302 + .../cordova/lib/builders/AntBuilder.js | 141 + .../cordova/lib/builders/GenericBuilder.js | 138 + .../cordova/lib/builders/GradleBuilder.js | 275 + .../android/cordova/lib/builders/builders.js | 47 + .../android/cordova/lib/check_reqs.js | 330 + .../platforms/android/cordova/lib/device.js | 119 + .../platforms/android/cordova/lib/emulator.js | 408 + .../android/cordova/lib/install-device | 42 + .../android/cordova/lib/install-device.bat | 26 + .../android/cordova/lib/install-emulator | 38 + .../android/cordova/lib/install-emulator.bat | 26 + .../android/cordova/lib/list-devices | 33 + .../android/cordova/lib/list-devices.bat | 26 + .../android/cordova/lib/list-emulator-images | 32 + .../cordova/lib/list-emulator-images.bat | 26 + .../cordova/lib/list-started-emulators | 32 + .../cordova/lib/list-started-emulators.bat | 26 + .../platforms/android/cordova/lib/log.js | 56 + .../android/cordova/lib/plugin-build.gradle | 79 + .../android/cordova/lib/pluginHandlers.js | 252 + .../platforms/android/cordova/lib/prepare.js | 379 + .../platforms/android/cordova/lib/retry.js | 68 + .../platforms/android/cordova/lib/run.js | 140 + .../android/cordova/lib/start-emulator | 39 + .../android/cordova/lib/start-emulator.bat | 26 + .../sensortoy/platforms/android/cordova/log | 36 + .../platforms/android/cordova/log.bat | 26 + .../sensortoy/platforms/android/cordova/run | 51 + .../platforms/android/cordova/run.bat | 26 + .../platforms/android/cordova/version | 29 + .../platforms/android/cordova/version.bat | 26 + .../android/nativeapiprovider.js | 36 + .../android/promptbasednativeapi.js | 35 + .../platform_www/cordova-js-src/exec.js | 283 + .../platform_www/cordova-js-src/platform.js | 125 + .../cordova-js-src/plugin/android/app.js | 108 + .../platforms/android/platform_www/cordova.js | 2167 ++ .../android/platform_www/cordova_plugins.js | 187 + .../cordova-plugin-ble-central/www/ble.js | 167 + .../cordova-plugin-device/www/device.js | 86 + .../cordova-plugin-file/www/DirectoryEntry.js | 120 + .../www/DirectoryReader.js | 76 + .../plugins/cordova-plugin-file/www/Entry.js | 265 + .../plugins/cordova-plugin-file/www/File.js | 82 + .../cordova-plugin-file/www/FileEntry.js | 96 + .../cordova-plugin-file/www/FileError.js | 49 + .../cordova-plugin-file/www/FileReader.js | 292 + .../cordova-plugin-file/www/FileSystem.js | 58 + .../www/FileUploadOptions.js | 44 + .../www/FileUploadResult.js | 32 + .../cordova-plugin-file/www/FileWriter.js | 327 + .../plugins/cordova-plugin-file/www/Flags.js | 39 + .../www/LocalFileSystem.js | 26 + .../cordova-plugin-file/www/Metadata.js | 43 + .../cordova-plugin-file/www/ProgressEvent.js | 70 + .../www/android/FileSystem.js | 52 + .../www/browser/isChrome.js | 29 + .../www/fileSystemPaths.js | 66 + .../www/fileSystems-roots.js | 48 + .../cordova-plugin-file/www/fileSystems.js | 28 + .../www/requestFileSystem.js | 85 + .../www/resolveLocalFileSystemURI.js | 95 + .../cordova-plugin-statusbar/www/statusbar.js | 116 + .../platforms/android/project.properties | 14 + .../android/res/drawable-hdpi/icon.png | Bin 0 -> 2599 bytes .../android/res/drawable-land-hdpi/screen.png | Bin 0 -> 218302 bytes .../android/res/drawable-land-ldpi/screen.png | Bin 0 -> 42616 bytes .../android/res/drawable-land-mdpi/screen.png | Bin 0 -> 92347 bytes .../res/drawable-land-xhdpi/screen.png | Bin 0 -> 489604 bytes .../android/res/drawable-ldpi/icon.png | Bin 0 -> 462 bytes .../android/res/drawable-mdpi/icon.png | Bin 0 -> 1782 bytes .../android/res/drawable-port-hdpi/screen.png | Bin 0 -> 222148 bytes .../android/res/drawable-port-ldpi/screen.png | Bin 0 -> 42034 bytes .../android/res/drawable-port-mdpi/screen.png | Bin 0 -> 90555 bytes .../res/drawable-port-xhdpi/screen.png | Bin 0 -> 504508 bytes .../android/res/drawable-xhdpi/icon.png | Bin 0 -> 3354 bytes .../android/res/drawable-xxhdpi/icon.png | Bin 0 -> 5405 bytes .../android/res/drawable-xxxhdpi/icon.png | Bin 0 -> 7422 bytes .../platforms/android/res/values/strings.xml | 6 + .../platforms/android/res/xml/config.xml | 45 + .../platforms/android/settings.gradle | 3 + .../cordova/ble/central/BLECentralPlugin.java | 587 + .../cordova/ble/central/BLECommand.java | 61 + .../megster/cordova/ble/central/Helper.java | 158 + .../cordova/ble/central/Peripheral.java | 645 + .../cordova/ble/central/UUIDHelper.java | 47 + .../org/apache/cordova/PermissionHelper.java | 138 + .../src/org/apache/cordova/device/Device.java | 174 + .../apache/cordova/file/AssetFilesystem.java | 286 + .../cordova/file/ContentFilesystem.java | 216 + .../apache/cordova/file/DirectoryManager.java | 134 + .../cordova/file/EncodingException.java | 29 + .../cordova/file/FileExistsException.java | 29 + .../org/apache/cordova/file/FileUtils.java | 1196 + .../org/apache/cordova/file/Filesystem.java | 331 + .../file/InvalidModificationException.java | 30 + .../apache/cordova/file/LocalFilesystem.java | 510 + .../cordova/file/LocalFilesystemURL.java | 64 + .../file/NoModificationAllowedException.java | 29 + .../apache/cordova/file/PendingRequests.java | 94 + .../cordova/file/TypeMismatchException.java | 30 + .../apache/cordova/statusbar/StatusBar.java | 165 + .../cordova/whitelist/WhitelistPlugin.java | 161 + .../org/censis/sensortoy/MainActivity.java | 34 + sensortoy/sensortoy/platforms/ios/.gitignore | 5 + .../ios/CordovaLib/Classes/Private/CDVDebug.h | 25 + .../Classes/Private/CDVJSON_private.h | 31 + .../Classes/Private/CDVJSON_private.m | 91 + .../Classes/Private/CDVPlugin+Private.h | 24 + .../CDVGestureHandler/CDVGestureHandler.h | 26 + .../CDVGestureHandler/CDVGestureHandler.m | 74 + .../CDVHandleOpenURL/CDVHandleOpenURL.h | 27 + .../CDVHandleOpenURL/CDVHandleOpenURL.m | 86 + .../CDVIntentAndNavigationFilter.h | 24 + .../CDVIntentAndNavigationFilter.m | 112 + .../Plugins/CDVLocalStorage/CDVLocalStorage.h | 50 + .../Plugins/CDVLocalStorage/CDVLocalStorage.m | 487 + .../CDVUIWebViewEngine/CDVUIWebViewDelegate.h | 41 + .../CDVUIWebViewEngine/CDVUIWebViewDelegate.m | 400 + .../CDVUIWebViewEngine/CDVUIWebViewEngine.h | 27 + .../CDVUIWebViewEngine/CDVUIWebViewEngine.m | 197 + .../CDVUIWebViewNavigationDelegate.h | 29 + .../CDVUIWebViewNavigationDelegate.m | 151 + .../ios/CordovaLib/Classes/Public/CDV.h | 34 + .../Classes/Public/CDVAppDelegate.h | 28 + .../Classes/Public/CDVAppDelegate.m | 105 + .../Classes/Public/CDVAvailability.h | 102 + .../Public/CDVAvailabilityDeprecated.h | 26 + .../Classes/Public/CDVCommandDelegate.h | 51 + .../Classes/Public/CDVCommandDelegateImpl.h | 36 + .../Classes/Public/CDVCommandDelegateImpl.m | 186 + .../Classes/Public/CDVCommandQueue.h | 39 + .../Classes/Public/CDVCommandQueue.m | 194 + .../Classes/Public/CDVConfigParser.h | 30 + .../Classes/Public/CDVConfigParser.m | 81 + .../Classes/Public/CDVInvokedUrlCommand.h | 52 + .../Classes/Public/CDVInvokedUrlCommand.m | 116 + .../Classes/Public/CDVPlugin+Resources.h | 39 + .../Classes/Public/CDVPlugin+Resources.m | 38 + .../ios/CordovaLib/Classes/Public/CDVPlugin.h | 69 + .../ios/CordovaLib/Classes/Public/CDVPlugin.m | 163 + .../Classes/Public/CDVPluginResult.h | 66 + .../Classes/Public/CDVPluginResult.m | 186 + .../Public/CDVScreenOrientationDelegate.h | 28 + .../ios/CordovaLib/Classes/Public/CDVTimer.h | 27 + .../ios/CordovaLib/Classes/Public/CDVTimer.m | 123 + .../Classes/Public/CDVURLProtocol.h | 27 + .../Classes/Public/CDVURLProtocol.m | 113 + .../Classes/Public/CDVUserAgentUtil.h | 27 + .../Classes/Public/CDVUserAgentUtil.m | 122 + .../Classes/Public/CDVViewController.h | 85 + .../Classes/Public/CDVViewController.m | 671 + .../Classes/Public/CDVWebViewEngineProtocol.h | 42 + .../CordovaLib/Classes/Public/CDVWhitelist.h | 34 + .../CordovaLib/Classes/Public/CDVWhitelist.m | 285 + .../Public/NSDictionary+CordovaPreferences.h | 35 + .../Public/NSDictionary+CordovaPreferences.m | 63 + .../Public/NSMutableArray+QueueAdditions.h | 29 + .../Public/NSMutableArray+QueueAdditions.m | 58 + .../CordovaLib.xcodeproj/project.pbxproj | 526 + .../ios/CordovaLib/CordovaLib_Prefix.pch | 22 + .../platforms/ios/CordovaLib/VERSION | 1 + .../platforms/ios/CordovaLib/cordova.js | 1911 ++ .../ios/Sensortoy.xcodeproj/project.pbxproj | 455 + .../platforms/ios/Sensortoy/.gitignore | 5 + .../platforms/ios/Sensortoy/Bridging-Header.h | 28 + .../ios/Sensortoy/Classes/AppDelegate.h | 33 + .../ios/Sensortoy/Classes/AppDelegate.m | 39 + .../Sensortoy/Classes/MainViewController.h | 40 + .../Sensortoy/Classes/MainViewController.m | 134 + .../Sensortoy/Classes/MainViewController.xib | 138 + .../AppIcon.appiconset/Contents.json | 182 + .../AppIcon.appiconset/icon-40.png | Bin 0 -> 4082 bytes .../AppIcon.appiconset/icon-40@2x.png | Bin 0 -> 7411 bytes .../AppIcon.appiconset/icon-50.png | Bin 0 -> 4874 bytes .../AppIcon.appiconset/icon-50@2x.png | Bin 0 -> 9611 bytes .../AppIcon.appiconset/icon-60.png | Bin 0 -> 534 bytes .../AppIcon.appiconset/icon-60@2x.png | Bin 0 -> 809 bytes .../AppIcon.appiconset/icon-60@3x.png | Bin 0 -> 1050 bytes .../AppIcon.appiconset/icon-72.png | Bin 0 -> 618 bytes .../AppIcon.appiconset/icon-72@2x.png | Bin 0 -> 912 bytes .../AppIcon.appiconset/icon-76.png | Bin 0 -> 633 bytes .../AppIcon.appiconset/icon-76@2x.png | Bin 0 -> 944 bytes .../AppIcon.appiconset/icon-83.5@2x.png | Bin 0 -> 20563 bytes .../AppIcon.appiconset/icon-small.png | Bin 0 -> 3294 bytes .../AppIcon.appiconset/icon-small@2x.png | Bin 0 -> 5608 bytes .../AppIcon.appiconset/icon-small@3x.png | Bin 0 -> 7040 bytes .../AppIcon.appiconset/icon.png | Bin 0 -> 556 bytes .../AppIcon.appiconset/icon@2x.png | Bin 0 -> 782 bytes .../LaunchImage.launchimage/Contents.json | 156 + .../Default-568h@2x~iphone.png | Bin 0 -> 28850 bytes .../LaunchImage.launchimage/Default-667h.png | Bin 0 -> 37433 bytes .../LaunchImage.launchimage/Default-736h.png | Bin 0 -> 57448 bytes .../Default-Landscape-736h.png | Bin 0 -> 79491 bytes .../Default-Landscape@2x~ipad.png | Bin 0 -> 212234 bytes .../Default-Landscape~ipad.png | Bin 0 -> 91810 bytes .../Default-Portrait@2x~ipad.png | Bin 0 -> 61322 bytes .../Default-Portrait~ipad.png | Bin 0 -> 23280 bytes .../Default@2x~iphone.png | Bin 0 -> 23174 bytes .../Default~iphone.png | Bin 0 -> 8892 bytes .../platforms/ios/Sensortoy/Plugins/README | 20 + .../BLECentralPlugin/BLECentralPlugin.h | 69 + .../BLECentralPlugin/BLECentralPlugin.m | 801 + .../BLECentralPlugin/BLECommandContext.h | 16 + .../BLECentralPlugin/BLECommandContext.m | 10 + .../CBPeripheral+Extensions.h | 37 + .../CBPeripheral+Extensions.m | 282 + .../Plugins/cordova-plugin-device/CDVDevice.h | 30 + .../Plugins/cordova-plugin-device/CDVDevice.m | 112 + .../CDVAssetLibraryFilesystem.h | 30 + .../CDVAssetLibraryFilesystem.m | 253 + .../Plugins/cordova-plugin-file/CDVFile.h | 157 + .../Plugins/cordova-plugin-file/CDVFile.m | 1117 + .../cordova-plugin-file/CDVLocalFilesystem.h | 32 + .../cordova-plugin-file/CDVLocalFilesystem.m | 734 + .../cordova-plugin-statusbar/CDVStatusBar.h | 49 + .../cordova-plugin-statusbar/CDVStatusBar.m | 491 + .../ios/Sensortoy/Sensortoy-Info.plist | 43 + .../ios/Sensortoy/Sensortoy-Prefix.pch | 26 + .../platforms/ios/Sensortoy/config.xml | 80 + .../sensortoy/platforms/ios/Sensortoy/main.m | 35 + .../sensortoy/platforms/ios/cordova/Api.js | 309 + .../platforms/ios/cordova/apple_ios_version | 27 + .../platforms/ios/cordova/apple_osx_version | 27 + .../platforms/ios/cordova/apple_xcode_version | 29 + .../sensortoy/platforms/ios/cordova/build | 60 + .../ios/cordova/build-debug.xcconfig | 28 + .../ios/cordova/build-extras.xcconfig | 0 .../ios/cordova/build-release.xcconfig | 29 + .../sensortoy/platforms/ios/cordova/build.bat | 19 + .../platforms/ios/cordova/build.xcconfig | 42 + .../platforms/ios/cordova/check_reqs | 32 + .../platforms/ios/cordova/check_reqs.bat | 25 + .../sensortoy/platforms/ios/cordova/clean | 47 + .../sensortoy/platforms/ios/cordova/clean.bat | 19 + .../platforms/ios/cordova/defaults.xml | 55 + .../platforms/ios/cordova/lib/build.js | 203 + .../platforms/ios/cordova/lib/check_reqs.js | 141 + .../platforms/ios/cordova/lib/clean.js | 44 + .../platforms/ios/cordova/lib/configMunger.js | 39 + .../ios/cordova/lib/copy-www-build-step.js | 73 + .../platforms/ios/cordova/lib/list-devices | 68 + .../ios/cordova/lib/list-emulator-images | 48 + .../ios/cordova/lib/list-started-emulators | 51 + .../ios/cordova/lib/plugman/Plugman.js | 243 + .../ios/cordova/lib/plugman/pluginHandlers.js | 334 + .../platforms/ios/cordova/lib/prepare.js | 544 + .../platforms/ios/cordova/lib/projectFile.js | 129 + .../platforms/ios/cordova/lib/run.js | 216 + .../platforms/ios/cordova/lib/spawn.js | 49 + .../platforms/ios/cordova/lib/start-emulator | 30 + .../platforms/ios/cordova/lib/versions.js | 178 + sensortoy/sensortoy/platforms/ios/cordova/log | 23 + .../sensortoy/platforms/ios/cordova/log.bat | 19 + .../platforms/ios/cordova/loggingHelper.js | 30 + sensortoy/sensortoy/platforms/ios/cordova/run | 63 + .../sensortoy/platforms/ios/cordova/run.bat | 19 + .../sensortoy/platforms/ios/cordova/version | 35 + .../platforms/ios/cordova/version.bat | 26 + .../sensortoy/platforms/ios/frameworks.json | 3 + sensortoy/sensortoy/platforms/ios/ios.json | 270 + .../ios/platform_www/cordova-js-src/exec.js | 262 + .../platform_www/cordova-js-src/platform.js | 28 + .../platforms/ios/platform_www/cordova.js | 1911 ++ .../ios/platform_www/cordova_plugins.js | 212 + .../cordova-plugin-ble-central/www/ble.js | 167 + .../cordova-plugin-device/www/device.js | 86 + .../cordova-plugin-file/www/DirectoryEntry.js | 120 + .../www/DirectoryReader.js | 76 + .../plugins/cordova-plugin-file/www/Entry.js | 265 + .../plugins/cordova-plugin-file/www/File.js | 82 + .../cordova-plugin-file/www/FileEntry.js | 96 + .../cordova-plugin-file/www/FileError.js | 49 + .../cordova-plugin-file/www/FileReader.js | 292 + .../cordova-plugin-file/www/FileSystem.js | 58 + .../www/FileUploadOptions.js | 44 + .../www/FileUploadResult.js | 32 + .../cordova-plugin-file/www/FileWriter.js | 327 + .../plugins/cordova-plugin-file/www/Flags.js | 39 + .../www/LocalFileSystem.js | 26 + .../cordova-plugin-file/www/Metadata.js | 43 + .../cordova-plugin-file/www/ProgressEvent.js | 70 + .../www/browser/isChrome.js | 29 + .../www/fileSystemPaths.js | 66 + .../www/fileSystems-roots.js | 48 + .../cordova-plugin-file/www/fileSystems.js | 28 + .../cordova-plugin-file/www/ios/FileSystem.js | 33 + .../www/requestFileSystem.js | 85 + .../www/resolveLocalFileSystemURI.js | 95 + .../cordova-plugin-statusbar/www/statusbar.js | 116 + .../platforms/ios/www/cordova-js-src/exec.js | 262 + .../ios/www/cordova-js-src/platform.js | 28 + .../sensortoy/platforms/ios/www/cordova.js | 1911 ++ .../platforms/ios/www/cordova_plugins.js | 212 + .../sensortoy/platforms/ios/www/css/app.css | 2 + .../platforms/ios/www/css/custom.css | 1 + .../ios/www/fonts/Ubuntu-normal-300.woff | Bin 0 -> 42972 bytes .../ios/www/fonts/Ubuntu-normal-400.woff | Bin 0 -> 38352 bytes .../ios/www/fonts/Ubuntu-normal-500.woff | Bin 0 -> 34044 bytes .../ios/www/fonts/Ubuntu-normal-700.woff | Bin 0 -> 33016 bytes .../fonts/Ubuntu_Condensed-normal-400.woff | Bin 0 -> 32468 bytes .../platforms/ios/www/fonts/fonts.css | 34 + .../sensortoy/platforms/ios/www/img/logo.png | Bin 0 -> 21814 bytes .../sensortoy/platforms/ios/www/index.html | 1 + .../sensortoy/platforms/ios/www/js/app.js | 1 + .../sensortoy/platforms/ios/www/js/cc2650.js | 1 + .../platforms/ios/www/js/standards.js | 2 + .../platforms/ios/www/libs/vendor.js | 4 + .../cordova-plugin-ble-central/www/ble.js | 167 + .../cordova-plugin-device/www/device.js | 86 + .../cordova-plugin-file/www/DirectoryEntry.js | 120 + .../www/DirectoryReader.js | 76 + .../plugins/cordova-plugin-file/www/Entry.js | 265 + .../plugins/cordova-plugin-file/www/File.js | 82 + .../cordova-plugin-file/www/FileEntry.js | 96 + .../cordova-plugin-file/www/FileError.js | 49 + .../cordova-plugin-file/www/FileReader.js | 292 + .../cordova-plugin-file/www/FileSystem.js | 58 + .../www/FileUploadOptions.js | 44 + .../www/FileUploadResult.js | 32 + .../cordova-plugin-file/www/FileWriter.js | 327 + .../plugins/cordova-plugin-file/www/Flags.js | 39 + .../www/LocalFileSystem.js | 26 + .../cordova-plugin-file/www/Metadata.js | 43 + .../cordova-plugin-file/www/ProgressEvent.js | 70 + .../www/browser/isChrome.js | 29 + .../www/fileSystemPaths.js | 66 + .../www/fileSystems-roots.js | 48 + .../cordova-plugin-file/www/fileSystems.js | 28 + .../cordova-plugin-file/www/ios/FileSystem.js | 33 + .../www/requestFileSystem.js | 85 + .../www/resolveLocalFileSystemURI.js | 95 + .../cordova-plugin-statusbar/www/statusbar.js | 116 + sensortoy/sensortoy/platforms/platforms.json | 4 + sensortoy/sensortoy/plugins/android.json | 31 + .../cordova-plugin-ble-central/CHANGES.txt | 97 + .../cordova-plugin-ble-central/LICENSE.txt | 13 + .../cordova-plugin-ble-central/README.md | 754 + .../examples/battery/.npmignore | 2 + .../examples/battery/README.md | 16 + .../examples/battery/config.xml | 13 + .../examples/battery/hooks/README.md | 83 + .../examples/battery/www/css/index.css | 61 + .../examples/battery/www/index.html | 31 + .../examples/battery/www/js/index.js | 105 + .../examples/bluefruitle/.npmignore | 2 + .../examples/bluefruitle/README.md | 19 + .../examples/bluefruitle/config.xml | 12 + .../examples/bluefruitle/hooks/README.md | 83 + .../examples/bluefruitle/www/css/index.css | 77 + .../examples/bluefruitle/www/index.html | 34 + .../examples/bluefruitle/www/js/index.js | 159 + .../examples/heartrate/README.md | 9 + .../examples/heartrate/config.xml | 12 + .../examples/heartrate/hooks/README.md | 196 + .../examples/heartrate/www/css/index.css | 27 + .../examples/heartrate/www/index.html | 20 + .../examples/heartrate/www/js/index.js | 83 + .../examples/metawear/.npmignore | 2 + .../examples/metawear/README.md | 18 + .../examples/metawear/config.xml | 12 + .../examples/metawear/hooks/README.md | 83 + .../examples/metawear/www/css/index.css | 95 + .../examples/metawear/www/index.html | 37 + .../examples/metawear/www/js/index.js | 156 + .../examples/redbearlab/.npmignore | 2 + .../examples/redbearlab/README.md | 18 + .../examples/redbearlab/config.xml | 12 + .../examples/redbearlab/hooks/README.md | 83 + .../examples/redbearlab/www/css/index.css | 77 + .../examples/redbearlab/www/index.html | 34 + .../examples/redbearlab/www/js/index.js | 124 + .../examples/rfduinoLedButton/.npmignore | 2 + .../examples/rfduinoLedButton/README.md | 16 + .../examples/rfduinoLedButton/config.xml | 13 + .../examples/rfduinoLedButton/hooks/README.md | 83 + .../rfduinoLedButton/www/css/index.css | 61 + .../examples/rfduinoLedButton/www/index.html | 31 + .../examples/rfduinoLedButton/www/js/index.js | 186 + .../examples/robosmart/.npmignore | 2 + .../examples/robosmart/README.md | 15 + .../examples/robosmart/config.xml | 13 + .../examples/robosmart/hooks/README.md | 83 + .../examples/robosmart/www/css/index.css | 66 + .../examples/robosmart/www/index.html | 37 + .../examples/robosmart/www/js/index.js | 157 + .../examples/sensortag/.npmignore | 2 + .../examples/sensortag/README.md | 17 + .../examples/sensortag/config.xml | 13 + .../examples/sensortag/hooks/README.md | 83 + .../examples/sensortag/www/css/index.css | 61 + .../examples/sensortag/www/index.html | 31 + .../examples/sensortag/www/js/index.js | 141 + .../examples/sensortag_cc2650/.npmignore | 2 + .../examples/sensortag_cc2650/README.md | 18 + .../examples/sensortag_cc2650/config.xml | 13 + .../examples/sensortag_cc2650/hooks/README.md | 83 + .../sensortag_cc2650/www/css/index.css | 61 + .../examples/sensortag_cc2650/www/index.html | 32 + .../examples/sensortag_cc2650/www/js/index.js | 216 + .../cordova-plugin-ble-central/package.json | 35 + .../cordova-plugin-ble-central/plugin.xml | 90 + .../src/android/BLECentralPlugin.java | 587 + .../src/android/BLECommand.java | 61 + .../src/android/Helper.java | 158 + .../src/android/Peripheral.java | 645 + .../src/android/UUIDHelper.java | 47 + .../src/browser/BLECentralPlugin.js | 78 + .../src/ios/BLECentralPlugin.h | 69 + .../src/ios/BLECentralPlugin.m | 801 + .../src/ios/BLECommandContext.h | 16 + .../src/ios/BLECommandContext.m | 10 + .../src/ios/CBPeripheral+Extensions.h | 37 + .../src/ios/CBPeripheral+Extensions.m | 282 + .../src/wp/BLECentralPlugin.cs | 132 + .../tests/plugin.xml | 11 + .../cordova-plugin-ble-central/tests/tests.js | 71 + .../cordova-plugin-ble-central/www/ble.js | 164 + .../plugins/cordova-plugin-compat/README.md | 25 + .../cordova-plugin-compat/package.json | 32 + .../plugins/cordova-plugin-compat/plugin.xml | 36 + .../src/android/PermissionHelper.java | 138 + .../cordova-plugin-device/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-device/LICENSE | 202 + .../plugins/cordova-plugin-device/NOTICE | 5 + .../plugins/cordova-plugin-device/README.md | 286 + .../cordova-plugin-device/RELEASENOTES.md | 141 + .../cordova-plugin-device/doc/de/README.md | 203 + .../cordova-plugin-device/doc/de/index.md | 206 + .../cordova-plugin-device/doc/es/README.md | 216 + .../cordova-plugin-device/doc/es/index.md | 220 + .../cordova-plugin-device/doc/fr/README.md | 215 + .../cordova-plugin-device/doc/fr/index.md | 218 + .../cordova-plugin-device/doc/it/README.md | 203 + .../cordova-plugin-device/doc/it/index.md | 206 + .../cordova-plugin-device/doc/ja/README.md | 203 + .../cordova-plugin-device/doc/ja/index.md | 206 + .../cordova-plugin-device/doc/ko/README.md | 203 + .../cordova-plugin-device/doc/ko/index.md | 206 + .../cordova-plugin-device/doc/pl/README.md | 214 + .../cordova-plugin-device/doc/pl/index.md | 206 + .../cordova-plugin-device/doc/ru/index.md | 219 + .../cordova-plugin-device/doc/zh/README.md | 203 + .../cordova-plugin-device/doc/zh/index.md | 206 + .../cordova-plugin-device/package.json | 54 + .../plugins/cordova-plugin-device/plugin.xml | 174 + .../src/android/Device.java | 174 + .../src/blackberry10/index.js | 71 + .../src/browser/DeviceProxy.js | 82 + .../src/firefoxos/DeviceProxy.js | 77 + .../cordova-plugin-device/src/ios/CDVDevice.h | 30 + .../cordova-plugin-device/src/ios/CDVDevice.m | 112 + .../cordova-plugin-device/src/osx/CDVDevice.h | 28 + .../cordova-plugin-device/src/osx/CDVDevice.m | 113 + .../src/tizen/DeviceProxy.js | 38 + .../src/ubuntu/device.cpp | 64 + .../cordova-plugin-device/src/ubuntu/device.h | 47 + .../src/ubuntu/device.js | 33 + .../src/windows/DeviceProxy.js | 98 + .../cordova-plugin-device/src/wp/Device.cs | 87 + .../cordova-plugin-device/tests/plugin.xml | 31 + .../cordova-plugin-device/tests/tests.js | 113 + .../cordova-plugin-device/www/device.js | 83 + .../cordova-plugin-file/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-file/LICENSE | 202 + .../plugins/cordova-plugin-file/NOTICE | 5 + .../plugins/cordova-plugin-file/README.md | 540 + .../cordova-plugin-file/RELEASENOTES.md | 417 + .../cordova-plugin-file/doc/de/README.md | 335 + .../cordova-plugin-file/doc/de/index.md | 338 + .../cordova-plugin-file/doc/de/plugins.md | 101 + .../cordova-plugin-file/doc/es/README.md | 335 + .../cordova-plugin-file/doc/es/index.md | 336 + .../cordova-plugin-file/doc/es/plugins.md | 101 + .../cordova-plugin-file/doc/fr/README.md | 328 + .../cordova-plugin-file/doc/fr/index.md | 331 + .../cordova-plugin-file/doc/fr/plugins.md | 101 + .../cordova-plugin-file/doc/it/README.md | 335 + .../cordova-plugin-file/doc/it/index.md | 338 + .../cordova-plugin-file/doc/it/plugins.md | 101 + .../cordova-plugin-file/doc/ja/README.md | 335 + .../cordova-plugin-file/doc/ja/index.md | 338 + .../cordova-plugin-file/doc/ja/plugins.md | 101 + .../cordova-plugin-file/doc/ko/README.md | 335 + .../cordova-plugin-file/doc/ko/index.md | 338 + .../cordova-plugin-file/doc/ko/plugins.md | 101 + .../cordova-plugin-file/doc/pl/README.md | 335 + .../cordova-plugin-file/doc/pl/index.md | 338 + .../cordova-plugin-file/doc/pl/plugins.md | 101 + .../cordova-plugin-file/doc/plugins.md | 120 + .../cordova-plugin-file/doc/ru/index.md | 275 + .../cordova-plugin-file/doc/ru/plugins.md | 124 + .../cordova-plugin-file/doc/zh/README.md | 335 + .../cordova-plugin-file/doc/zh/index.md | 343 + .../cordova-plugin-file/doc/zh/plugins.md | 101 + .../plugins/cordova-plugin-file/package.json | 50 + .../plugins/cordova-plugin-file/plugin.xml | 425 + .../src/android/AssetFilesystem.java | 286 + .../src/android/ContentFilesystem.java | 216 + .../src/android/DirectoryManager.java | 134 + .../src/android/EncodingException.java | 29 + .../src/android/FileExistsException.java | 29 + .../src/android/FileUtils.java | 1196 + .../src/android/Filesystem.java | 331 + .../android/InvalidModificationException.java | 30 + .../src/android/LocalFilesystem.java | 510 + .../src/android/LocalFilesystemURL.java | 64 + .../NoModificationAllowedException.java | 29 + .../src/android/PendingRequests.java | 94 + .../src/android/TypeMismatchException.java | 30 + .../src/android/build-extras.gradle | 47 + .../src/blackberry10/index.js | 47 + .../src/browser/FileProxy.js | 984 + .../src/firefoxos/FileProxy.js | 805 + .../src/ios/CDVAssetLibraryFilesystem.h | 30 + .../src/ios/CDVAssetLibraryFilesystem.m | 253 + .../cordova-plugin-file/src/ios/CDVFile.h | 157 + .../cordova-plugin-file/src/ios/CDVFile.m | 1117 + .../src/ios/CDVLocalFilesystem.h | 32 + .../src/ios/CDVLocalFilesystem.m | 734 + .../cordova-plugin-file/src/osx/CDVFile.h | 189 + .../cordova-plugin-file/src/osx/CDVFile.m | 1056 + .../src/osx/CDVLocalFilesystem.h | 32 + .../src/osx/CDVLocalFilesystem.m | 733 + .../cordova-plugin-file/src/ubuntu/file.cpp | 912 + .../cordova-plugin-file/src/ubuntu/file.h | 81 + .../src/windows/FileProxy.js | 1198 + .../cordova-plugin-file/src/wp/File.cs | 1800 ++ .../cordova-plugin-file/tests/plugin.xml | 43 + .../src/android/TestContentProvider.java | 96 + .../cordova-plugin-file/tests/tests.js | 3842 ++++ .../www/fixtures/asset-test/asset-test.txt | 1 + .../cordova-plugin-file/www/DirectoryEntry.js | 117 + .../www/DirectoryReader.js | 73 + .../plugins/cordova-plugin-file/www/Entry.js | 262 + .../plugins/cordova-plugin-file/www/File.js | 79 + .../cordova-plugin-file/www/FileEntry.js | 93 + .../cordova-plugin-file/www/FileError.js | 46 + .../cordova-plugin-file/www/FileReader.js | 289 + .../cordova-plugin-file/www/FileSystem.js | 55 + .../www/FileUploadOptions.js | 41 + .../www/FileUploadResult.js | 30 + .../cordova-plugin-file/www/FileWriter.js | 324 + .../plugins/cordova-plugin-file/www/Flags.js | 36 + .../www/LocalFileSystem.js | 23 + .../cordova-plugin-file/www/Metadata.js | 40 + .../cordova-plugin-file/www/ProgressEvent.js | 67 + .../www/android/FileSystem.js | 49 + .../www/blackberry10/.jshintrc | 5 + .../www/blackberry10/FileProxy.js | 51 + .../www/blackberry10/FileSystem.js | 47 + .../www/blackberry10/copyTo.js | 143 + .../www/blackberry10/createEntryFromNative.js | 75 + .../www/blackberry10/getDirectory.js | 72 + .../www/blackberry10/getFile.js | 57 + .../www/blackberry10/getFileMetadata.js | 65 + .../www/blackberry10/getMetadata.js | 54 + .../www/blackberry10/getParent.js | 57 + .../www/blackberry10/info.js | 52 + .../www/blackberry10/moveTo.js | 39 + .../www/blackberry10/readAsArrayBuffer.js | 68 + .../www/blackberry10/readAsBinaryString.js | 68 + .../www/blackberry10/readAsDataURL.js | 65 + .../www/blackberry10/readAsText.js | 77 + .../www/blackberry10/readEntries.js | 70 + .../www/blackberry10/remove.js | 61 + .../www/blackberry10/removeRecursively.js | 62 + .../www/blackberry10/requestAllFileSystems.js | 42 + .../www/blackberry10/requestAnimationFrame.js | 38 + .../www/blackberry10/requestFileSystem.js | 53 + .../blackberry10/resolveLocalFileSystemURI.js | 172 + .../www/blackberry10/setMetadata.js | 33 + .../www/blackberry10/truncate.js | 74 + .../www/blackberry10/write.js | 73 + .../www/browser/FileSystem.js | 31 + .../www/browser/Preparing.js | 192 + .../www/browser/isChrome.js | 26 + .../www/fileSystemPaths.js | 63 + .../www/fileSystems-roots.js | 45 + .../cordova-plugin-file/www/fileSystems.js | 25 + .../www/firefoxos/FileSystem.js | 29 + .../cordova-plugin-file/www/ios/FileSystem.js | 30 + .../cordova-plugin-file/www/osx/FileSystem.js | 30 + .../www/requestFileSystem.js | 82 + .../www/resolveLocalFileSystemURI.js | 92 + .../www/ubuntu/FileSystem.js | 34 + .../www/ubuntu/FileWriter.js | 135 + .../www/ubuntu/fileSystems-roots.js | 53 + .../www/wp/FileUploadOptions.js | 49 + .../cordova-plugin-statusbar/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-statusbar/LICENSE | 202 + .../plugins/cordova-plugin-statusbar/NOTICE | 5 + .../cordova-plugin-statusbar/README.md | 306 + .../cordova-plugin-statusbar/RELEASENOTES.md | 119 + .../cordova-plugin-statusbar/doc/de/README.md | 276 + .../cordova-plugin-statusbar/doc/de/index.md | 262 + .../cordova-plugin-statusbar/doc/es/README.md | 276 + .../cordova-plugin-statusbar/doc/es/index.md | 252 + .../cordova-plugin-statusbar/doc/fr/README.md | 276 + .../cordova-plugin-statusbar/doc/fr/index.md | 262 + .../cordova-plugin-statusbar/doc/it/README.md | 276 + .../cordova-plugin-statusbar/doc/it/index.md | 262 + .../cordova-plugin-statusbar/doc/ja/README.md | 276 + .../cordova-plugin-statusbar/doc/ja/index.md | 262 + .../cordova-plugin-statusbar/doc/ko/README.md | 276 + .../cordova-plugin-statusbar/doc/ko/index.md | 262 + .../cordova-plugin-statusbar/doc/pl/README.md | 276 + .../cordova-plugin-statusbar/doc/pl/index.md | 262 + .../cordova-plugin-statusbar/doc/ru/index.md | 238 + .../cordova-plugin-statusbar/doc/zh/README.md | 276 + .../cordova-plugin-statusbar/doc/zh/index.md | 262 + .../cordova-plugin-statusbar/package.json | 44 + .../cordova-plugin-statusbar/plugin.xml | 99 + .../src/android/StatusBar.java | 165 + .../src/browser/statusbar.js | 39 + .../src/ios/CDVStatusBar.h | 49 + .../src/ios/CDVStatusBar.m | 491 + .../src/windows/StatusBarProxy.js | 114 + .../src/wp/StatusBar.cs | 141 + .../cordova-plugin-statusbar/tests/plugin.xml | 31 + .../cordova-plugin-statusbar/tests/tests.js | 151 + .../cordova-plugin-statusbar/www/statusbar.js | 113 + .../cordova-plugin-whitelist/CONTRIBUTING.md | 37 + .../plugins/cordova-plugin-whitelist/LICENSE | 202 + .../plugins/cordova-plugin-whitelist/NOTICE | 5 + .../cordova-plugin-whitelist/README.md | 151 + .../cordova-plugin-whitelist/RELEASENOTES.md | 55 + .../cordova-plugin-whitelist/doc/de/README.md | 148 + .../cordova-plugin-whitelist/doc/es/README.md | 148 + .../cordova-plugin-whitelist/doc/fr/README.md | 148 + .../cordova-plugin-whitelist/doc/it/README.md | 148 + .../cordova-plugin-whitelist/doc/ja/README.md | 148 + .../cordova-plugin-whitelist/doc/ko/README.md | 148 + .../cordova-plugin-whitelist/doc/pl/README.md | 148 + .../cordova-plugin-whitelist/doc/zh/README.md | 148 + .../cordova-plugin-whitelist/package.json | 28 + .../cordova-plugin-whitelist/plugin.xml | 50 + .../src/android/WhitelistPlugin.java | 161 + sensortoy/sensortoy/plugins/fetch.json | 50 + sensortoy/sensortoy/plugins/ios.json | 31 + .../res/android/android-chrome-36x36.png | Bin 0 -> 462 bytes .../res/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2599 bytes .../res/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1782 bytes .../res/android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3354 bytes .../res/android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5405 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7422 bytes .../res/ios/Default-568h@2x~iphone.png | Bin 0 -> 28850 bytes sensortoy/sensortoy/res/ios/Default-667h.png | Bin 0 -> 37433 bytes sensortoy/sensortoy/res/ios/Default-736h.png | Bin 0 -> 57448 bytes .../res/ios/Default-Portrait@2x~ipad.png | Bin 0 -> 61322 bytes .../res/ios/Default-Portrait~ipad.png | Bin 0 -> 23280 bytes .../sensortoy/res/ios/Default@2x~iphone.png | Bin 0 -> 23174 bytes .../sensortoy/res/ios/Default~iphone.png | Bin 0 -> 8892 bytes sensortoy/sensortoy/res/ios/icon-60.png | Bin 0 -> 534 bytes sensortoy/sensortoy/res/ios/icon-60@2x.png | Bin 0 -> 809 bytes sensortoy/sensortoy/res/ios/icon-60@3x.png | Bin 0 -> 1050 bytes sensortoy/sensortoy/res/ios/icon-72.png | Bin 0 -> 618 bytes sensortoy/sensortoy/res/ios/icon-72@2x.png | Bin 0 -> 912 bytes sensortoy/sensortoy/res/ios/icon-76.png | Bin 0 -> 633 bytes sensortoy/sensortoy/res/ios/icon-76@2x.png | Bin 0 -> 944 bytes sensortoy/sensortoy/res/ios/icon.png | Bin 0 -> 556 bytes sensortoy/sensortoy/res/ios/icon@2x.png | Bin 0 -> 782 bytes 1011 files changed, 143615 insertions(+) create mode 100644 .DS_Store create mode 100644 obrand/.DS_Store create mode 100644 obrand/obrand-admin-server/O-BrandServer/.editorconfig create mode 100644 obrand/obrand-admin-server/O-BrandServer/.gitignore create mode 100644 obrand/obrand-admin-server/O-BrandServer/.jscsrc create mode 100644 obrand/obrand-admin-server/O-BrandServer/.jshintrc create mode 100644 obrand/obrand-admin-server/O-BrandServer/.pgpass create mode 100644 obrand/obrand-admin-server/O-BrandServer/dbconfig.js create mode 100755 obrand/obrand-admin-server/O-BrandServer/dbrebuild.sh create mode 100644 obrand/obrand-admin-server/O-BrandServer/ecosystem.json create mode 100644 obrand/obrand-admin-server/O-BrandServer/obrand-server.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/obrand.sql create mode 100644 obrand/obrand-admin-server/O-BrandServer/package.json create mode 100644 obrand/obrand-admin-server/O-BrandServer/pg_hba.conf create mode 100644 obrand/obrand-admin-server/O-BrandServer/process.json create mode 100644 obrand/obrand-admin-server/O-BrandServer/rebuild.sh create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/accounts.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/beacon.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/companies.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/jade/type0.jade create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/newcompanies.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/pages.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/profiles.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/app/token.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/crossdomain.xml create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/css/mui.min.css create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/css/obrand.css create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/css/pure.min.css create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/index.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/units/db-accounts.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/units/db-company.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/units/db-connector.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/units/db-pages.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/server/units/md-errors.js create mode 100644 obrand/obrand-admin-server/O-BrandServer/views/pages.jade create mode 100644 obrand/obrand-admin-server/O-BrandServer/wwwroot/crossdomain.xml create mode 100644 obrand/obrand-admin-server/O-BrandServer/wwwroot/css.css create mode 100755 obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.eot create mode 100755 obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.svg create mode 100755 obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.ttf create mode 100755 obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.woff create mode 100644 obrand/obrand-admin-server/O-BrandServer/wwwroot/images/skyview-9e18406779ed06ffa74d29e9520dd870.jpg create mode 100644 obrand/obrand-admin-server/O-BrandServer/wwwroot/index.html create mode 100644 obrand/obrand-admin-server/O-BrandServer/wwwroot/robots.txt create mode 100644 obrand/obrand-admin-server/O-BrandServer/wwwroot/scripts.js create mode 100644 obrand/obrand-admin/.bowerrc create mode 100644 obrand/obrand-admin/.editorconfig create mode 100644 obrand/obrand-admin/.ember-cli create mode 100644 obrand/obrand-admin/.gitignore create mode 100644 obrand/obrand-admin/.jscsrc create mode 100644 obrand/obrand-admin/.jshintrc create mode 100644 obrand/obrand-admin/.travis.yml create mode 100644 obrand/obrand-admin/.watchmanconfig create mode 100644 obrand/obrand-admin/README.md create mode 100644 obrand/obrand-admin/app/adapters/application.js create mode 100644 obrand/obrand-admin/app/adapters/company.js create mode 100644 obrand/obrand-admin/app/adapters/newcompany.js create mode 100644 obrand/obrand-admin/app/adapters/page.js create mode 100644 obrand/obrand-admin/app/adapters/profile.js create mode 100644 obrand/obrand-admin/app/app.js create mode 100644 obrand/obrand-admin/app/authenticators/oauth2.js create mode 100644 obrand/obrand-admin/app/authorizers/application.js create mode 100644 obrand/obrand-admin/app/components/.gitkeep create mode 100644 obrand/obrand-admin/app/components/nav-bar.js create mode 100644 obrand/obrand-admin/app/components/page-manager.js create mode 100644 obrand/obrand-admin/app/components/side-bar.js create mode 100644 obrand/obrand-admin/app/controllers/.gitkeep create mode 100644 obrand/obrand-admin/app/controllers/application.js create mode 100644 obrand/obrand-admin/app/controllers/company.js create mode 100644 obrand/obrand-admin/app/controllers/login.js create mode 100644 obrand/obrand-admin/app/controllers/newcompany.js create mode 100644 obrand/obrand-admin/app/controllers/pages.js create mode 100644 obrand/obrand-admin/app/controllers/profile.js create mode 100644 obrand/obrand-admin/app/helpers/.gitkeep create mode 100644 obrand/obrand-admin/app/helpers/eq.js create mode 100644 obrand/obrand-admin/app/index.html create mode 100644 obrand/obrand-admin/app/models/.gitkeep create mode 100644 obrand/obrand-admin/app/models/account.js create mode 100644 obrand/obrand-admin/app/models/application.js create mode 100644 obrand/obrand-admin/app/models/company.js create mode 100644 obrand/obrand-admin/app/models/newcompany.js create mode 100644 obrand/obrand-admin/app/models/page-content.js create mode 100644 obrand/obrand-admin/app/models/page.js create mode 100644 obrand/obrand-admin/app/models/profile.js create mode 100644 obrand/obrand-admin/app/resolver.js create mode 100644 obrand/obrand-admin/app/router.js create mode 100644 obrand/obrand-admin/app/routes/.gitkeep create mode 100644 obrand/obrand-admin/app/routes/about.js create mode 100644 obrand/obrand-admin/app/routes/application.js create mode 100644 obrand/obrand-admin/app/routes/auth-error.js create mode 100644 obrand/obrand-admin/app/routes/company.js create mode 100644 obrand/obrand-admin/app/routes/index.js create mode 100644 obrand/obrand-admin/app/routes/login.js create mode 100644 obrand/obrand-admin/app/routes/newcompany.js create mode 100644 obrand/obrand-admin/app/routes/pages.js create mode 100644 obrand/obrand-admin/app/routes/profile.js create mode 100644 obrand/obrand-admin/app/routes/signup.js create mode 100644 obrand/obrand-admin/app/routes/venue.js create mode 100644 obrand/obrand-admin/app/serializers/useful.js create mode 100644 obrand/obrand-admin/app/services/session-account.js create mode 100644 obrand/obrand-admin/app/styles/app.scss create mode 100644 obrand/obrand-admin/app/styles/profile.scss create mode 100644 obrand/obrand-admin/app/styles/side-bar.scss create mode 100644 obrand/obrand-admin/app/styles/signin.scss create mode 100644 obrand/obrand-admin/app/templates/about.hbs create mode 100644 obrand/obrand-admin/app/templates/application.hbs create mode 100644 obrand/obrand-admin/app/templates/auth-error.hbs create mode 100644 obrand/obrand-admin/app/templates/company.hbs create mode 100644 obrand/obrand-admin/app/templates/components/.gitkeep create mode 100644 obrand/obrand-admin/app/templates/components/nav-bar.hbs create mode 100644 obrand/obrand-admin/app/templates/components/page-manager.hbs create mode 100644 obrand/obrand-admin/app/templates/components/side-bar.hbs create mode 100644 obrand/obrand-admin/app/templates/index.hbs create mode 100644 obrand/obrand-admin/app/templates/login.hbs create mode 100644 obrand/obrand-admin/app/templates/newcompany.hbs create mode 100644 obrand/obrand-admin/app/templates/pages.hbs create mode 100644 obrand/obrand-admin/app/templates/profile.hbs create mode 100644 obrand/obrand-admin/app/templates/signup.hbs create mode 100644 obrand/obrand-admin/app/templates/venue.hbs create mode 100644 obrand/obrand-admin/bower.json create mode 100644 obrand/obrand-admin/config/environment.js create mode 100644 obrand/obrand-admin/ember-cli-build.js create mode 100644 obrand/obrand-admin/package.json create mode 100644 obrand/obrand-admin/public/crossdomain.xml create mode 100644 obrand/obrand-admin/public/images/skyview.jpg create mode 100644 obrand/obrand-admin/public/robots.txt create mode 100644 obrand/obrand-admin/server/.jshintrc create mode 100644 obrand/obrand-admin/server/index.js create mode 100644 obrand/obrand-admin/server/mocks/accounts.js create mode 100644 obrand/obrand-admin/server/mocks/companies.js create mode 100644 obrand/obrand-admin/server/mocks/jade/type0.jade create mode 100644 obrand/obrand-admin/server/mocks/newcompanies.js create mode 100644 obrand/obrand-admin/server/mocks/pages.js create mode 100644 obrand/obrand-admin/server/mocks/profiles.js create mode 100644 obrand/obrand-admin/server/mocks/static/css/obrand.css create mode 100644 obrand/obrand-admin/server/mocks/token.js create mode 100644 obrand/obrand-admin/server/units/db-accounts.js create mode 100644 obrand/obrand-admin/server/units/db-company.js create mode 100644 obrand/obrand-admin/server/units/db-connector.js create mode 100644 obrand/obrand-admin/server/units/db-pages.js create mode 100644 obrand/obrand-admin/server/units/md-errors.js create mode 100644 obrand/obrand-admin/testem.js create mode 100644 obrand/obrand-admin/tests/.jshintrc create mode 100644 obrand/obrand-admin/tests/helpers/destroy-app.js create mode 100644 obrand/obrand-admin/tests/helpers/module-for-acceptance.js create mode 100644 obrand/obrand-admin/tests/helpers/resolver.js create mode 100644 obrand/obrand-admin/tests/helpers/start-app.js create mode 100644 obrand/obrand-admin/tests/index.html create mode 100644 obrand/obrand-admin/tests/integration/.gitkeep create mode 100644 obrand/obrand-admin/tests/integration/components/nav-bar-test.js create mode 100644 obrand/obrand-admin/tests/integration/components/page-manager-test.js create mode 100644 obrand/obrand-admin/tests/integration/components/side-bar-test.js create mode 100644 obrand/obrand-admin/tests/test-helper.js create mode 100644 obrand/obrand-admin/tests/unit/.gitkeep create mode 100644 obrand/obrand-admin/tests/unit/adapters/application-test.js create mode 100644 obrand/obrand-admin/tests/unit/adapters/company-test.js create mode 100644 obrand/obrand-admin/tests/unit/adapters/newcompany-test.js create mode 100644 obrand/obrand-admin/tests/unit/adapters/page-test.js create mode 100644 obrand/obrand-admin/tests/unit/adapters/profile-test.js create mode 100644 obrand/obrand-admin/tests/unit/controllers/application-test.js create mode 100644 obrand/obrand-admin/tests/unit/controllers/company-test.js create mode 100644 obrand/obrand-admin/tests/unit/controllers/login-test.js create mode 100644 obrand/obrand-admin/tests/unit/controllers/newcompany-test.js create mode 100644 obrand/obrand-admin/tests/unit/controllers/pages-test.js create mode 100644 obrand/obrand-admin/tests/unit/controllers/profile-test.js create mode 100644 obrand/obrand-admin/tests/unit/helpers/eq-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/account-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/application-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/company-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/newcompany-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/page-content-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/page-test.js create mode 100644 obrand/obrand-admin/tests/unit/models/profile-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/about-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/application-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/auth-error-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/company-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/index-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/login-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/newcompany-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/pages-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/profile-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/signup-test.js create mode 100644 obrand/obrand-admin/tests/unit/routes/venue-test.js create mode 100644 obrand/obrand-admin/tests/unit/serializers/useful-test.js create mode 100644 obrand/obrand-admin/tests/unit/services/session-account-test.js create mode 100644 obrand/obrand-admin/vendor/.gitkeep create mode 100644 obrand/obrand/obrand/.DS_Store create mode 100644 obrand/obrand/obrand/O-BrandAdmin.zip create mode 100644 obrand/obrand/obrand/O-BrandServer.zip create mode 100755 obrand/obrand/obrand/obrand_install.sh create mode 100644 obrand/obrand/obrand/readme.md create mode 100644 sensortoy/sensortoy/.bowerrc create mode 100644 sensortoy/sensortoy/.editorconfig create mode 100644 sensortoy/sensortoy/.gitignore create mode 100644 sensortoy/sensortoy/.jscsrc create mode 100644 sensortoy/sensortoy/.jshintrc create mode 100644 sensortoy/sensortoy/app/css/app.css create mode 100644 sensortoy/sensortoy/app/css/custom.scss create mode 100644 sensortoy/sensortoy/app/css/index.css create mode 100644 sensortoy/sensortoy/app/css/material-icons.css create mode 100644 sensortoy/sensortoy/app/css/mui.css create mode 100644 sensortoy/sensortoy/app/css/mui.custom.css create mode 100644 sensortoy/sensortoy/app/css/mui.min.css create mode 100644 sensortoy/sensortoy/app/css/progress.css create mode 100644 sensortoy/sensortoy/app/css/ripple.css create mode 100644 sensortoy/sensortoy/app/fonts/Material_Icons-normal-400.woff create mode 100644 sensortoy/sensortoy/app/fonts/Ubuntu-normal-300.woff create mode 100644 sensortoy/sensortoy/app/fonts/Ubuntu-normal-400.woff create mode 100644 sensortoy/sensortoy/app/fonts/Ubuntu-normal-500.woff create mode 100644 sensortoy/sensortoy/app/fonts/Ubuntu-normal-700.woff create mode 100644 sensortoy/sensortoy/app/fonts/Ubuntu_Condensed-normal-400.woff create mode 100644 sensortoy/sensortoy/app/fonts/fonts.css create mode 100644 sensortoy/sensortoy/app/img/logo.png create mode 100644 sensortoy/sensortoy/app/index.html create mode 100644 sensortoy/sensortoy/app/js/device/CC2650/cc2650_accelerometer.js create mode 100644 sensortoy/sensortoy/app/js/device/CC2650/cc2650_barometer.js create mode 100644 sensortoy/sensortoy/app/js/device/CC2650/cc2650_humidity.js create mode 100644 sensortoy/sensortoy/app/js/device/CC2650/cc2650_luxometer.js create mode 100644 sensortoy/sensortoy/app/js/device/CC2650/cc2650_thermopile.js create mode 100644 sensortoy/sensortoy/app/js/index.js create mode 100644 sensortoy/sensortoy/app/js/mandecoder.js create mode 100644 sensortoy/sensortoy/app/js/standards/battery.js create mode 100644 sensortoy/sensortoy/app/js/standards/bluetooth_company_identifiers.js create mode 100644 sensortoy/sensortoy/app/js/standards/button.js create mode 100644 sensortoy/sensortoy/app/js/standards/capability.js create mode 100644 sensortoy/sensortoy/app/js/standards/gadget.js create mode 100644 sensortoy/sensortoy/app/test.html create mode 100644 sensortoy/sensortoy/bower.json create mode 100644 sensortoy/sensortoy/config.xml create mode 100644 sensortoy/sensortoy/fonts.list create mode 100644 sensortoy/sensortoy/gulpfile.js create mode 100644 sensortoy/sensortoy/hooks/README.md create mode 100644 sensortoy/sensortoy/notes/notes.md create mode 100644 sensortoy/sensortoy/notes/ti/attr_cc2650 sensortag.html create mode 100644 sensortoy/sensortoy/output.txt create mode 100644 sensortoy/sensortoy/package.json create mode 100644 sensortoy/sensortoy/platforms/android/.gitignore create mode 100644 sensortoy/sensortoy/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties create mode 100644 sensortoy/sensortoy/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties.lock create mode 100644 sensortoy/sensortoy/platforms/android/.gradle/2.2.1/taskArtifacts/fileHashes.bin create mode 100644 sensortoy/sensortoy/platforms/android/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin create mode 100644 sensortoy/sensortoy/platforms/android/.gradle/2.2.1/taskArtifacts/outputFileStates.bin create mode 100644 sensortoy/sensortoy/platforms/android/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin create mode 100644 sensortoy/sensortoy/platforms/android/AndroidManifest.xml create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/AndroidManifest.xml create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/build.gradle create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/cordova.gradle create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/project.properties create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/AuthenticationToken.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CallbackContext.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/Config.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/ConfigXmlParser.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaArgs.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaDialogsHelper.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaHttpAuthHandler.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPreferences.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaResourceApi.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewEngine.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/CoreAndroid.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaClientCertRequest.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaCookieManager.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaHttpAuthHandler.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/LOG.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/NativeToJsMessageQueue.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/PluginEntry.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/PluginManager.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/PluginResult.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/ResumeCallback.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/Whitelist.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemCookieManager.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemExposedJsApi.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebChromeClient.java create mode 100644 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebView.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java create mode 100755 sensortoy/sensortoy/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java create mode 100644 sensortoy/sensortoy/platforms/android/android.json create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova-js-src/exec.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova-js-src/platform.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova-js-src/plugin/android/app.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/cordova_plugins.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/css/app.css create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/css/custom.css create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/fonts/Ubuntu-normal-300.woff create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/fonts/Ubuntu-normal-400.woff create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/fonts/Ubuntu-normal-500.woff create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/fonts/Ubuntu-normal-700.woff create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/fonts/Ubuntu_Condensed-normal-400.woff create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/fonts/fonts.css create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/img/logo.png create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/index.html create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/js/app.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/js/cc2650.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/js/standards.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/libs/vendor.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-ble-central/www/ble.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/DirectoryEntry.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/DirectoryReader.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/Entry.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/File.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileEntry.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileError.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileReader.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileUploadOptions.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileUploadResult.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/FileWriter.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/Flags.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/LocalFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/Metadata.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/ProgressEvent.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/android/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/browser/isChrome.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/fileSystemPaths.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/fileSystems-roots.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/fileSystems.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/requestFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js create mode 100644 sensortoy/sensortoy/platforms/android/assets/www/plugins/cordova-plugin-statusbar/www/statusbar.js create mode 100644 sensortoy/sensortoy/platforms/android/build.gradle create mode 100644 sensortoy/sensortoy/platforms/android/cordova/.jshintrc create mode 100644 sensortoy/sensortoy/platforms/android/cordova/Api.js create mode 100755 sensortoy/sensortoy/platforms/android/cordova/android_sdk_version create mode 100755 sensortoy/sensortoy/platforms/android/cordova/build create mode 100644 sensortoy/sensortoy/platforms/android/cordova/build.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/check_reqs create mode 100644 sensortoy/sensortoy/platforms/android/cordova/check_reqs.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/clean create mode 100644 sensortoy/sensortoy/platforms/android/cordova/clean.bat create mode 100644 sensortoy/sensortoy/platforms/android/cordova/defaults.xml create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/Adb.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/AndroidManifest.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/AndroidProject.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/ConsoleLogger.js create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/android_sdk_version.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/build.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/builders/AntBuilder.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/builders/GenericBuilder.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/builders/GradleBuilder.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/builders/builders.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/check_reqs.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/device.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/emulator.js create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/install-device create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/install-device.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/install-emulator create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/install-emulator.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/list-devices create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/list-devices.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/list-emulator-images create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/list-emulator-images.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/list-started-emulators create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/list-started-emulators.bat create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/log.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/plugin-build.gradle create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/pluginHandlers.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/prepare.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/retry.js create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/run.js create mode 100755 sensortoy/sensortoy/platforms/android/cordova/lib/start-emulator create mode 100644 sensortoy/sensortoy/platforms/android/cordova/lib/start-emulator.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/log create mode 100644 sensortoy/sensortoy/platforms/android/cordova/log.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/run create mode 100644 sensortoy/sensortoy/platforms/android/cordova/run.bat create mode 100755 sensortoy/sensortoy/platforms/android/cordova/version create mode 100644 sensortoy/sensortoy/platforms/android/cordova/version.bat create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova-js-src/exec.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova-js-src/platform.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova-js-src/plugin/android/app.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/cordova_plugins.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-ble-central/www/ble.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/DirectoryEntry.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/DirectoryReader.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/Entry.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/File.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileEntry.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileError.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileReader.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileUploadOptions.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileUploadResult.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/FileWriter.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/Flags.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/LocalFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/Metadata.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/ProgressEvent.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/android/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/browser/isChrome.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/fileSystemPaths.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/fileSystems-roots.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/fileSystems.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/requestFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js create mode 100644 sensortoy/sensortoy/platforms/android/platform_www/plugins/cordova-plugin-statusbar/www/statusbar.js create mode 100644 sensortoy/sensortoy/platforms/android/project.properties create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-hdpi/icon.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-land-hdpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-land-ldpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-land-mdpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-land-xhdpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-ldpi/icon.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-mdpi/icon.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-port-hdpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-port-ldpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-port-mdpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-port-xhdpi/screen.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-xhdpi/icon.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-xxhdpi/icon.png create mode 100644 sensortoy/sensortoy/platforms/android/res/drawable-xxxhdpi/icon.png create mode 100644 sensortoy/sensortoy/platforms/android/res/values/strings.xml create mode 100644 sensortoy/sensortoy/platforms/android/res/xml/config.xml create mode 100644 sensortoy/sensortoy/platforms/android/settings.gradle create mode 100644 sensortoy/sensortoy/platforms/android/src/com/megster/cordova/ble/central/BLECentralPlugin.java create mode 100644 sensortoy/sensortoy/platforms/android/src/com/megster/cordova/ble/central/BLECommand.java create mode 100644 sensortoy/sensortoy/platforms/android/src/com/megster/cordova/ble/central/Helper.java create mode 100644 sensortoy/sensortoy/platforms/android/src/com/megster/cordova/ble/central/Peripheral.java create mode 100644 sensortoy/sensortoy/platforms/android/src/com/megster/cordova/ble/central/UUIDHelper.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/PermissionHelper.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/device/Device.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/AssetFilesystem.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/ContentFilesystem.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/DirectoryManager.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/EncodingException.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/FileExistsException.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/FileUtils.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/Filesystem.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/InvalidModificationException.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/LocalFilesystem.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/LocalFilesystemURL.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/NoModificationAllowedException.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/PendingRequests.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/file/TypeMismatchException.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/statusbar/StatusBar.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/apache/cordova/whitelist/WhitelistPlugin.java create mode 100644 sensortoy/sensortoy/platforms/android/src/org/censis/sensortoy/MainActivity.java create mode 100644 sensortoy/sensortoy/platforms/ios/.gitignore create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/CDVDebug.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/CDVJSON_private.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/CDVJSON_private.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/CDVPlugin+Private.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVGestureHandler/CDVGestureHandler.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVGestureHandler/CDVGestureHandler.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVHandleOpenURL/CDVHandleOpenURL.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVHandleOpenURL/CDVHandleOpenURL.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVIntentAndNavigationFilter/CDVIntentAndNavigationFilter.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVIntentAndNavigationFilter/CDVIntentAndNavigationFilter.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVLocalStorage/CDVLocalStorage.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVLocalStorage/CDVLocalStorage.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine/CDVUIWebViewDelegate.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine/CDVUIWebViewDelegate.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine/CDVUIWebViewEngine.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine/CDVUIWebViewEngine.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine/CDVUIWebViewNavigationDelegate.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine/CDVUIWebViewNavigationDelegate.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDV.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVAppDelegate.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVAppDelegate.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVAvailability.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVAvailabilityDeprecated.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVCommandDelegate.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVCommandDelegateImpl.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVCommandDelegateImpl.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVCommandQueue.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVCommandQueue.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVConfigParser.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVConfigParser.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVInvokedUrlCommand.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVInvokedUrlCommand.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVPlugin+Resources.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVPlugin+Resources.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVPlugin.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVPlugin.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVPluginResult.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVPluginResult.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVScreenOrientationDelegate.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVTimer.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVTimer.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVURLProtocol.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVURLProtocol.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVUserAgentUtil.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVUserAgentUtil.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVViewController.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVViewController.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVWebViewEngineProtocol.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVWhitelist.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/CDVWhitelist.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/NSDictionary+CordovaPreferences.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/NSDictionary+CordovaPreferences.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/NSMutableArray+QueueAdditions.h create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/Classes/Public/NSMutableArray+QueueAdditions.m create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/CordovaLib.xcodeproj/project.pbxproj create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/CordovaLib_Prefix.pch create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/VERSION create mode 100644 sensortoy/sensortoy/platforms/ios/CordovaLib/cordova.js create mode 100755 sensortoy/sensortoy/platforms/ios/Sensortoy.xcodeproj/project.pbxproj create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/.gitignore create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Bridging-Header.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Classes/AppDelegate.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Classes/AppDelegate.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Classes/MainViewController.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Classes/MainViewController.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Classes/MainViewController.xib create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-40.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-40@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-50.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-50@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-60.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-60@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-60@3x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-72.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-72@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-76.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-76@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-83.5@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-small.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-small@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon-small@3x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/AppIcon.appiconset/icon@2x.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-568h@2x~iphone.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-667h.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-736h.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-Landscape-736h.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-Landscape@2x~ipad.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-Landscape~ipad.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x~ipad.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default-Portrait~ipad.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default@2x~iphone.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Images.xcassets/LaunchImage.launchimage/Default~iphone.png create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/README create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-ble-central/BLECentralPlugin/BLECentralPlugin.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-ble-central/BLECentralPlugin/BLECentralPlugin.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-ble-central/BLECentralPlugin/BLECommandContext.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-ble-central/BLECentralPlugin/BLECommandContext.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-ble-central/BLECentralPlugin/CBPeripheral+Extensions.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-ble-central/BLECentralPlugin/CBPeripheral+Extensions.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-device/CDVDevice.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-device/CDVDevice.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-file/CDVAssetLibraryFilesystem.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-file/CDVAssetLibraryFilesystem.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-file/CDVFile.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-file/CDVFile.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-file/CDVLocalFilesystem.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-file/CDVLocalFilesystem.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-statusbar/CDVStatusBar.h create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Plugins/cordova-plugin-statusbar/CDVStatusBar.m create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Sensortoy-Info.plist create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/Sensortoy-Prefix.pch create mode 100755 sensortoy/sensortoy/platforms/ios/Sensortoy/config.xml create mode 100644 sensortoy/sensortoy/platforms/ios/Sensortoy/main.m create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/Api.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/apple_ios_version create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/apple_osx_version create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/apple_xcode_version create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/build create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/build-debug.xcconfig create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/build-extras.xcconfig create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/build-release.xcconfig create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/build.bat create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/build.xcconfig create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/check_reqs create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/check_reqs.bat create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/clean create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/clean.bat create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/defaults.xml create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/build.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/check_reqs.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/clean.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/configMunger.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/copy-www-build-step.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/list-devices create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/list-emulator-images create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/list-started-emulators create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/plugman/Plugman.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/plugman/pluginHandlers.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/prepare.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/projectFile.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/run.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/spawn.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/start-emulator create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/lib/versions.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/log create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/log.bat create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/loggingHelper.js create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/run create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/run.bat create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/version create mode 100755 sensortoy/sensortoy/platforms/ios/cordova/version.bat create mode 100644 sensortoy/sensortoy/platforms/ios/frameworks.json create mode 100644 sensortoy/sensortoy/platforms/ios/ios.json create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/cordova-js-src/exec.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/cordova-js-src/platform.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/cordova.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/cordova_plugins.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-ble-central/www/ble.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-device/www/device.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/DirectoryEntry.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/DirectoryReader.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/Entry.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/File.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileEntry.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileError.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileReader.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileUploadOptions.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileUploadResult.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/FileWriter.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/Flags.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/LocalFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/Metadata.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/ProgressEvent.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/browser/isChrome.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/fileSystemPaths.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/fileSystems-roots.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/fileSystems.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/ios/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/requestFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js create mode 100644 sensortoy/sensortoy/platforms/ios/platform_www/plugins/cordova-plugin-statusbar/www/statusbar.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/cordova-js-src/exec.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/cordova-js-src/platform.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/cordova.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/cordova_plugins.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/css/app.css create mode 100644 sensortoy/sensortoy/platforms/ios/www/css/custom.css create mode 100644 sensortoy/sensortoy/platforms/ios/www/fonts/Ubuntu-normal-300.woff create mode 100644 sensortoy/sensortoy/platforms/ios/www/fonts/Ubuntu-normal-400.woff create mode 100644 sensortoy/sensortoy/platforms/ios/www/fonts/Ubuntu-normal-500.woff create mode 100644 sensortoy/sensortoy/platforms/ios/www/fonts/Ubuntu-normal-700.woff create mode 100644 sensortoy/sensortoy/platforms/ios/www/fonts/Ubuntu_Condensed-normal-400.woff create mode 100644 sensortoy/sensortoy/platforms/ios/www/fonts/fonts.css create mode 100644 sensortoy/sensortoy/platforms/ios/www/img/logo.png create mode 100644 sensortoy/sensortoy/platforms/ios/www/index.html create mode 100644 sensortoy/sensortoy/platforms/ios/www/js/app.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/js/cc2650.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/js/standards.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/libs/vendor.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-ble-central/www/ble.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-device/www/device.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/DirectoryEntry.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/DirectoryReader.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/Entry.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/File.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileEntry.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileError.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileReader.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileUploadOptions.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileUploadResult.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/FileWriter.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/Flags.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/LocalFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/Metadata.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/ProgressEvent.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/browser/isChrome.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/fileSystemPaths.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/fileSystems-roots.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/fileSystems.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/ios/FileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/requestFileSystem.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js create mode 100644 sensortoy/sensortoy/platforms/ios/www/plugins/cordova-plugin-statusbar/www/statusbar.js create mode 100644 sensortoy/sensortoy/platforms/platforms.json create mode 100644 sensortoy/sensortoy/plugins/android.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/CHANGES.txt create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/LICENSE.txt create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/battery/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/bluefruitle/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/heartrate/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/heartrate/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/heartrate/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/heartrate/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/heartrate/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/heartrate/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/metawear/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/redbearlab/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/rfduinoLedButton/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/robosmart/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/.npmignore create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/config.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/hooks/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/www/css/index.css create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/www/index.html create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/examples/sensortag_cc2650/www/js/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/package.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/android/BLECentralPlugin.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/android/BLECommand.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/android/Helper.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/android/Peripheral.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/android/UUIDHelper.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/browser/BLECentralPlugin.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/ios/BLECentralPlugin.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/ios/BLECentralPlugin.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/ios/BLECommandContext.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/ios/BLECommandContext.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/ios/CBPeripheral+Extensions.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/ios/CBPeripheral+Extensions.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/src/wp/BLECentralPlugin.cs create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/tests/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/tests/tests.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-ble-central/www/ble.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-compat/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-compat/package.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-compat/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-compat/src/android/PermissionHelper.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/CONTRIBUTING.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/LICENSE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/NOTICE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/RELEASENOTES.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/de/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/de/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/es/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/es/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/fr/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/fr/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/it/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/it/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/ja/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/ja/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/ko/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/ko/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/pl/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/pl/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/ru/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/zh/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/doc/zh/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/package.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/android/Device.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/blackberry10/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/browser/DeviceProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/firefoxos/DeviceProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/ios/CDVDevice.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/ios/CDVDevice.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/osx/CDVDevice.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/osx/CDVDevice.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/tizen/DeviceProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/ubuntu/device.cpp create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/ubuntu/device.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/ubuntu/device.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/windows/DeviceProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/src/wp/Device.cs create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/tests/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/tests/tests.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-device/www/device.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/CONTRIBUTING.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/LICENSE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/NOTICE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/RELEASENOTES.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/de/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/de/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/de/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/es/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/es/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/es/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/fr/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/fr/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/fr/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/it/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/it/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/it/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ja/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ja/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ja/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ko/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ko/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ko/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/pl/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/pl/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/pl/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ru/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/ru/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/zh/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/zh/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/doc/zh/plugins.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/package.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/AssetFilesystem.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/ContentFilesystem.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/DirectoryManager.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/EncodingException.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/FileExistsException.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/FileUtils.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/Filesystem.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/InvalidModificationException.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/LocalFilesystem.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/LocalFilesystemURL.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/NoModificationAllowedException.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/PendingRequests.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/TypeMismatchException.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/android/build-extras.gradle create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/blackberry10/index.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/browser/FileProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/firefoxos/FileProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ios/CDVAssetLibraryFilesystem.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ios/CDVAssetLibraryFilesystem.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ios/CDVFile.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ios/CDVFile.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ios/CDVLocalFilesystem.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ios/CDVLocalFilesystem.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/osx/CDVFile.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/osx/CDVFile.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/osx/CDVLocalFilesystem.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/osx/CDVLocalFilesystem.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ubuntu/file.cpp create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/ubuntu/file.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/windows/FileProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/src/wp/File.cs create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/tests/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/tests/src/android/TestContentProvider.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/tests/tests.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/tests/www/fixtures/asset-test/asset-test.txt create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/DirectoryEntry.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/DirectoryReader.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/Entry.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/File.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileEntry.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileError.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileReader.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileUploadOptions.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileUploadResult.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/FileWriter.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/Flags.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/LocalFileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/Metadata.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/ProgressEvent.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/android/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/.jshintrc create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/FileProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/copyTo.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/createEntryFromNative.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/getDirectory.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/getFile.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/getFileMetadata.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/getMetadata.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/getParent.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/info.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/moveTo.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/readAsArrayBuffer.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/readAsBinaryString.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/readAsDataURL.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/readAsText.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/readEntries.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/remove.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/removeRecursively.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/requestAllFileSystems.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/requestAnimationFrame.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/requestFileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/resolveLocalFileSystemURI.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/setMetadata.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/truncate.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/blackberry10/write.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/browser/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/browser/Preparing.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/browser/isChrome.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/fileSystemPaths.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/fileSystems-roots.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/fileSystems.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/firefoxos/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/ios/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/osx/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/requestFileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/resolveLocalFileSystemURI.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/ubuntu/FileSystem.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/ubuntu/FileWriter.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/ubuntu/fileSystems-roots.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-file/www/wp/FileUploadOptions.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/CONTRIBUTING.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/LICENSE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/NOTICE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/RELEASENOTES.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/de/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/de/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/es/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/es/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/fr/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/fr/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/it/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/it/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/ja/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/ja/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/ko/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/ko/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/pl/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/pl/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/ru/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/zh/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/doc/zh/index.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/package.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/src/android/StatusBar.java create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/src/browser/statusbar.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/src/ios/CDVStatusBar.h create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/src/ios/CDVStatusBar.m create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/src/windows/StatusBarProxy.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/src/wp/StatusBar.cs create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/tests/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/tests/tests.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-statusbar/www/statusbar.js create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/CONTRIBUTING.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/LICENSE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/NOTICE create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/RELEASENOTES.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/de/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/es/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/fr/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/it/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/ja/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/ko/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/pl/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/doc/zh/README.md create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/package.json create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/plugin.xml create mode 100644 sensortoy/sensortoy/plugins/cordova-plugin-whitelist/src/android/WhitelistPlugin.java create mode 100644 sensortoy/sensortoy/plugins/fetch.json create mode 100644 sensortoy/sensortoy/plugins/ios.json create mode 100644 sensortoy/sensortoy/res/android/android-chrome-36x36.png create mode 100644 sensortoy/sensortoy/res/android/mipmap-hdpi/ic_launcher.png create mode 100644 sensortoy/sensortoy/res/android/mipmap-mdpi/ic_launcher.png create mode 100644 sensortoy/sensortoy/res/android/mipmap-xhdpi/ic_launcher.png create mode 100644 sensortoy/sensortoy/res/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 sensortoy/sensortoy/res/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 sensortoy/sensortoy/res/ios/Default-568h@2x~iphone.png create mode 100644 sensortoy/sensortoy/res/ios/Default-667h.png create mode 100644 sensortoy/sensortoy/res/ios/Default-736h.png create mode 100644 sensortoy/sensortoy/res/ios/Default-Portrait@2x~ipad.png create mode 100644 sensortoy/sensortoy/res/ios/Default-Portrait~ipad.png create mode 100644 sensortoy/sensortoy/res/ios/Default@2x~iphone.png create mode 100644 sensortoy/sensortoy/res/ios/Default~iphone.png create mode 100644 sensortoy/sensortoy/res/ios/icon-60.png create mode 100644 sensortoy/sensortoy/res/ios/icon-60@2x.png create mode 100644 sensortoy/sensortoy/res/ios/icon-60@3x.png create mode 100644 sensortoy/sensortoy/res/ios/icon-72.png create mode 100644 sensortoy/sensortoy/res/ios/icon-72@2x.png create mode 100644 sensortoy/sensortoy/res/ios/icon-76.png create mode 100644 sensortoy/sensortoy/res/ios/icon-76@2x.png create mode 100644 sensortoy/sensortoy/res/ios/icon.png create mode 100644 sensortoy/sensortoy/res/ios/icon@2x.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..010b7c124d790cdc7ed50c97732e479a3490f972 GIT binary patch literal 6148 zcmeHKI|>3p3{6x-u(7n9D|mxJ^aNhO&z9nXV!xH=@@T$%5M;FxY~%%!H`Ot zc7e#iG^oI!YK|BhbmU9c)x<6^=%P7%Xg*nULQ#J@?k`?0S_2uW02O#uU>Mt(_5U^e z!~FkB;*JVXfxl8fN2|?hiC4* Wn%D(89eJk%`7>a;(5S$#6?g!}h!ubU literal 0 HcmV?d00001 diff --git a/obrand/.DS_Store b/obrand/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..61399626f26a2f172252a33e3310c80b73155bf9 GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NTf(fxj#U`AFQJA1^EF8*C2(Q1fsu+@8Z)KKMJCQE;P|tvS-)p z+0#vNJ_E4L$8Zm<0W9f``1CM0KX;$mRb`Aw=N(53xWg0U>#X|sgmYIIvBw*EKlv{> z4)4#0{Wu=HNG1iOfE17dQa}ovMS*Io%bT;@rc0!N6u2Y>{QJ=8j=gY7j86wci~z(1 z(_vi4EJ19ZAojv3kr|pLm6%kk5yO(se5<-%I3*?>R>OzYldUEci>LGc7Ui&>s3--b zz^MY)xm|nzf1v*{|DTeylLAuUq7<;jcDLQ|m8!SSUe0@Mqd(HU=8Nvebx;_h9TTG+ hbK~v!Hj1*Y`I_gwa7qk1^Fb%-XTWulNrC@X;2Yd&70Lhr literal 0 HcmV?d00001 diff --git a/obrand/obrand-admin-server/O-BrandServer/.editorconfig b/obrand/obrand-admin-server/O-BrandServer/.editorconfig new file mode 100644 index 0000000..62d7dde --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/.editorconfig @@ -0,0 +1,26 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 2 + +[*.{js,json,hbs,html,css}] +indent_style = space +indent_size = 2 + +[*.hbs] +insert_final_newline = false + +[*.{diff,md}] +indent_size = 2 +trim_trailing_whitespace = false + diff --git a/obrand/obrand-admin-server/O-BrandServer/.gitignore b/obrand/obrand-admin-server/O-BrandServer/.gitignore new file mode 100644 index 0000000..0854e72 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/.gitignore @@ -0,0 +1,194 @@ +### Archives template +# It's better to unpack these files and commit the raw source because +# git has its own built in compression methods. +*.7z +*.jar +*.rar +*.zip +*.gz +*.bzip +*.bz2 +*.xz +*.lzma +*.cab + +#packing-only formats +*.iso +*.tar + +#package management formats +*.dmg +*.xpi +*.gem +*.egg +*.deb +*.rpm +*.msi +*.msm +*.msp +### Windows template +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +### Xcode template +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## Build generated +build/ +DerivedData + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata + +## Other +*.xccheckout +*.moved-aside +*.xcuserstate +### OSX template +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### Node template +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git +node_modules + +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp + +# dependencies +/node_modules +/bower_components + +# misc +/.sass-cache +/connect.lock +/coverage/* +/libpeerconnection.log +npm-debug.log +testem.log +/.cache +/.gradle +/server/static/* +/wwwroot/assets diff --git a/obrand/obrand-admin-server/O-BrandServer/.jscsrc b/obrand/obrand-admin-server/O-BrandServer/.jscsrc new file mode 100644 index 0000000..acd4f65 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/.jscsrc @@ -0,0 +1,46 @@ +{ + "disallowKeywords": ["with"], + "disallowKeywordsOnNewLine": ["else"], + "disallowMixedSpacesAndTabs": true, + "disallowMultipleVarDecl": "exceptUndefined", + "disallowNewlineBeforeBlockStatements": true, + "disallowQuotedKeysInObjects": true, + "disallowSpaceAfterObjectKeys": true, + "disallowSpaceAfterPrefixUnaryOperators": true, + "disallowSpacesInFunction": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInsideParentheses": true, + "disallowTrailingWhitespace": true, + "maximumLineLength": 120, + "requireCamelCaseOrUpperCaseIdentifiers": false, + "requireCapitalizedComments": true, + "requireCapitalizedConstructors": true, + "requireCurlyBraces": true, + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "case", + "return", + "try", + "catch", + "typeof" + ], + "requireSpaceAfterLineComment": true, + "requireSpaceAfterBinaryOperators": true, + "requireSpaceBeforeBinaryOperators": true, + "requireSpaceBeforeBlockStatements": true, + "requireSpaceBeforeObjectValues": true, + "requireSpacesInFunction": { + "beforeOpeningCurlyBrace": true + }, + "requireTrailingComma": false, + "requireEarlyReturn": true, + "validateIndentation": 2, + "validateLineBreaks": "LF", + "validateQuoteMarks": "'" +} diff --git a/obrand/obrand-admin-server/O-BrandServer/.jshintrc b/obrand/obrand-admin-server/O-BrandServer/.jshintrc new file mode 100644 index 0000000..cfbe4a8 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/.jshintrc @@ -0,0 +1,34 @@ +{ + "predef": [ + "server", + "document", + "window", + "-Promise" + ], + "node": true, + "browser": false, + "boss": true, + "curly": true, + "debug": false, + "devel": true, + "eqeqeq": true, + "evil": true, + "forin": false, + "immed": false, + "laxbreak": false, + "newcap": true, + "noarg": true, + "noempty": false, + "nonew": false, + "nomen": false, + "onevar": false, + "plusplus": false, + "regexp": false, + "undef": true, + "sub": true, + "strict": false, + "white": false, + "eqnull": true, + "esnext": true, + "unused": true +} diff --git a/obrand/obrand-admin-server/O-BrandServer/.pgpass b/obrand/obrand-admin-server/O-BrandServer/.pgpass new file mode 100644 index 0000000..c0fd1f6 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/.pgpass @@ -0,0 +1 @@ +localhost:5432:oBrand:obrand:obrand \ No newline at end of file diff --git a/obrand/obrand-admin-server/O-BrandServer/dbconfig.js b/obrand/obrand-admin-server/O-BrandServer/dbconfig.js new file mode 100644 index 0000000..21e4ff7 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/dbconfig.js @@ -0,0 +1,59 @@ +/** + * + * User: Martin Donnelly + * Date: 2016-04-04 + * Time: 14:46 + * + */ +var db = require('./server/units/db-connector').dbConnection; +var dbAccount = require('./server/units/db-accounts')(db); +var exec = require('child_process').exec; + + +function addUsers() { + 'use strict'; + dbAccount.addNewAccount({ + username: 'Default', password: 'password', email: 'm@g.com' + }) + .then(function(data) { + console.log(data); + + return 'DONE'; + }) + .catch(function(err) { + console.error(err); + return -1; + }); + + +} + + +function prepare_db() { + exec('psql -Upostgres -d oBrand -h localhost -f ./obrand.sql', function(err) { + if (err !== null) { + console.log('exec error: ' + err); + return -1; + } else { + addUsers(); + + } + }); +} + + +function createDB() { + 'use strict'; + exec('createdb -Upostgres -h localhost oBrand', function(err) { + if (err !== null) { + console.log('exec error: ' + err); + return -1; + } else { + prepare_db(); + + } + }); +} + + +createDB(); diff --git a/obrand/obrand-admin-server/O-BrandServer/dbrebuild.sh b/obrand/obrand-admin-server/O-BrandServer/dbrebuild.sh new file mode 100755 index 0000000..20fb94c --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/dbrebuild.sh @@ -0,0 +1,12 @@ +#!/bin/bash +echo Database rebuilder... +SQLFILE="obrand.sql" + +createdb oBrand + +if [[ ! -f "$SQLFILE" ]]; then + wget https://dl.dropboxusercontent.com/u/233909/obrand/obrand.sql -O obrand.sql +fi + + +psql -f obrand.sql oBrand \ No newline at end of file diff --git a/obrand/obrand-admin-server/O-BrandServer/ecosystem.json b/obrand/obrand-admin-server/O-BrandServer/ecosystem.json new file mode 100644 index 0000000..12bc6ce --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/ecosystem.json @@ -0,0 +1,29 @@ +{ + /** + * Application configuration section + * http://pm2.keymetrics.io/docs/usage/application-declaration/ + */ + apps : [ + + // First application + { + name : "Obrand-Admin-Server", + script : "obrand-server.js", + "cwd": "/home/ubuntu/live", + "watch": true, + "max_restarts": 64, + "merge_logs" : true, + "autorestart" : true, + "restart_delay" : 3500, + "max_memory_restart" : "300M", + + env: { + COMMON_VARIABLE: "true" + }, + env_production : { + NODE_ENV: "production" + } + } + ] + +} diff --git a/obrand/obrand-admin-server/O-BrandServer/obrand-server.js b/obrand/obrand-admin-server/O-BrandServer/obrand-server.js new file mode 100644 index 0000000..1e788f8 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/obrand-server.js @@ -0,0 +1,69 @@ +/** + * + * User: Martin Donnelly + * Date: 2016-03-31 + * Time: 09:44 + * + */ +var express = require('express'), path = require('path'), http = require('http'); +var session = require('session'); +var morgan = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); + +var globSync = require('glob').sync; +var colors = require('colors/safe'); + + +var app = express(); + +app.set('port', process.env.PORT || 8086); +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); +app.use(morgan('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.json({type: 'application/vnd.api+json'})); +app.use(cookieParser('!n87klqX39cB:7ayiRzEL5yRy5y938')); +/*app.use(session({ +secret: 'G)+W&2W5C3V6gXJ.8mSD!l/-n3D]EV', resave: false, +saveUninitialized: false +}));*/ +app.use('/export',express.static(path.join(__dirname,'server/static'))); +app.use('/css',express.static(path.join(__dirname,'server/css'))); +app.use('/',express.static(path.join(__dirname,'wwwroot'))); + +/* These next app.get's deal with ember's routing and when the user refreshes +the page. It forces the page back into the app. + */ +app.get('/about', function(request, response) { + response.redirect('/#/about'); +}); + +app.get('/profile', function(request, response) { + response.redirect('/#/profile'); +}); + +app.get('/company', function(request, response) { + response.redirect('/#/company'); +}); + +app.get('/venue', function(request, response) { + response.redirect('/#/venue'); +}); + +app.get('/pages', function(request, response) { + response.redirect('/#/pages'); +}); + + +console.log(path.join(__dirname,'server/static')); + +var backend = globSync('./server/app/**/*.js', { cwd: __dirname }).map(require); + +backend.forEach(function(route) { route(app); }); + + +app.listen(app.get('port'), function() { + 'use strict'; + console.log(colors.magenta('Obrand Server listening on ' + app.get('port'))); +}); diff --git a/obrand/obrand-admin-server/O-BrandServer/obrand.sql b/obrand/obrand-admin-server/O-BrandServer/obrand.sql new file mode 100644 index 0000000..418eb58 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/obrand.sql @@ -0,0 +1,668 @@ +-- Database: "oBrand" + +DROP DATABASE "oBrand"; + +-- Role: obrand + +DROP ROLE obrand; + +CREATE ROLE obrand LOGIN + ENCRYPTED PASSWORD 'md51e16472d06fb312d14e3001f44e9460e' + NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; + +CREATE DATABASE "oBrand" + WITH OWNER = postgres + ENCODING = 'UTF8' + TABLESPACE = pg_default + LC_COLLATE = 'C' + LC_CTYPE = 'C' + CONNECTION LIMIT = -1; +GRANT ALL ON DATABASE "oBrand" TO postgres; + + +GRANT CONNECT ON DATABASE "oBrand" TO obrand; +REVOKE ALL ON DATABASE "oBrand" FROM public; + +ALTER DEFAULT PRIVILEGES + GRANT INSERT, SELECT, UPDATE ON TABLES + TO public; + +ALTER DEFAULT PRIVILEGES + GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES + TO postgres; + + + +-- + + + + +ALTER TABLE "profile" DROP CONSTRAINT IF EXISTS "profile_fk0"; + +ALTER TABLE "profile" DROP CONSTRAINT IF EXISTS "profile_fk1"; + +ALTER TABLE "venue" DROP CONSTRAINT IF EXISTS "venue_fk0"; + +ALTER TABLE "billing" DROP CONSTRAINT IF EXISTS "billing_fk0"; + +DROP TABLE IF EXISTS "logins"; + +DROP TABLE IF EXISTS "profile"; + +DROP TABLE IF EXISTS "company"; + +DROP TABLE IF EXISTS "venue"; + +DROP TABLE IF EXISTS "billing"; + +DROP TABLE IF EXISTS "master_beacons"; + +DROP TABLE IF EXISTS "pages"; + + +-- SEQUENCES + + +-- Sequence: public.billing_id_seq + +-- DROP SEQUENCE public.billing_id_seq; + +CREATE SEQUENCE public.billing_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; +ALTER TABLE public.billing_id_seq + OWNER TO postgres; + + + +-- Sequence: public.company_id_seq + +-- DROP SEQUENCE public.company_id_seq; + +CREATE SEQUENCE public.company_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 2 + CACHE 1; +ALTER TABLE public.company_id_seq + OWNER TO postgres; +GRANT ALL ON SEQUENCE public.company_id_seq TO postgres; +GRANT SELECT, UPDATE ON SEQUENCE public.company_id_seq TO obrand; + + + + +-- Sequence: public.logins_id_seq + +-- DROP SEQUENCE public.logins_id_seq; + +CREATE SEQUENCE public.logins_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 4 + CACHE 1; +ALTER TABLE public.logins_id_seq + OWNER TO postgres; +GRANT ALL ON SEQUENCE public.logins_id_seq TO postgres; +GRANT SELECT, UPDATE ON SEQUENCE public.logins_id_seq TO obrand; + + + + +-- Sequence: public.pages_id_seq + +-- DROP SEQUENCE public.pages_id_seq; + +CREATE SEQUENCE public.pages_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 35 + CACHE 1; +ALTER TABLE public.pages_id_seq + OWNER TO postgres; +GRANT ALL ON SEQUENCE public.pages_id_seq TO postgres; +GRANT SELECT, UPDATE ON SEQUENCE public.pages_id_seq TO obrand; + + + + +-- Sequence: public.profile_id_seq + +-- DROP SEQUENCE public.profile_id_seq; + +CREATE SEQUENCE public.profile_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 2 + CACHE 1; +ALTER TABLE public.profile_id_seq + OWNER TO postgres; +GRANT ALL ON SEQUENCE public.profile_id_seq TO postgres; +GRANT SELECT, UPDATE ON SEQUENCE public.profile_id_seq TO obrand; + + + + + +-- Sequence: public.venue_id_seq + +-- DROP SEQUENCE public.venue_id_seq; + +CREATE SEQUENCE public.venue_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; +ALTER TABLE public.venue_id_seq + OWNER TO postgres; + + + + +-- ---- + + + + + +-- Table: public.company + +-- DROP TABLE public.company; + +CREATE TABLE public.company +( + id integer NOT NULL DEFAULT nextval('company_id_seq'::regclass), + cid character varying(22) NOT NULL, + company_name character varying(100) NOT NULL, + address1 character varying(150) NOT NULL, + address2 character varying(150), + address3 character varying(150), + town character varying(150) NOT NULL, + county character varying(150), + postcode character varying(12) NOT NULL, + country integer, + pcontact character varying(20) NOT NULL, + ocontact character varying(20), + mobile character varying(20), + email character varying(150) NOT NULL, + CONSTRAINT company_pk PRIMARY KEY (id) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.company + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.company TO public; +GRANT ALL ON TABLE public.company TO postgres; + + + + + +-- Table: public.billing + +-- DROP TABLE public.billing; + +CREATE TABLE public.billing +( + id integer NOT NULL DEFAULT nextval('billing_id_seq'::regclass), + company_id integer NOT NULL, + CONSTRAINT billing_pk PRIMARY KEY (id), + CONSTRAINT billing_fk0 FOREIGN KEY (company_id) + REFERENCES public.company (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.billing + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.billing TO public; +GRANT ALL ON TABLE public.billing TO postgres; + + + + + + + + +-- Table: public.logins + +-- DROP TABLE public.logins; + +CREATE TABLE public.logins +( + id integer NOT NULL DEFAULT nextval('logins_id_seq'::regclass), + username character varying(100) NOT NULL, + email character varying(150) NOT NULL, + password_hash character varying(78) NOT NULL, + password_reset_token character varying(128), + uid character varying(22), + CONSTRAINT logins_pk PRIMARY KEY (id), + CONSTRAINT logins_email_key UNIQUE (email), + CONSTRAINT logins_password_reset_token_key UNIQUE (password_reset_token), + CONSTRAINT logins_uid_key UNIQUE (uid), + CONSTRAINT logins_username_key UNIQUE (username) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.logins + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.logins TO public; +GRANT ALL ON TABLE public.logins TO postgres; +GRANT SELECT, UPDATE, INSERT, DELETE, TRIGGER ON TABLE public.logins TO obrand; + + + + +-- Table: public.master_beacons + +-- DROP TABLE public.master_beacons; + +CREATE TABLE public.master_beacons +( + id bigint NOT NULL, + uid uuid NOT NULL, + CONSTRAINT master_beacons_pk PRIMARY KEY (id) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.master_beacons + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.master_beacons TO public; +GRANT ALL ON TABLE public.master_beacons TO postgres; + + + + + +-- Table: public.pages + +-- DROP TABLE public.pages; + +CREATE TABLE public.pages +( + id integer NOT NULL DEFAULT nextval('pages_id_seq'::regclass), + cid character varying(22), + vid character varying(22), + pid character varying(22), + content integer, + title character varying(100) NOT NULL, + data json NOT NULL, + CONSTRAINT pages_pk PRIMARY KEY (id) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.pages + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.pages TO public; +GRANT ALL ON TABLE public.pages TO postgres; + + + + +-- Table: public.profile + +-- DROP TABLE public.profile; + +CREATE TABLE public.profile +( + id integer NOT NULL DEFAULT nextval('profile_id_seq'::regclass), + uid character varying(22) NOT NULL, + forename character varying(75) NOT NULL, + surname character varying(75) NOT NULL, + gender integer NOT NULL, + dob date NOT NULL, + bio text NOT NULL, + member_of character varying(22), + CONSTRAINT profile_pk PRIMARY KEY (id), + CONSTRAINT profile_fk0 FOREIGN KEY (uid) + REFERENCES public.logins (uid) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.profile + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.profile TO public; +GRANT ALL ON TABLE public.profile TO postgres; + + + + +-- + + + +-- Table: public.venue + +-- DROP TABLE public.venue; + +CREATE TABLE public.venue +( + id integer NOT NULL DEFAULT nextval('venue_id_seq'::regclass), + venue_name character varying(100) NOT NULL, + address1 character varying(150) NOT NULL, + address2 character varying(150), + address3 character varying(150), + town character varying(150) NOT NULL, + county character varying(150), + postcode character varying(12) NOT NULL, + country integer, + pcontact character varying(20) NOT NULL, + ocontact character varying(20), + mobile character varying(20), + email character varying(150) NOT NULL, + company_id integer NOT NULL, + CONSTRAINT venue_pk PRIMARY KEY (id), + CONSTRAINT venue_fk0 FOREIGN KEY (company_id) + REFERENCES public.company (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.venue + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.venue TO public; +GRANT ALL ON TABLE public.venue TO postgres; + + + + +-- + + + + +--ALTER TABLE "profile" ADD CONSTRAINT "profile_fk0" FOREIGN KEY ("uid") REFERENCES "logins"("uid"); +--ALTER TABLE "profile" ADD CONSTRAINT "profile_fk1" FOREIGN KEY ("member_of") REFERENCES "company"("cid"); + +--ALTER TABLE "venue" ADD CONSTRAINT "venue_fk0" FOREIGN KEY ("company_id") REFERENCES "company"("id"); + +--ALTER TABLE "billing" ADD CONSTRAINT "billing_fk0" FOREIGN KEY ("company_id") REFERENCES "company"("id"); + +grant connect on database "oBrand" to obrand; + +GRANT SELECT, UPDATE, INSERT, DELETE, TRIGGER ON TABLE public.logins TO obrand; + +grant select, update on logins_id_seq to obrand; +grant select, update on profile_id_seq to obrand; +grant select, update on company_id_seq to obrand; +grant select, update on pages_pk to obrand; + + + + + +-- functions + + +-- Function: public.getaccountdetails(character varying) + +-- DROP FUNCTION public.getaccountdetails(character varying); + +CREATE OR REPLACE FUNCTION public.getaccountdetails(IN _uid character varying) + RETURNS TABLE(id integer, email character varying, uid character varying, forename character varying, surname character varying, member_of character varying) AS +$BODY$ + +BEGIN + + + RETURN QUERY + SELECT + + logins.id, + logins.email, + logins.uid, + profile.forename, + profile.surname, + profile.member_of + FROM logins + LEFT JOIN profile ON profile.uid = logins.uid + WHERE logins.uid = _uid; + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100 + ROWS 1000; +ALTER FUNCTION public.getaccountdetails(character varying) + OWNER TO postgres; + + +-- + + +-- Function: public.insert_user(character varying, character varying, character varying, character varying) + +-- DROP FUNCTION public.insert_user(character varying, character varying, character varying, character varying); + +CREATE OR REPLACE FUNCTION public.insert_user( + _username character varying, + _email character varying, + _passwordhash character varying, + _uid character varying) + RETURNS void AS +$BODY$ + +BEGIN + INSERT into logins(username, email, password_hash, uid) Values(_username,_email,_passwordHash,_uid); +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.insert_user(character varying, character varying, character varying, character varying) + OWNER TO postgres; + + + +-- + +-- Function: public.makememberof(character varying, character varying) + +-- DROP FUNCTION public.makememberof(character varying, character varying); + +CREATE OR REPLACE FUNCTION public.makememberof( + _uid character varying, + _cid character varying) + RETURNS void AS +$BODY$ + +BEGIN + UPDATE profile SET member_of = _cid WHERE uid = _uid; + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.makememberof(character varying, character varying) + OWNER TO postgres; + + +-- + + + + + +-- Function: public.upsert_company(character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, character varying, character varying) + +-- DROP FUNCTION public.upsert_company(character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, character varying, character varying); + +CREATE OR REPLACE FUNCTION public.upsert_company( + _cid character varying, + _company_name character varying, + _address1 character varying, + _address2 character varying, + _address3 character varying, + _town character varying, + _county character varying, + _postcode character varying, + _country integer, + _pcontact character varying, + _ocontact character varying, + _mobile character varying, + _email character varying) + RETURNS void AS +$BODY$ + +BEGIN + WITH upsert AS (UPDATE company + SET cid = _cid, + company_name = _company_name, + address1 = _address1, + address2 = _address2, + address3 = _address3, + town = _town, + county = _county, + postcode = _postcode, + country = _country, + pcontact = _pcontact, + ocontact = _ocontact, + mobile = _mobile, + email = _email + + WHERE cid = _cid + RETURNING *) + INSERT INTO company ( + cid, + company_name, + address1, + address2, + address3, + town, + county, + postcode, + country, + pcontact, + ocontact, + mobile, + email + ) SELECT + _cid, + _company_name, + _address1, + _address2, + _address3, + _town, + _county, + _postcode, + _country, + _pcontact, + _ocontact, + _mobile, + _email + WHERE NOT EXISTS(SELECT * + FROM upsert); + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.upsert_company(character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, character varying, character varying) + OWNER TO postgres; + + + + +-- + + + +-- Function: public.upsert_page(character varying, character varying, character varying, integer, character varying, json) + +-- DROP FUNCTION public.upsert_page(character varying, character varying, character varying, integer, character varying, json); + +CREATE OR REPLACE FUNCTION public.upsert_page( + _cid character varying, + _vid character varying, + _pid character varying, + _content integer, + _title character varying, + _data json) + RETURNS void AS +$BODY$ + +BEGIN + WITH upsert AS (UPDATE pages + SET cid = _cid, vid = _vid, content = _content, title = _title, data = _data + WHERE pid = _pid + RETURNING *) + INSERT INTO pages (cid, vid, pid, content, title, data) SELECT + _cid, + _vid, + _pid, + _content, + _title, + _data + WHERE NOT EXISTS(SELECT * + FROM upsert); + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.upsert_page(character varying, character varying, character varying, integer, character varying, json) + OWNER TO postgres; + + + + +-- + + +-- Function: public.upsert_profile(character varying, character varying, character varying, integer, date, text) + +-- DROP FUNCTION public.upsert_profile(character varying, character varying, character varying, integer, date, text); + +CREATE OR REPLACE FUNCTION public.upsert_profile( + _uid character varying, + _forename character varying, + _surname character varying, + _gender integer, + _dob date, + _bio text) + RETURNS void AS +$BODY$ + +BEGIN + WITH upsert AS (UPDATE profile + SET forename = _forename, surname = _surname, gender = _gender, dob = _dob, bio = _bio + WHERE uid = _uid + RETURNING *) + INSERT INTO profile (uid, forename, surname, gender, dob, bio) SELECT + _uid, + _forename, + _surname, + _gender, + _dob, + _bio + WHERE NOT EXISTS(SELECT * + FROM upsert); + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.upsert_profile(character varying, character varying, character varying, integer, date, text) + OWNER TO postgres; diff --git a/obrand/obrand-admin-server/O-BrandServer/package.json b/obrand/obrand-admin-server/O-BrandServer/package.json new file mode 100644 index 0000000..19a0f77 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/package.json @@ -0,0 +1,37 @@ +{ + "name": "obrand-admin-server", + "version": "1.0.0", + "description": "Obrand Administration backend server", + "main": "obrand-server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+http://gitlab.silvrtree.co.uk/martind2000/obrand-admin-server.git" + }, + "author": "Martin Donnelly ", + "license": "ISC", + "dependencies": { + "bcrypt": "^0.8.5", + "bcrypt-as-promised": "^1.1.0", + "body-parser": "^1.15.0", + "colors": "^1.1.2", + "cookie-parser": "^1.4.1", + "express": "^4.13.4", + "glob": "^7.0.3", + "md-utils": "git+http://gitlab.silvrtree.co.uk/martind2000/md-utils.git", + "moment": "^2.12.0", + "morgan": "^1.7.0", + "node-validator": "git+http://gitlab.silvrtree.co.uk/martind2000/node-validator.git", + "oauth2-server": "^2.4.1", + "pg-promise": "^3.4.3", + "pug": "^2.0.0-alpha3", + "uuid-pure": "^1.0.10" + }, + "devDependencies": { + "log4js": "^0.6.33", + "session": "^0.1.0", + "util": "^0.10.3" + } +} diff --git a/obrand/obrand-admin-server/O-BrandServer/pg_hba.conf b/obrand/obrand-admin-server/O-BrandServer/pg_hba.conf new file mode 100644 index 0000000..8954b5f --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/pg_hba.conf @@ -0,0 +1,26 @@ +# Allow any user on the local system to connect to any database with +# any database user name using Unix-domain sockets (the default for local +# connections). +# +# TYPE DATABASE USER ADDRESS METHOD +local all all trust + +# The same using local loopback TCP/IP connections. +# +# TYPE DATABASE USER ADDRESS METHOD +host all all 127.0.0.1/32 trust + +# The same as the previous line, but using a separate netmask column +# +# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD +host all all 127.0.0.1 255.255.255.255 trust + +# The same over IPv6. +# +# TYPE DATABASE USER ADDRESS METHOD +host all all ::1/128 trust + +# The same using a host name (would typically cover both IPv4 and IPv6). +# +# TYPE DATABASE USER ADDRESS METHOD +host all all localhost trust diff --git a/obrand/obrand-admin-server/O-BrandServer/process.json b/obrand/obrand-admin-server/O-BrandServer/process.json new file mode 100644 index 0000000..392746d --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/process.json @@ -0,0 +1,13 @@ +{ + "apps" : [{ + "name" : "OBrand-Server", + "watch" : true, + "script" : "obrand-server.js", + "instances" : 1, + "exec_mode" : "cluster", + "combine_logs" : true, + "max_memory_restart" : "150M", + "restart_delay" : 5000, + "ignore_watch" : ["[\\/\\\\]\\./", "node_modules", "server/static"] + }] +} diff --git a/obrand/obrand-admin-server/O-BrandServer/rebuild.sh b/obrand/obrand-admin-server/O-BrandServer/rebuild.sh new file mode 100644 index 0000000..ec42243 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/rebuild.sh @@ -0,0 +1,20 @@ +#!/bin/bash +NVM="$HOME/.nvm" +NVM_VERSION="5.7.0" +DEV="$HOME/dev" +LIVE="$HOME/live" +SWAP="/swapfile" +DBSETUP="obrand-admin-server/dbrebuild.sh" +PKG_MANAGER=$( command -v yum || command -v apt-get ) || echo "Neither yum nor apt-get found" +PKG_DEVICE=$(basename $PKG_MANAGER) + +echo Copying... + +cd $DEV/O-Brand/dist +cp -ra . $DEV/obrand-admin-server/wwwroot + +cd $DEV/obrand-admin-server + + +rsync -uav --exclude .git $DEV/obrand-admin-server/ $LIVE + diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/accounts.js b/obrand/obrand-admin-server/O-BrandServer/server/app/accounts.js new file mode 100644 index 0000000..fc29e4f --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/accounts.js @@ -0,0 +1,36 @@ +var db = require('../units/db-connector').dbConnection; +var dbAccounts = require('../units/db-accounts')(db); +module.exports = function(app) { + var express = require('express'); + var accountsRouter = express.Router(); + + accountsRouter.get('/:uid', function(req, res) { + console.log(req.headers); + if (/Bearer .+/.test(req.headers.authorization)) { + + dbAccounts.sqlGetAccountDetails(req.params.uid) + .then(function(data) { + 'use strict'; + const response = { + data: { + type: 'accounts', id: data.uid, attributes: { + uid: data.uid, login: data.email, forename: data.forename, + surname: data.surname, memberof: data.member_of + } + } + }; + res.status(200).send(response); + }) + .catch(function(err) { + console.error(err); + res.status(400).end(); + }); + } else { + console.log(req.headers); + res.status(401).end(); + } + }); + + app.use('/accounts', accountsRouter); +}; + diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/beacon.js b/obrand/obrand-admin-server/O-BrandServer/server/app/beacon.js new file mode 100644 index 0000000..13c113b --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/beacon.js @@ -0,0 +1,46 @@ +/** + * + * User: Martin Donnelly + * Date: 2016-04-05 + * Time: 11:48 + * + */ +/*jshint node:true*/ + + +var db = require('../units/db-connector').dbConnection; +var dbPages = require('../units/db-pages')(db); +var logger = require('log4js').getLogger(); + +module.exports = function(app) { + var express = require('express'); + var beaconRouter = express.Router(); + + beaconRouter.get('/', function(req, res) { + 'use strict'; + var beacon = {}; + + logger.debug(req.headers); + console.error(req.headers); + if (req.headers.hasOwnProperty('beacon')) { + beacon = JSON.parse(req.headers.beacon); + logger.debug(beacon); + } + + logger.info('gettingLatestAddedPage'); + dbPages.getLatestAddedPage() + .then((d) => { + res.redirect(301, d.fullpath); + }).catch((err)=> { + console.error(err); + res.status(401).end(); + }); + + }); + + app.use('/beacon', require('body-parser').json()); + app.use('/beacon', require('body-parser').text()); + app.use('/beacon', require('body-parser').urlencoded()); + + app.use('/beacon', beaconRouter); +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/companies.js b/obrand/obrand-admin-server/O-BrandServer/server/app/companies.js new file mode 100644 index 0000000..db0b2a3 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/companies.js @@ -0,0 +1,60 @@ +/*jshint node:true*/ +var db = require('../units/db-connector').dbConnection; +var dbCompany = require('../units/db-company')(db); +var $U = require('md-utils'); + +module.exports = function(app) { + var express = require('express'); + var companiesRouter = express.Router(); + + companiesRouter.get('/:id', function(req, res) { + 'use strict'; + var id = req.params.id; + dbCompany.sqlGetSimpleCompany(id) + .then(function(data) { + + const response = { + data: { + type: 'company', id: id, attributes: $U.reDashObject(data) + } + }; + res.status(200).send(response); + }) + .catch(function(err) { + console.error(err); + res.status(401).end(); + }); + }); + + companiesRouter.patch('/:id', function(req, res) { + 'use strict'; + if (/Bearer .+/.test(req.headers.authorization)) { + var updateData = $U.unDashObject(req.body.data.attributes); + dbCompany.addNewCompany(updateData) + .then(function(d) { + + let response = { + data: { + type: 'company', id: d.cid, attributes: d + } + + }; + res.status(200).send(response); + }) + .catch(function(e) { + console.error(e); + res.status(401).end(); + }); + + } + }); + + + companiesRouter.delete('/:id', function(req, res) { + res.status(204).end(); + }); + + app.use('/api/companies', require('body-parser').json({type: 'application/vnd.api+json'})); + + app.use('/api/companies', companiesRouter); +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/jade/type0.jade b/obrand/obrand-admin-server/O-BrandServer/server/app/jade/type0.jade new file mode 100644 index 0000000..6e8e28e --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/jade/type0.jade @@ -0,0 +1,32 @@ +doctype html +html(lang="en") + head + meta(name='viewport', content='width=device-width, initial-scale=1.0') + link(rel='stylesheet', href='/css/pure.min.css') + link(rel='stylesheet', href='/css/obrand.css') + title= title + + body + .pure-g + .pure-u-1 + h1.textcenter= title + #image.pure-u-1 + if image_url + img.centerblock(src=image_url) + #links.pure-u-1.pure-menu + ul.pure-menu-list + if link1_text + li.pure-menu-item + a.pure-menu-link.textcenter(href=link1_url)=link1_text + + if link2_text + li.pure-menu-item + a.pure-menu-link.textcenter(href=link2_url)=link2_text + + if link3_text + li.pure-menu-item + a.pure-menu-link.textcenter(href=link3_url)=link3_text + + if link4_text + li.pure-menu-item + a.pure-menu-link.textcenter(href=link4_url)=link4_text diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/newcompanies.js b/obrand/obrand-admin-server/O-BrandServer/server/app/newcompanies.js new file mode 100644 index 0000000..43bf5ef --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/newcompanies.js @@ -0,0 +1,57 @@ +/*jshint node:true*/ + +var db = require('../units/db-connector').dbConnection; +var dbCompany = require('../units/db-company')(db); +var dbAccounts = require('../units/db-accounts')(db); +var $U = require('md-utils'); +var events = require('events'); + +// Create an eventEmitter object +var eventEmitter = new events.EventEmitter(); + +module.exports = function(app) { + var express = require('express'); + var newcompaniesRouter = express.Router(); + + eventEmitter.on('makeMemberOf', (uid, cid) => { + 'use strict'; + dbAccounts.makeMemberOf(uid, cid) + .catch(function(err) { + console.error(err); + }); + }); + + newcompaniesRouter.get('/', function(req, res) { + res.send({ + newcompanies: [] + }); + }); + + newcompaniesRouter.post('/', function(req, res) { + 'use strict'; + var updateData = $U.unDashObject(req.body.data.attributes); + if (/Bearer .+/.test(req.headers.authorization)) { + dbCompany.addNewCompany(updateData) + .then(function(d) { + updateData.cid = d.cid; + let response = { + data: { + type: 'newcompany', id: d.cid, attributes: updateData + } + + }; + eventEmitter.emit('makeMemberOf', updateData.uid, d.cid); + res.status(200).send(response); + }) + .catch(function(e) { + console.error(e); + res.status(401).end(); + }); + + } + }); + + app.use('/api/newcompanies', require('body-parser').json({type: 'application/vnd.api+json'})); + + app.use('/api/newcompanies', newcompaniesRouter); +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/pages.js b/obrand/obrand-admin-server/O-BrandServer/server/app/pages.js new file mode 100644 index 0000000..b34c1fb --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/pages.js @@ -0,0 +1,163 @@ +/*jshint node:true*/ +'use strict'; +var db = require('../units/db-connector').dbConnection; +var dbPages = require('../units/db-pages')(db); +var $U = require('md-utils'); +var Events = require('events'); +var jade = require('pug'); +var fs = require('fs'); +var logger = require('log4js').getLogger(); + +var eventHandler = new Events(); + +var util = require('util'); + +var templates = { + basic: {path: __dirname + '/jade/type0.jade', compiled: null} +}; + +var exportPath = __dirname + '/../static/'; + +var doRenderPage = (page) => { + + var compiledhtml; + var _page = $U.unDashObject(page); + var htmlfile = exportPath + _page.pid + '.html'; + + if (templates.basic.compiled === null) { + templates.basic.compiled = jade.compileFile(templates.basic.path); + } + + compiledhtml = templates.basic.compiled(_page); + + fs.writeFileSync(htmlfile, compiledhtml); + +}; + +var eventRenderPage = (page) => { + doRenderPage(page); +}; + +eventHandler.on('renderPage', eventRenderPage); + +module.exports = function(app) { + var express = require('express'); + var pagesRouter = express.Router(); + + pagesRouter.get('/', function(req, res) { + + dbPages.getFullPageList() + .then(function(data) { + const response = { + data: data + }; + + res.status(200).send(response); + + }).catch((err)=> { + console.error(err); + res.status(401).end(); + }); + }); + + pagesRouter.get('/list', function(req, res) { + dbPages.getPageList() + .then(function(data) { + res.render('pages', {data: data}); + + }).catch((err)=> { + console.error(err); + res.status(401).end(); + }); + }); + + pagesRouter.post('/', function(req, res) { + dbPages.addNewPage(req.body.data) + .then(function(data) { + + dbPages.getPage(data.attributes.pid) + .then(function(data) { + let response = { + data: data + }; + logger.debug(response); + res.status(200).send(response); + }) + .catch((err)=> { + console.error(err); + res.status(401).end(); + }); + + eventHandler.emit('renderPage', data.attributes); + + }) + .catch((err)=> { + console.error(err); + res.status(401).end(); + }); + }); + + pagesRouter.patch('/:id', function(req, res) { + dbPages.addNewPage(req.body.data) + .then(function(data) { + + let response = { + data: data + }; + res.status(200).send(response); + eventHandler.emit('renderPage', data.attributes); + + }) + .catch((err)=> { + console.error(err); + res.status(401).end(); + }); + }); + + + pagesRouter.delete('/:id', function(req, res) { + logger.debug('Delete...'); + if (/Bearer .+/.test(req.headers.authorization)) { + logger.debug(req.params.id); + dbPages.deletePage(req.params.id) + .then(function(data) { + + let response = { + data: data + }; + res.status(200).send(response); + + }) + .catch((err)=> { + console.error(err); + res.status(401).end(); + }); + + } else { + res.status(401).end(); + } + }); + + pagesRouter.get('/:id', function(req, res) { + logger.debug('Page to edit:', req.params.id); + + dbPages.getPage(req.params.id) + .then(function(data) { + let response = { + data: data + }; + logger.debug(response); + res.status(200).send(response); + }) + .catch((err)=> { + console.error(err); + res.status(401).end(); + }); + + }); + + app.use('/api/pages', + require('body-parser').json({type: 'application/vnd.api+json'})); + + app.use('/api/pages', pagesRouter); +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/profiles.js b/obrand/obrand-admin-server/O-BrandServer/server/app/profiles.js new file mode 100644 index 0000000..474472b --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/profiles.js @@ -0,0 +1,82 @@ +/*jshint node:true*/ +'use strict'; +var db = require('../units/db-connector').dbConnection; +var dbAccounts = require('../units/db-accounts')(db); + +module.exports = function(app) { + var express = require('express'); + var profilesRouter = express.Router(); + var moment = require('moment'); + + profilesRouter.get('/:uid', function(req, res) { + if (/Bearer .+/.test(req.headers.authorization)) { + + dbAccounts.sqlGetProfile(req.params.uid) + .then(function(data) { + let response = {data: {}}; + if (data === null) { + // No record yet, return an empty one. + response.data = { + type: 'profile', id: req.params.uid, attributes: { + forename: '', surname: '', gender: 0, dob: '', bio: '' + + }}; + } else { + response.data = { + type: 'profile', id: data.uid, attributes: { + forename: data.forename, + surname: data.surname, + gender: data.gender, + dob: moment(data.dob).format('YYYY-MM-DD'), + bio: data.bio + } + }; + + } + res.status(200).send(response); + }) + .catch(function(e) { + console.error(e); + res.status(401).end(); + }); + } + }); + + profilesRouter.patch('/:id', function(req, res) { + var data = req.body.data; + var attr = data.attributes; + var updateData = { + uid: data.id, + forename: attr.forename, + surname: attr.surname, + gender: attr.gender, + dob: attr.dob, + bio: attr.bio + }; + dbAccounts.addInsertProfile(updateData) + .then(function() { + let response = { + data: { + type: 'profile', id: req.params.id, attributes: data.attributes + } + }; + + res.status(200).send(response); + }) + .catch(function(err) { + console.error(err); + res.status(401).end(); + }); + + }); + + profilesRouter.delete('/:id', function(req, res) { + res.status(204).end(); + }); + + app.use('/api/profiles', require('body-parser').json()); + app.use('/api/profiles', + require('body-parser').json({type: 'application/vnd.api+json'})); + + app.use('/api/profiles', profilesRouter); +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/app/token.js b/obrand/obrand-admin-server/O-BrandServer/server/app/token.js new file mode 100644 index 0000000..5388e95 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/app/token.js @@ -0,0 +1,58 @@ +/*jshint node:true*/ +'use strict'; + +var db = require('../units/db-connector').dbConnection; +var dbAccounts = require('../units/db-accounts')(db); +var logger = require('log4js').getLogger(); + +module.exports = function(app) { + var express = require('express'); + var tokenRouter = express.Router(); + + tokenRouter.get('/', function(req, res) { + res.send({ + token: [] + }); + }); + + tokenRouter.post('/', function(req, res) { + if (req.body.hasOwnProperty('grant_type')) { + if (req.body.grant_type === 'password') { + dbAccounts.findAccount({ + email: req.body.username, + password: req.body.password + }) + .then(function(d) { + let loginObj = { + access_token: 'secret token!', + account_id: d.uid, + username: d.username, + account: d.email + }; + // Res.status(200).send('{ "access_token": "secret token!", "account_id": d.id }'); + res.status(200).send(loginObj); + }) + .catch(function(err) { + logger.error(err); + res.status(400).send( + '{ "error": "No account could be found with those details" }'); + }); + } else { + logger.error('A'); + res.status(400).send( + '{ "error": "No account could be found with those details" }'); + } + + } else { + logger.error('B'); + logger.warn(req.body.hasOwnProperty('grant_type')); + res.status(400).send( + '{ "error": "No account could be found with those details" }'); + } + + }); + + app.use('/token', require('body-parser').urlencoded()); + + app.use('/token', tokenRouter); +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/crossdomain.xml b/obrand/obrand-admin-server/O-BrandServer/server/crossdomain.xml new file mode 100644 index 0000000..883c5e7 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/crossdomain.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/obrand/obrand-admin-server/O-BrandServer/server/css/mui.min.css b/obrand/obrand-admin-server/O-BrandServer/server/css/mui.min.css new file mode 100644 index 0000000..2850f4f --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/css/mui.min.css @@ -0,0 +1 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:border-box}:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:Arial,Verdana,Tahoma;font-size:14px;font-weight:400;line-height:1.429;color:rgba(0,0,0,.87);background-color:#FFF}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2196F3;text-decoration:none}a:focus,a:hover{color:#1976D2;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}p{margin:0 0 10px}ol,ul{margin-top:0;margin-bottom:10px}figure{margin:0}img{vertical-align:middle}hr{margin-top:20px;margin-bottom:20px;border:0;height:1px;background-color:rgba(0,0,0,.12)}.mui-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.mui-container:after,.mui-container:before{content:" ";display:table}.mui-container:after{clear:both}@media (min-width:544px){.mui-container{max-width:570px}}@media (min-width:768px){.mui-container{max-width:740px}}@media (min-width:992px){.mui-container{max-width:960px}}@media (min-width:1200px){.mui-container{max-width:1170px}}.mui-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.mui-container-fluid:after,.mui-container-fluid:before{content:" ";display:table}.mui-container-fluid:after{clear:both}.mui-row{margin-left:-15px;margin-right:-15px}.mui-row:after,.mui-row:before{content:" ";display:table}.mui-row:after{clear:both}.mui-col-lg-1,.mui-col-lg-10,.mui-col-lg-11,.mui-col-lg-12,.mui-col-lg-2,.mui-col-lg-3,.mui-col-lg-4,.mui-col-lg-5,.mui-col-lg-6,.mui-col-lg-7,.mui-col-lg-8,.mui-col-lg-9,.mui-col-md-1,.mui-col-md-10,.mui-col-md-11,.mui-col-md-12,.mui-col-md-2,.mui-col-md-3,.mui-col-md-4,.mui-col-md-5,.mui-col-md-6,.mui-col-md-7,.mui-col-md-8,.mui-col-md-9,.mui-col-sm-1,.mui-col-sm-10,.mui-col-sm-11,.mui-col-sm-12,.mui-col-sm-2,.mui-col-sm-3,.mui-col-sm-4,.mui-col-sm-5,.mui-col-sm-6,.mui-col-sm-7,.mui-col-sm-8,.mui-col-sm-9,.mui-col-xs-1,.mui-col-xs-10,.mui-col-xs-11,.mui-col-xs-12,.mui-col-xs-2,.mui-col-xs-3,.mui-col-xs-4,.mui-col-xs-5,.mui-col-xs-6,.mui-col-xs-7,.mui-col-xs-8,.mui-col-xs-9{min-height:1px;padding-left:15px;padding-right:15px}.mui-col-xs-1,.mui-col-xs-10,.mui-col-xs-11,.mui-col-xs-12,.mui-col-xs-2,.mui-col-xs-3,.mui-col-xs-4,.mui-col-xs-5,.mui-col-xs-6,.mui-col-xs-7,.mui-col-xs-8,.mui-col-xs-9{float:left}.mui-col-xs-1{width:8.33333%}.mui-col-xs-2{width:16.66667%}.mui-col-xs-3{width:25%}.mui-col-xs-4{width:33.33333%}.mui-col-xs-5{width:41.66667%}.mui-col-xs-6{width:50%}.mui-col-xs-7{width:58.33333%}.mui-col-xs-8{width:66.66667%}.mui-col-xs-9{width:75%}.mui-col-xs-10{width:83.33333%}.mui-col-xs-11{width:91.66667%}.mui-col-xs-12{width:100%}.mui-col-xs-offset-0{margin-left:0}.mui-col-xs-offset-1{margin-left:8.33333%}.mui-col-xs-offset-2{margin-left:16.66667%}.mui-col-xs-offset-3{margin-left:25%}.mui-col-xs-offset-4{margin-left:33.33333%}.mui-col-xs-offset-5{margin-left:41.66667%}.mui-col-xs-offset-6{margin-left:50%}.mui-col-xs-offset-7{margin-left:58.33333%}.mui-col-xs-offset-8{margin-left:66.66667%}.mui-col-xs-offset-9{margin-left:75%}.mui-col-xs-offset-10{margin-left:83.33333%}.mui-col-xs-offset-11{margin-left:91.66667%}.mui-col-xs-offset-12{margin-left:100%}@media (min-width:544px){.mui-col-sm-1,.mui-col-sm-10,.mui-col-sm-11,.mui-col-sm-12,.mui-col-sm-2,.mui-col-sm-3,.mui-col-sm-4,.mui-col-sm-5,.mui-col-sm-6,.mui-col-sm-7,.mui-col-sm-8,.mui-col-sm-9{float:left}.mui-col-sm-1{width:8.33333%}.mui-col-sm-2{width:16.66667%}.mui-col-sm-3{width:25%}.mui-col-sm-4{width:33.33333%}.mui-col-sm-5{width:41.66667%}.mui-col-sm-6{width:50%}.mui-col-sm-7{width:58.33333%}.mui-col-sm-8{width:66.66667%}.mui-col-sm-9{width:75%}.mui-col-sm-10{width:83.33333%}.mui-col-sm-11{width:91.66667%}.mui-col-sm-12{width:100%}.mui-col-sm-offset-0{margin-left:0}.mui-col-sm-offset-1{margin-left:8.33333%}.mui-col-sm-offset-2{margin-left:16.66667%}.mui-col-sm-offset-3{margin-left:25%}.mui-col-sm-offset-4{margin-left:33.33333%}.mui-col-sm-offset-5{margin-left:41.66667%}.mui-col-sm-offset-6{margin-left:50%}.mui-col-sm-offset-7{margin-left:58.33333%}.mui-col-sm-offset-8{margin-left:66.66667%}.mui-col-sm-offset-9{margin-left:75%}.mui-col-sm-offset-10{margin-left:83.33333%}.mui-col-sm-offset-11{margin-left:91.66667%}.mui-col-sm-offset-12{margin-left:100%}}@media (min-width:768px){.mui-col-md-1,.mui-col-md-10,.mui-col-md-11,.mui-col-md-12,.mui-col-md-2,.mui-col-md-3,.mui-col-md-4,.mui-col-md-5,.mui-col-md-6,.mui-col-md-7,.mui-col-md-8,.mui-col-md-9{float:left}.mui-col-md-1{width:8.33333%}.mui-col-md-2{width:16.66667%}.mui-col-md-3{width:25%}.mui-col-md-4{width:33.33333%}.mui-col-md-5{width:41.66667%}.mui-col-md-6{width:50%}.mui-col-md-7{width:58.33333%}.mui-col-md-8{width:66.66667%}.mui-col-md-9{width:75%}.mui-col-md-10{width:83.33333%}.mui-col-md-11{width:91.66667%}.mui-col-md-12{width:100%}.mui-col-md-offset-0{margin-left:0}.mui-col-md-offset-1{margin-left:8.33333%}.mui-col-md-offset-2{margin-left:16.66667%}.mui-col-md-offset-3{margin-left:25%}.mui-col-md-offset-4{margin-left:33.33333%}.mui-col-md-offset-5{margin-left:41.66667%}.mui-col-md-offset-6{margin-left:50%}.mui-col-md-offset-7{margin-left:58.33333%}.mui-col-md-offset-8{margin-left:66.66667%}.mui-col-md-offset-9{margin-left:75%}.mui-col-md-offset-10{margin-left:83.33333%}.mui-col-md-offset-11{margin-left:91.66667%}.mui-col-md-offset-12{margin-left:100%}}@media (min-width:992px){.mui-col-lg-1,.mui-col-lg-10,.mui-col-lg-11,.mui-col-lg-12,.mui-col-lg-2,.mui-col-lg-3,.mui-col-lg-4,.mui-col-lg-5,.mui-col-lg-6,.mui-col-lg-7,.mui-col-lg-8,.mui-col-lg-9{float:left}.mui-col-lg-1{width:8.33333%}.mui-col-lg-2{width:16.66667%}.mui-col-lg-3{width:25%}.mui-col-lg-4{width:33.33333%}.mui-col-lg-5{width:41.66667%}.mui-col-lg-6{width:50%}.mui-col-lg-7{width:58.33333%}.mui-col-lg-8{width:66.66667%}.mui-col-lg-9{width:75%}.mui-col-lg-10{width:83.33333%}.mui-col-lg-11{width:91.66667%}.mui-col-lg-12{width:100%}.mui-col-lg-offset-0{margin-left:0}.mui-col-lg-offset-1{margin-left:8.33333%}.mui-col-lg-offset-2{margin-left:16.66667%}.mui-col-lg-offset-3{margin-left:25%}.mui-col-lg-offset-4{margin-left:33.33333%}.mui-col-lg-offset-5{margin-left:41.66667%}.mui-col-lg-offset-6{margin-left:50%}.mui-col-lg-offset-7{margin-left:58.33333%}.mui-col-lg-offset-8{margin-left:66.66667%}.mui-col-lg-offset-9{margin-left:75%}.mui-col-lg-offset-10{margin-left:83.33333%}.mui-col-lg-offset-11{margin-left:91.66667%}.mui-col-lg-offset-12{margin-left:100%}}@media (min-width:1200px){.mui-col-xl-1,.mui-col-xl-10,.mui-col-xl-11,.mui-col-xl-12,.mui-col-xl-2,.mui-col-xl-3,.mui-col-xl-4,.mui-col-xl-5,.mui-col-xl-6,.mui-col-xl-7,.mui-col-xl-8,.mui-col-xl-9{float:left}.mui-col-xl-1{width:8.33333%}.mui-col-xl-2{width:16.66667%}.mui-col-xl-3{width:25%}.mui-col-xl-4{width:33.33333%}.mui-col-xl-5{width:41.66667%}.mui-col-xl-6{width:50%}.mui-col-xl-7{width:58.33333%}.mui-col-xl-8{width:66.66667%}.mui-col-xl-9{width:75%}.mui-col-xl-10{width:83.33333%}.mui-col-xl-11{width:91.66667%}.mui-col-xl-12{width:100%}.mui-col-xl-offset-0{margin-left:0}.mui-col-xl-offset-1{margin-left:8.33333%}.mui-col-xl-offset-2{margin-left:16.66667%}.mui-col-xl-offset-3{margin-left:25%}.mui-col-xl-offset-4{margin-left:33.33333%}.mui-col-xl-offset-5{margin-left:41.66667%}.mui-col-xl-offset-6{margin-left:50%}.mui-col-xl-offset-7{margin-left:58.33333%}.mui-col-xl-offset-8{margin-left:66.66667%}.mui-col-xl-offset-9{margin-left:75%}.mui-col-xl-offset-10{margin-left:83.33333%}.mui-col-xl-offset-11{margin-left:91.66667%}.mui-col-xl-offset-12{margin-left:100%}}.mui--text-display4{font-weight:300;font-size:112px;line-height:112px}.mui--text-display3{font-weight:400;font-size:56px;line-height:56px}.mui--text-display2{font-weight:400;font-size:45px;line-height:48px}.mui--text-display1,h1{font-weight:400;font-size:34px;line-height:40px}.mui--text-headline,h2{font-weight:400;font-size:24px;line-height:32px}.mui--text-title,h3{font-weight:400;font-size:20px;line-height:28px}.mui--text-subhead,h4{font-weight:400;font-size:16px;line-height:24px}.mui--text-body2,h5{font-weight:500;font-size:14px;line-height:24px}.mui--text-body1{font-weight:400;font-size:14px;line-height:20px}.mui--text-caption{font-weight:400;font-size:12px;line-height:16px}.mui--text-menu{font-weight:500;font-size:13px;line-height:17px}.mui--text-button{font-weight:500;font-size:14px;line-height:18px;text-transform:uppercase}.mui-panel{padding:15px;margin-bottom:20px;border-radius:0;background-color:#FFF;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0 2px 0 rgba(0,0,0,.12)}.mui-panel:after,.mui-panel:before{content:" ";display:table}.mui-panel:after{clear:both}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-panel{box-shadow:0 -1px 2px 0 rgba(0,0,0,.12),-1px 0 2px 0 rgba(0,0,0,.12),0 2px 2px 0 rgba(0,0,0,.16),0 0 2px 0 rgba(0,0,0,.12)}}.mui-btn{-webkit-animation-duration:.1ms;animation-duration:.1ms;-webkit-animation-name:mui-node-inserted;animation-name:mui-node-inserted;font-weight:500;font-size:14px;line-height:18px;text-transform:uppercase;color:rgba(0,0,0,.87);background-color:#FFF;transition:all .2s ease-in-out;display:inline-block;height:36px;padding:0 26px;margin-top:6px;margin-bottom:6px;border:none;border-radius:2px;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background-image:none;text-align:center;line-height:36px;vertical-align:middle;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:14px;letter-spacing:.03em;position:relative;overflow:hidden}.mui-btn:active,.mui-btn:focus,.mui-btn:hover{color:rgba(0,0,0,.87);background-color:#fff}.mui-btn[disabled]:active,.mui-btn[disabled]:focus,.mui-btn[disabled]:hover{color:rgba(0,0,0,.87);background-color:#FFF}.mui-btn.mui-btn--flat{color:rgba(0,0,0,.87);background-color:transparent}.mui-btn.mui-btn--flat:active,.mui-btn.mui-btn--flat:focus,.mui-btn.mui-btn--flat:hover{color:rgba(0,0,0,.87);background-color:#f2f2f2}.mui-btn.mui-btn--flat[disabled]:active,.mui-btn.mui-btn--flat[disabled]:focus,.mui-btn.mui-btn--flat[disabled]:hover{color:rgba(0,0,0,.87);background-color:transparent}.mui-btn:active,.mui-btn:focus,.mui-btn:hover{outline:0;text-decoration:none;color:rgba(0,0,0,.87)}.mui-btn:focus,.mui-btn:hover{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn:focus,.mui-btn:hover{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0 2px rgba(0,0,0,.12),0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}}.mui-btn:active{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn:active{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0 2px rgba(0,0,0,.12),0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}}.mui-btn.mui--is-disabled,.mui-btn:disabled{cursor:not-allowed;pointer-events:none;opacity:.6;box-shadow:none}.mui-btn+.mui-btn{margin-left:8px}.mui-btn--flat{background-color:transparent}.mui-btn--flat:active,.mui-btn--flat:focus,.mui-btn--flat:hover{box-shadow:none;background-color:#f2f2f2}.mui-btn--fab,.mui-btn--raised{box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn--fab,.mui-btn--raised{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0 2px rgba(0,0,0,.12),0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}}.mui-btn--fab:active,.mui-btn--raised:active{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn--fab:active,.mui-btn--raised:active{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0 2px rgba(0,0,0,.12),0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}}.mui-btn--fab{position:relative;padding:0;width:55px;height:55px;line-height:55px;border-radius:50%;z-index:1}.mui-btn--primary{color:#FFF;background-color:#2196F3}.mui-btn--primary:active,.mui-btn--primary:focus,.mui-btn--primary:hover{color:#FFF;background-color:#39a1f4}.mui-btn--primary[disabled]:active,.mui-btn--primary[disabled]:focus,.mui-btn--primary[disabled]:hover{color:#FFF;background-color:#2196F3}.mui-btn--primary.mui-btn--flat{color:#2196F3;background-color:transparent}.mui-btn--primary.mui-btn--flat:active,.mui-btn--primary.mui-btn--flat:focus,.mui-btn--primary.mui-btn--flat:hover{color:#2196F3;background-color:#f2f2f2}.mui-btn--primary.mui-btn--flat[disabled]:active,.mui-btn--primary.mui-btn--flat[disabled]:focus,.mui-btn--primary.mui-btn--flat[disabled]:hover{color:#2196F3;background-color:transparent}.mui-btn--dark{color:#FFF;background-color:#424242}.mui-btn--dark:active,.mui-btn--dark:focus,.mui-btn--dark:hover{color:#FFF;background-color:#4f4f4f}.mui-btn--dark[disabled]:active,.mui-btn--dark[disabled]:focus,.mui-btn--dark[disabled]:hover{color:#FFF;background-color:#424242}.mui-btn--dark.mui-btn--flat{color:#424242;background-color:transparent}.mui-btn--dark.mui-btn--flat:active,.mui-btn--dark.mui-btn--flat:focus,.mui-btn--dark.mui-btn--flat:hover{color:#424242;background-color:#f2f2f2}.mui-btn--dark.mui-btn--flat[disabled]:active,.mui-btn--dark.mui-btn--flat[disabled]:focus,.mui-btn--dark.mui-btn--flat[disabled]:hover{color:#424242;background-color:transparent}.mui-btn--danger{color:#FFF;background-color:#F44336}.mui-btn--danger:active,.mui-btn--danger:focus,.mui-btn--danger:hover{color:#FFF;background-color:#f55a4e}.mui-btn--danger[disabled]:active,.mui-btn--danger[disabled]:focus,.mui-btn--danger[disabled]:hover{color:#FFF;background-color:#F44336}.mui-btn--danger.mui-btn--flat{color:#F44336;background-color:transparent}.mui-btn--danger.mui-btn--flat:active,.mui-btn--danger.mui-btn--flat:focus,.mui-btn--danger.mui-btn--flat:hover{color:#F44336;background-color:#f2f2f2}.mui-btn--danger.mui-btn--flat[disabled]:active,.mui-btn--danger.mui-btn--flat[disabled]:focus,.mui-btn--danger.mui-btn--flat[disabled]:hover{color:#F44336;background-color:transparent}.mui-btn--accent{color:#FFF;background-color:#FF4081}.mui-btn--accent:active,.mui-btn--accent:focus,.mui-btn--accent:hover{color:#FFF;background-color:#ff5a92}.mui-btn--accent[disabled]:active,.mui-btn--accent[disabled]:focus,.mui-btn--accent[disabled]:hover{color:#FFF;background-color:#FF4081}.mui-btn--accent.mui-btn--flat{color:#FF4081;background-color:transparent}.mui-btn--accent.mui-btn--flat:active,.mui-btn--accent.mui-btn--flat:focus,.mui-btn--accent.mui-btn--flat:hover{color:#FF4081;background-color:#f2f2f2}.mui-btn--accent.mui-btn--flat[disabled]:active,.mui-btn--accent.mui-btn--flat[disabled]:focus,.mui-btn--accent.mui-btn--flat[disabled]:hover{color:#FF4081;background-color:transparent}.mui-btn--small{height:30.6px;line-height:30.6px;padding:0 16px;font-size:13px}.mui-btn--large{height:54px;line-height:54px;padding:0 26px;font-size:14px}.mui-btn--fab.mui-btn--small{width:44px;height:44px;line-height:44px}.mui-btn--fab.mui-btn--large{width:75px;height:75px;line-height:75px}.mui-ripple-effect{position:absolute;border-radius:50%;pointer-events:none;opacity:0;-webkit-animation:mui-ripple-animation 2s;animation:mui-ripple-animation 2s}@-webkit-keyframes mui-ripple-animation{from{-webkit-transform:scale(1);transform:scale(1);opacity:.4}to{-webkit-transform:scale(100);transform:scale(100);opacity:0}}@keyframes mui-ripple-animation{from{-webkit-transform:scale(1);transform:scale(1);opacity:.4}to{-webkit-transform:scale(100);transform:scale(100);opacity:0}}.mui-btn>.mui-ripple-effect{background-color:#a6a6a6}.mui-btn--primary>.mui-ripple-effect{background-color:#FFF}.mui-btn--dark>.mui-ripple-effect{background-color:#FFF}.mui-btn--danger>.mui-ripple-effect{background-color:#FFF}.mui-btn--accent>.mui-ripple-effect{background-color:#FFF}.mui-btn--flat>.mui-ripple-effect{background-color:#a6a6a6}.mui--appbar-height{height:56px}.mui--appbar-min-height,.mui-appbar{min-height:56px}.mui--appbar-line-height{line-height:56px}.mui--appbar-top{top:56px}@media (orientation:landscape) and (max-height:480px){.mui--appbar-height{height:48px}.mui--appbar-min-height,.mui-appbar{min-height:48px}.mui--appbar-line-height{line-height:48px}.mui--appbar-top{top:48px}}@media (min-width:480px){.mui--appbar-height{height:64px}.mui--appbar-min-height,.mui-appbar{min-height:64px}.mui--appbar-line-height{line-height:64px}.mui--appbar-top{top:64px}}.mui-appbar{background-color:#2196F3;color:#FFF}strong{font-weight:700}abbr[title]{cursor:help;border-bottom:1px dotted #2196F3}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}.mui-divider{display:block;height:1px;background-color:rgba(0,0,0,.12)}.mui--divider-top{border-top:1px solid rgba(0,0,0,.12)}.mui--divider-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.mui--divider-left{border-left:1px solid rgba(0,0,0,.12)}.mui--divider-right{border-right:1px solid rgba(0,0,0,.12)}legend{display:block;width:100%;padding:0;margin-bottom:10px;font-size:21px;color:rgba(0,0,0,.87);line-height:inherit;border:0}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox]:focus,input[type=radio]:focus,input[type=file]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}.mui-textfield{display:block;padding-top:15px;margin-bottom:20px;position:relative}.mui-textfield>label{position:absolute;top:0;display:block;width:100%;color:rgba(0,0,0,.54);font-size:12px;font-weight:400;line-height:15px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.mui-textfield>textarea{padding-top:5px}.mui-textfield>input,.mui-textfield>textarea{display:block}.mui-textfield>input:focus~label,.mui-textfield>textarea:focus~label{color:#2196F3}.mui-textfield--float-label>label{position:absolute;-webkit-transform:translate(0,15px);transform:translate(0,15px);font-size:16px;line-height:32px;color:rgba(0,0,0,.26);text-overflow:clip;cursor:text;pointer-events:none}.mui-textfield--float-label>input:focus~label,.mui-textfield--float-label>textarea:focus~label{-webkit-transform:translate(0,0);transform:translate(0,0);font-size:12px;line-height:15px;text-overflow:ellipsis}.mui-textfield--float-label>input:not(:focus).mui--is-not-empty~label,.mui-textfield--float-label>input:not(:focus):not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield--float-label>input:not(:focus)[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield--float-label>textarea:not(:focus).mui--is-not-empty~label,.mui-textfield--float-label>textarea:not(:focus):not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield--float-label>textarea:not(:focus)[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label{color:rgba(0,0,0,.54);font-size:12px;line-height:15px;-webkit-transform:translate(0,0);transform:translate(0,0);text-overflow:ellipsis}.mui-textfield--wrap-label{display:table;width:100%;padding-top:0}.mui-textfield--wrap-label:not(.mui-textfield--float-label)>label{display:table-header-group;position:static;white-space:normal;overflow-x:visible}.mui-textfield>input,.mui-textfield>textarea{-webkit-animation-duration:.1ms;animation-duration:.1ms;-webkit-animation-name:mui-node-inserted;animation-name:mui-node-inserted;display:block;background-color:transparent;color:rgba(0,0,0,.87);border:none;border-bottom:1px solid rgba(0,0,0,.26);outline:0;width:100%;font-size:16px;padding:0;box-shadow:none;border-radius:0;background-image:none}.mui-textfield>input:focus,.mui-textfield>textarea:focus{border-color:#2196F3;border-width:2px}.mui-textfield>input:-moz-read-only,.mui-textfield>input:disabled,.mui-textfield>textarea:-moz-read-only,.mui-textfield>textarea:disabled{cursor:not-allowed;background-color:transparent;opacity:1}.mui-textfield>input:disabled,.mui-textfield>input:read-only,.mui-textfield>textarea:disabled,.mui-textfield>textarea:read-only{cursor:not-allowed;background-color:transparent;opacity:1}.mui-textfield>input::-webkit-input-placeholder,.mui-textfield>textarea::-webkit-input-placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input::-moz-placeholder,.mui-textfield>textarea::-moz-placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input:-ms-input-placeholder,.mui-textfield>textarea:-ms-input-placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input::placeholder,.mui-textfield>textarea::placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input{height:32px}.mui-textfield>input:focus{height:33px;margin-bottom:-1px}.mui-textfield>textarea{min-height:64px}.mui-textfield>textarea[rows]:not([rows="2"]):focus{margin-bottom:-1px}.mui-textfield>input:focus{height:33px;margin-bottom:-1px}.mui-checkbox,.mui-radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.mui-checkbox>label,.mui-radio>label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.mui-checkbox--inline>label>input[type=checkbox],.mui-checkbox>label>input[type=checkbox],.mui-radio--inline>label>input[type=radio],.mui-radio>label>input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px}.mui-checkbox+.mui-checkbox,.mui-radio+.mui-radio{margin-top:-5px}.mui-checkbox--inline,.mui-radio--inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.mui-checkbox--inline>input[type=checkbox],.mui-checkbox--inline>input[type=radio],.mui-checkbox--inline>label>input[type=checkbox],.mui-checkbox--inline>label>input[type=radio],.mui-radio--inline>input[type=checkbox],.mui-radio--inline>input[type=radio],.mui-radio--inline>label>input[type=checkbox],.mui-radio--inline>label>input[type=radio]{margin:4px 0 0;line-height:normal}.mui-checkbox--inline+.mui-checkbox--inline,.mui-radio--inline+.mui-radio--inline{margin-top:0;margin-left:10px}.mui-select{display:block;padding-top:15px;margin-bottom:20px;position:relative}.mui-select:focus{outline:0}.mui-select:focus>select{height:33px;margin-bottom:-1px;border-color:#2196F3;border-width:2px}.mui-select>select{-webkit-animation-duration:.1ms;animation-duration:.1ms;-webkit-animation-name:mui-node-inserted;animation-name:mui-node-inserted;display:block;height:32px;width:100%;appearance:none;-webkit-appearance:none;-moz-appearance:none;outline:0;border:none;border-bottom:1px solid rgba(0,0,0,.26);border-radius:0;box-shadow:none;background-color:transparent;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNiIgd2lkdGg9IjEwIj48cG9seWdvbiBwb2ludHM9IjAsMCAxMCwwIDUsNiIgc3R5bGU9ImZpbGw6cmdiYSgwLDAsMCwuMjQpOyIvPjwvc3ZnPg==);background-repeat:no-repeat;background-position:right center;cursor:pointer;color:rgba(0,0,0,.87);font-size:16px;padding:0 25px 0 0}.mui-select>select::-ms-expand{display:none}.mui-select>select:focus{outline:0;height:33px;margin-bottom:-1px;border-color:#2196F3;border-width:2px}.mui-select>select:disabled{color:rgba(0,0,0,.38);cursor:not-allowed;background-color:transparent;opacity:1}.mui-select__menu{position:absolute;z-index:1;min-width:100%;overflow-y:auto;padding:8px 0;background-color:#FFF;font-size:16px}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-select__menu{border-left:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12)}}.mui-select__menu>div{padding:0 22px;height:42px;line-height:42px;cursor:pointer;white-space:nowrap}.mui-select__menu>div:hover{background-color:#E0E0E0}.mui-select__menu>div.mui--is-selected{background-color:#EEE}@media (min-width:544px){.mui-form--inline>.mui-textfield{display:inline-block;margin-bottom:0}.mui-form--inline>.mui-checkbox,.mui-form--inline>.mui-radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.mui-form--inline>.mui-checkbox>label,.mui-form--inline>.mui-radio>label{padding-left:0}.mui-form--inline>.mui-checkbox>label>input[type=checkbox],.mui-form--inline>.mui-radio>label>input[type=radio]{position:relative;margin-left:0}.mui-form--inline>.mui-select{display:inline-block}.mui-form--inline>.mui-btn{margin-bottom:0;margin-top:0;vertical-align:bottom}}.mui-textfield>input:invalid:not(:focus):not(:required),.mui-textfield>input:invalid:not(:focus):required.mui--is-empty.mui--is-dirty,.mui-textfield>input:invalid:not(:focus):required.mui--is-not-empty,.mui-textfield>input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:not(:required),.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-dirty,.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-not-empty,.mui-textfield>input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:invalid:not(:focus):not(:required),.mui-textfield>textarea:invalid:not(:focus):required.mui--is-empty.mui--is-dirty,.mui-textfield>textarea:invalid:not(:focus):required.mui--is-not-empty,.mui-textfield>textarea:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:not(:focus).mui--is-invalid:not(:required),.mui-textfield>textarea:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-dirty,.mui-textfield>textarea:not(:focus).mui--is-invalid:required.mui--is-not-empty,.mui-textfield>textarea:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty){border-color:#F44336;border-width:2px}.mui-textfield>input:invalid:not(:focus):not(:required),.mui-textfield>input:invalid:not(:focus):required.mui--is-empty.mui--is-dirty,.mui-textfield>input:invalid:not(:focus):required.mui--is-not-empty,.mui-textfield>input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:not(:required),.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-dirty,.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-not-empty,.mui-textfield>input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty){height:33px;margin-bottom:-1px}.mui-textfield>input:invalid:not(:focus):not(:required)~label,.mui-textfield>input:invalid:not(:focus):required.mui--is-not-empty~label,.mui-textfield>input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>input:not(:focus).mui--is-invalid:not(:required)~label,.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-not-empty~label,.mui-textfield>input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>textarea:invalid:not(:focus):not(:required)~label,.mui-textfield>textarea:invalid:not(:focus):required.mui--is-not-empty~label,.mui-textfield>textarea:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>textarea:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>textarea:not(:focus).mui--is-invalid:not(:required)~label,.mui-textfield>textarea:not(:focus).mui--is-invalid:required.mui--is-not-empty~label,.mui-textfield>textarea:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield>textarea:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label{color:#F44336}.mui-textfield:not(.mui-textfield--float-label)>input:invalid:not(:focus):required.mui--is-empty.mui--is-dirty~label,.mui-textfield:not(.mui-textfield--float-label)>input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-dirty~label,.mui-textfield:not(.mui-textfield--float-label)>textarea:invalid:not(:focus):required.mui--is-empty.mui--is-dirty~label,.mui-textfield:not(.mui-textfield--float-label)>textarea:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-dirty~label{color:#F44336}th{text-align:left}.mui-table{width:100%;max-width:100%;margin-bottom:20px}.mui-table>tbody>tr>td,.mui-table>tbody>tr>th,.mui-table>tfoot>tr>td,.mui-table>tfoot>tr>th,.mui-table>thead>tr>td,.mui-table>thead>tr>th{padding:10px;line-height:1.429}.mui-table>thead>tr>th{border-bottom:2px solid rgba(0,0,0,.12);font-weight:700}.mui-table>tbody+tbody{border-top:2px solid rgba(0,0,0,.12)}.mui-table.mui-table--bordered>tbody>tr>td{border-bottom:1px solid rgba(0,0,0,.12)}.mui-dropdown{display:inline-block;position:relative}[data-mui-toggle=dropdown]{-webkit-animation-duration:.1ms;animation-duration:.1ms;-webkit-animation-name:mui-node-inserted;animation-name:mui-node-inserted;outline:0}.mui-dropdown__menu{position:absolute;top:100%;left:0;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#FFF;border-radius:2px;z-index:1;background-clip:padding-box}.mui-dropdown__menu.mui--is-open{display:block}.mui-dropdown__menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.429;color:rgba(0,0,0,.87);white-space:nowrap}.mui-dropdown__menu>li>a:focus,.mui-dropdown__menu>li>a:hover{text-decoration:none;color:rgba(0,0,0,.87);background-color:#EEE}.mui-dropdown__menu>.mui--is-disabled>a,.mui-dropdown__menu>.mui--is-disabled>a:focus,.mui-dropdown__menu>.mui--is-disabled>a:hover{color:#EEE}.mui-dropdown__menu>.mui--is-disabled>a:focus,.mui-dropdown__menu>.mui--is-disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;cursor:not-allowed}.mui-dropdown__menu--right{left:auto;right:0}.mui-tabs__bar{list-style:none;padding-left:0;margin-bottom:0;background-color:transparent;white-space:nowrap;overflow-x:auto}.mui-tabs__bar>li{display:inline-block}.mui-tabs__bar>li>a{display:block;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;color:rgba(0,0,0,.87);cursor:default;height:48px;line-height:48px;padding-left:24px;padding-right:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mui-tabs__bar>li>a:hover{text-decoration:none}.mui-tabs__bar>li.mui--is-active{border-bottom:2px solid #2196F3}.mui-tabs__bar>li.mui--is-active>a{color:#2196F3}.mui-tabs__bar.mui-tabs__bar--justified{display:table;width:100%;table-layout:fixed}.mui-tabs__bar.mui-tabs__bar--justified>li{display:table-cell}.mui-tabs__bar.mui-tabs__bar--justified>li>a{text-align:center;padding-left:0;padding-right:0}.mui-tabs__pane{display:none}.mui-tabs__pane.mui--is-active{display:block}[data-mui-toggle=tab]{-webkit-animation-duration:.1ms;animation-duration:.1ms;-webkit-animation-name:mui-node-inserted;animation-name:mui-node-inserted}#mui-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999999;background-color:rgba(0,0,0,.2);overflow:auto}@-webkit-keyframes mui-node-inserted{from{opacity:.99}to{opacity:1}}@keyframes mui-node-inserted{from{opacity:.99}to{opacity:1}}.mui--no-transition{transition:none!important}.mui--no-user-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mui-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.mui--text-left{text-align:left!important}.mui--text-right{text-align:right!important}.mui--text-center{text-align:center!important}.mui--text-justify{text-align:justify!important}.mui--text-nowrap{white-space:nowrap!important}.mui--align-baseline{vertical-align:baseline!important}.mui--align-top{vertical-align:top!important}.mui--align-middle{vertical-align:middle!important}.mui--align-bottom{vertical-align:bottom!important}.mui--text-dark{color:rgba(0,0,0,.87)}.mui--text-dark-secondary{color:rgba(0,0,0,.54)}.mui--text-dark-hint{color:rgba(0,0,0,.38)}.mui--text-light{color:#FFF}.mui--text-light-secondary{color:rgba(255,255,255,.7)}.mui--text-light-hint{color:rgba(255,255,255,.3)}.mui--text-accent{color:rgba(255,64,129,.87)}.mui--text-accent-secondary{color:rgba(255,64,129,.54)}.mui--text-accent-hint{color:rgba(255,64,129,.38)}.mui--text-black{color:#000}.mui--text-white{color:#FFF}.mui--text-danger{color:#F44336}.mui-list--unstyled{padding-left:0;list-style:none}.mui-list--inline{padding-left:0;list-style:none;margin-left:-5px}.mui-list--inline>li{display:inline-block;padding-left:5px;padding-right:5px}.mui--z1,.mui-dropdown__menu,.mui-select__menu{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.mui--z2{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.mui--z3{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}.mui--z4{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.mui--z5{box-shadow:0 19px 38px rgba(0,0,0,.3),0 15px 12px rgba(0,0,0,.22)}.mui--clearfix:after,.mui--clearfix:before{content:" ";display:table}.mui--clearfix:after{clear:both}.mui--pull-right{float:right!important}.mui--pull-left{float:left!important}.mui--hide{display:none!important}.mui--show{display:block!important}.mui--invisible{visibility:hidden}.mui--overflow-hidden{overflow:hidden!important}.mui--overflow-hidden-x{overflow-x:hidden!important}.mui--overflow-hidden-y{overflow-y:hidden!important}.mui--visible-lg-block,.mui--visible-lg-inline,.mui--visible-lg-inline-block,.mui--visible-md-block,.mui--visible-md-inline,.mui--visible-md-inline-block,.mui--visible-sm-block,.mui--visible-sm-inline,.mui--visible-sm-inline-block,.mui--visible-xl-block,.mui--visible-xl-inline,.mui--visible-xl-inline-block,.mui--visible-xs-block,.mui--visible-xs-inline,.mui--visible-xs-inline-block{display:none!important}@media (max-width:543px){.mui-visible-xs{display:block!important}table.mui-visible-xs{display:table}tr.mui-visible-xs{display:table-row!important}td.mui-visible-xs,th.mui-visible-xs{display:table-cell!important}.mui--visible-xs-block{display:block!important}.mui--visible-xs-inline{display:inline!important}.mui--visible-xs-inline-block{display:inline-block!important}}@media (min-width:544px) and (max-width:767px){.mui-visible-sm{display:block!important}table.mui-visible-sm{display:table}tr.mui-visible-sm{display:table-row!important}td.mui-visible-sm,th.mui-visible-sm{display:table-cell!important}.mui--visible-sm-block{display:block!important}.mui--visible-sm-inline{display:inline!important}.mui--visible-sm-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.mui-visible-md{display:block!important}table.mui-visible-md{display:table}tr.mui-visible-md{display:table-row!important}td.mui-visible-md,th.mui-visible-md{display:table-cell!important}.mui--visible-md-block{display:block!important}.mui--visible-md-inline{display:inline!important}.mui--visible-md-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.mui-visible-lg{display:block!important}table.mui-visible-lg{display:table}tr.mui-visible-lg{display:table-row!important}td.mui-visible-lg,th.mui-visible-lg{display:table-cell!important}.mui--visible-lg-block{display:block!important}.mui--visible-lg-inline{display:inline!important}.mui--visible-lg-inline-block{display:inline-block!important}}@media (min-width:1200px){.mui-visible-xl{display:block!important}table.mui-visible-xl{display:table}tr.mui-visible-xl{display:table-row!important}td.mui-visible-xl,th.mui-visible-xl{display:table-cell!important}.mui--visible-xl-block{display:block!important}.mui--visible-xl-inline{display:inline!important}.mui--visible-xl-inline-block{display:inline-block!important}}@media (max-width:543px){.mui--hidden-xs{display:none!important}}@media (min-width:544px) and (max-width:767px){.mui--hidden-sm{display:none!important}}@media (min-width:768px) and (max-width:991px){.mui--hidden-md{display:none!important}}@media (min-width:992px) and (max-width:1199px){.mui--hidden-lg{display:none!important}}@media (min-width:1200px){.mui--hidden-xl{display:none!important}}body.mui-body--scroll-lock{overflow:hidden!important} diff --git a/obrand/obrand-admin-server/O-BrandServer/server/css/obrand.css b/obrand/obrand-admin-server/O-BrandServer/server/css/obrand.css new file mode 100644 index 0000000..1fd9a5c --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/css/obrand.css @@ -0,0 +1,15 @@ +.textcenter { + text-align: center !important; +} + +.centerblock { + display: block; + margin-left: auto; + margin-right: auto; +} + +#image.img { + max-width: 300px; + max-height: 300px; + + } diff --git a/obrand/obrand-admin-server/O-BrandServer/server/css/pure.min.css b/obrand/obrand-admin-server/O-BrandServer/server/css/pure.min.css new file mode 100644 index 0000000..016c54b --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/css/pure.min.css @@ -0,0 +1,11 @@ +/*! +Pure v0.6.0 +Copyright 2014 Yahoo! Inc. All rights reserved. +Licensed under the BSD License. +https://github.com/yahoo/pure/blob/master/LICENSE.md +*/ +/*! +normalize.css v^3.0 | MIT License | git.io/normalize +Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-flex;-webkit-flex-flow:row wrap;display:-ms-flexbox;-ms-flex-flow:row wrap;-ms-align-content:flex-start;-webkit-align-content:flex-start;align-content:flex-start}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class *="pure-u"]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-2,.pure-u-1-3,.pure-u-2-3,.pure-u-1-4,.pure-u-3-4,.pure-u-1-5,.pure-u-2-5,.pure-u-3-5,.pure-u-4-5,.pure-u-5-5,.pure-u-1-6,.pure-u-5-6,.pure-u-1-8,.pure-u-3-8,.pure-u-5-8,.pure-u-7-8,.pure-u-1-12,.pure-u-5-12,.pure-u-7-12,.pure-u-11-12,.pure-u-1-24,.pure-u-2-24,.pure-u-3-24,.pure-u-4-24,.pure-u-5-24,.pure-u-6-24,.pure-u-7-24,.pure-u-8-24,.pure-u-9-24,.pure-u-10-24,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%;*width:4.1357%}.pure-u-1-12,.pure-u-2-24{width:8.3333%;*width:8.3023%}.pure-u-1-8,.pure-u-3-24{width:12.5%;*width:12.469%}.pure-u-1-6,.pure-u-4-24{width:16.6667%;*width:16.6357%}.pure-u-1-5{width:20%;*width:19.969%}.pure-u-5-24{width:20.8333%;*width:20.8023%}.pure-u-1-4,.pure-u-6-24{width:25%;*width:24.969%}.pure-u-7-24{width:29.1667%;*width:29.1357%}.pure-u-1-3,.pure-u-8-24{width:33.3333%;*width:33.3023%}.pure-u-3-8,.pure-u-9-24{width:37.5%;*width:37.469%}.pure-u-2-5{width:40%;*width:39.969%}.pure-u-5-12,.pure-u-10-24{width:41.6667%;*width:41.6357%}.pure-u-11-24{width:45.8333%;*width:45.8023%}.pure-u-1-2,.pure-u-12-24{width:50%;*width:49.969%}.pure-u-13-24{width:54.1667%;*width:54.1357%}.pure-u-7-12,.pure-u-14-24{width:58.3333%;*width:58.3023%}.pure-u-3-5{width:60%;*width:59.969%}.pure-u-5-8,.pure-u-15-24{width:62.5%;*width:62.469%}.pure-u-2-3,.pure-u-16-24{width:66.6667%;*width:66.6357%}.pure-u-17-24{width:70.8333%;*width:70.8023%}.pure-u-3-4,.pure-u-18-24{width:75%;*width:74.969%}.pure-u-19-24{width:79.1667%;*width:79.1357%}.pure-u-4-5{width:80%;*width:79.969%}.pure-u-5-6,.pure-u-20-24{width:83.3333%;*width:83.3023%}.pure-u-7-8,.pure-u-21-24{width:87.5%;*width:87.469%}.pure-u-11-12,.pure-u-22-24{width:91.6667%;*width:91.6357%}.pure-u-23-24{width:95.8333%;*width:95.8023%}.pure-u-1,.pure-u-1-1,.pure-u-5-5,.pure-u-24-24{width:100%}.pure-button{display:inline-block;zoom:1;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:#444;color:rgba(0,0,0,.8);border:1px solid #999;border:0 rgba(0,0,0,0);background-color:#E6E6E6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:hover,.pure-button:focus{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000', GradientType=0);background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:-webkit-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:-moz-linear-gradient(top,rgba(0,0,0,.05) 0,rgba(0,0,0,.1));background-image:-o-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000\9}.pure-button[disabled],.pure-button-disabled,.pure-button-disabled:hover,.pure-button-disabled:focus,.pure-button-disabled:active{border:0;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:alpha(opacity=40);-khtml-opacity:.4;-moz-opacity:.4;opacity:.4;cursor:not-allowed;box-shadow:none}.pure-button-hidden{display:none}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=text]:focus,.pure-form input[type=password]:focus,.pure-form input[type=email]:focus,.pure-form input[type=url]:focus,.pure-form input[type=date]:focus,.pure-form input[type=month]:focus,.pure-form input[type=time]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=week]:focus,.pure-form input[type=number]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=color]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129FEA}.pure-form input:not([type]):focus{outline:0;border-color:#129FEA}.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus,.pure-form input[type=checkbox]:focus{outline:thin solid #129FEA;outline:1px auto #129FEA}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=text][disabled],.pure-form input[type=password][disabled],.pure-form input[type=email][disabled],.pure-form input[type=url][disabled],.pure-form input[type=date][disabled],.pure-form input[type=month][disabled],.pure-form input[type=time][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=week][disabled],.pure-form input[type=number][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=color][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form textarea:focus:invalid,.pure-form select:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus,.pure-form input[type=checkbox]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=text],.pure-form-stacked input[type=password],.pure-form-stacked input[type=email],.pure-form-stacked input[type=url],.pure-form-stacked input[type=date],.pure-form-stacked input[type=month],.pure-form-stacked input[type=time],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=week],.pure-form-stacked input[type=number],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=color],.pure-form-stacked input[type=file],.pure-form-stacked select,.pure-form-stacked label,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned textarea,.pure-form-aligned select,.pure-form-aligned .pure-help-inline,.pure-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form input.pure-input-rounded,.pure-form .pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form .pure-help-inline,.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=text],.pure-group input[type=password],.pure-group input[type=email],.pure-group input[type=url],.pure-group input[type=date],.pure-group input[type=month],.pure-group input[type=time],.pure-group input[type=datetime],.pure-group input[type=datetime-local],.pure-group input[type=week],.pure-group input[type=number],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=color]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0}.pure-form .pure-help-inline,.pure-form-message-inline,.pure-form-message{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-list,.pure-menu-item{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-link,.pure-menu-heading{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-separator{display:inline-block;*display:inline;zoom:1;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-allow-hover:hover>.pure-menu-children,.pure-menu-active>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;padding:.5em 0}.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar{display:none}.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-link,.pure-menu-disabled,.pure-menu-heading{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:hover,.pure-menu-link:focus{background-color:#eee}.pure-menu-selected .pure-menu-link,.pure-menu-selected .pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table td:first-child,.pure-table th:first-child{border-left-width:0}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} diff --git a/obrand/obrand-admin-server/O-BrandServer/server/index.js b/obrand/obrand-admin-server/O-BrandServer/server/index.js new file mode 100644 index 0000000..d4cc39f --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/index.js @@ -0,0 +1,25 @@ +/*jshint node:true*/ + +// To use it create some files under `mocks/` +// e.g. `server/mocks/ember-hamsters.js` +// +// module.exports = function(app) { +// app.get('/ember-hamsters', function(req, res) { +// res.send('hello'); +// }); +// }; + +module.exports = function(app) { + var globSync = require('glob').sync; + var mocks = globSync('./mocks/**/*.js', { cwd: __dirname }).map(require); + var proxies = globSync('./proxies/**/*.js', { cwd: __dirname }).map(require); + + + // Log proxy requests + var morgan = require('morgan'); + app.use(morgan('dev')); + + mocks.forEach(function(route) { route(app); }); + proxies.forEach(function(route) { route(app); }); + +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/units/db-accounts.js b/obrand/obrand-admin-server/O-BrandServer/server/units/db-accounts.js new file mode 100644 index 0000000..8dc351e --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/units/db-accounts.js @@ -0,0 +1,202 @@ +'use strict'; + +var mdValidator = require('node-validator'); +var mdErrors = require('./md-errors'); +var bcrypt = require('bcrypt-as-promised'); +var newId = require('uuid-pure').newId; + +module.exports = function(db) { + var module = {}; + + module.connectPGP = function() { + return new Promise(function(resolve, reject) { + db.query('select $1::int as number', [1]) + .then((data)=> { + resolve(data); + }) + .catch((error)=> { + reject(error); + }); + }); + }; + module.sqlInsertAccount = function(data) { + let _data = data; + _data.uid = newId(); + return new Promise(function(resolve, reject) { + db.func('insert_user', + [_data.username, _data.email, _data.hash, _data.uid]) + .then(()=> { + return resolve('ok'); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + module.sqlGetAccount = function(email) { + return new Promise(function(resolve, reject) { + db.oneOrNone('select * from logins where email=$1;', [email]) + .then(function(d) { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + module.sqlGetAccountDetails = function(uid) { + return new Promise(function(resolve, reject) { + db.one('select * from getAccountDetails($1);',[uid]) + .then(function(d) { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + module.sqlUpsertProfile = function(data) { + var propArray = [ + data.uid, + data.forename, + data.surname, + data.gender, + data.dob, + data.bio + ]; + + return new Promise(function(resolve, reject) { + db.func('upsert_profile', propArray) + .then(()=> { + return resolve(true); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + module.sqlMakeMemberOf = function(cid, uid) { + var propArray = [cid,uid]; + + return new Promise(function(resolve, reject) { + db.func('makeMemberOf', propArray) + .then(()=> { + return resolve(true); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + module.sqlGetProfile = function(uid) { + return new Promise(function(resolve, reject) { + db.oneOrNone('select * from profile where uid=$1;', [uid]) + .then(function(d) { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + module.addNewAccount = function(data) { + var self = this; + return new Promise((resolve, reject) => { + + let _data = {}; + _data.username = data.username.trim(); + _data.password = data.password.trim(); + _data.email = data.email.trim(); + + if (Object.keys(data).length === 3) { + + if (_data.username.length === 0 || _data.password.length === 0 || _data.email.length === 0) { + return reject(mdErrors.error(1000)); + } + + if (mdValidator.Email(data.email) === false) { + return reject(mdErrors.error(1001)); + } else { + // It should be possible to insert the user now. + bcrypt.hash(data.password,10).then((d) => { + _data.hash = d; + self.sqlInsertAccount(_data) + .then(()=> { + return resolve({reply: 'user added'}); + }) + .catch((err)=> { + return reject(err); + }); + }); + + } + } else { + // Error - required details missing + return reject(mdErrors.error(1002)); + + } + }); + }; + module.findAccount = function(data) { + + var _data = data; + return new Promise((resolve, reject) => { + this.sqlGetAccount(_data.email) + .then((row) => { + if (row === null) { + return reject(mdErrors.error(1004)); + } + // Check password against hash held in db + // noinspection JSUnresolvedVariable + bcrypt.compare(_data.password, row.password_hash) + .then(function() { + let loginDetails = { + id: row.id, + username: row.username, + email: row.email, + uid: row.uid + }; + return resolve(loginDetails); + }) + // Failure, reject + .catch(function() { + return reject(mdErrors.error(1004)); + }); + + }) + .catch(function(err) { + return reject(err); + }); + }); + }; + module.addInsertProfile = function(data) { + return new Promise((resolve, reject) => { + this.sqlUpsertProfile(data) + .then((d)=> { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + //MakeMemberOf(cid, uid) + module.makeMemberOf = function(cid, uid) { + return new Promise((resolve, reject) => { + this.sqlMakeMemberOf(cid, uid) + .then((d)=> { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + return module; +}; + diff --git a/obrand/obrand-admin-server/O-BrandServer/server/units/db-company.js b/obrand/obrand-admin-server/O-BrandServer/server/units/db-company.js new file mode 100644 index 0000000..b8c3baf --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/units/db-company.js @@ -0,0 +1,115 @@ +/** + * + * User: Martin Donnelly + * Date: 2016-03-15 + * Time: 14:04 + * + */ +'use strict'; +var $V = require('node-validator'); +var mdErrors = require('./md-errors'); +var newId = require('uuid-pure').newId; +var $U = require('md-utils'); + +module.exports = function(db) { + var module = {}; + + module.sqlInsertCompany = function(data) { + return new Promise(function(resolve, reject) { + db.proc('upsert_company',data) + .then(()=> { + console.log('+sqlInsertCompany OK'); + return resolve('ok'); + }) + .catch((err)=> { + console.log('+sqlInsertCompany failed'); + console.log(err); + return reject(err); + }); + }); + }; + module.sqlGetSimpleCompany = function(id) { + return new Promise(function(resolve, reject) { + //db.oneOrNone('select *, company_name company-name from company where cid=$1;', [id]) + + db.oneOrNone('select company.* from company where cid=$1;', [id]) + + .then(function(d) { + console.log(d); + return resolve(d); + }) + .catch((err)=> { + console.log(err); + return reject(err); + }); + }); + }; + + module.addNewCompany = function(data) { + return new Promise((resolve, reject) => { + let _data; + _data = $U.cloneTrim(data); + + _data = $U.sanitiseObj(_data, + {company_name: true, address1: true, address2: true, address3: true, + town: false, county: false, pcontact: true, ocontact: true,mobile: true}); + + if (_data.hasOwnProperty('company_name') && (_data.company_name.length === 0)) { + return reject(mdErrors.error(1100)); + } + + if ([ + _data.address1, _data.address2, _data.address3 + ].join('').trim().length === 0) { + return reject(mdErrors.error(1101)); + } + + if ([_data.town, _data.county].join('').trim().length === 0) { + return reject(mdErrors.error(1102)); + } + + var pcv = $V.checkPostCode(_data.postcode); + + if (pcv === '') { + return reject(mdErrors.error(1103)); + } else { + _data.postcode = pcv; + } + + _data.pcontact = $V.validatePhone(_data.pcontact); + _data.ocontact = $V.validatePhone(_data.ocontact); + _data.mobile = $V.validatePhone(_data.mobile); + + if ([ + _data.pcontact, _data.ocontact, _data.mobile + ].join('').trim().length === 0) { + return reject(mdErrors.error(1104)); + } + + if (_data.email.length === 0 || !$V.Email(_data.email)) { + return reject(mdErrors.error(1105)); + } + + if (typeof _data.cid === 'undefined' || _data.cid === null) { + _data.cid = newId(); + } + + const sqlData = [_data.cid, _data.company_name, _data.address1, _data.address2, + _data.address3, _data.town, _data.county, _data.postcode, _data.country, _data.pcontact, + _data.ocontact, _data.mobile, _data.email]; + + this.sqlInsertCompany(sqlData) + .then(function(d) { + console.log('Inserted'); + console.log(d); + return resolve({cid: _data.cid}); + }) + .catch(function(err) { + console.log('Failed to insert'); + return reject(err); + }); + }); + }; + + return module; +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/units/db-connector.js b/obrand/obrand-admin-server/O-BrandServer/server/units/db-connector.js new file mode 100644 index 0000000..3afd4f5 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/units/db-connector.js @@ -0,0 +1,21 @@ +'uses strict'; +/** + * + * User: Martin Donnelly + * Date: 2016-03-11 + * Time: 10:22 + * + */ + +var pgp = require('pg-promise')(); + +var cn = { + host: 'localhost', + port: 5432, + database: 'oBrand', + user: 'obrand', + password: 'obrand' +}; + +exports.dbConnection = pgp(cn); + diff --git a/obrand/obrand-admin-server/O-BrandServer/server/units/db-pages.js b/obrand/obrand-admin-server/O-BrandServer/server/units/db-pages.js new file mode 100644 index 0000000..a3c55a1 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/units/db-pages.js @@ -0,0 +1,175 @@ +'use strict'; + +var mdErrors = require('./md-errors'); +var newId = require('uuid-pure').newId; +var $U = require('md-utils'); +/** + * + * User: Martin Donnelly + * Date: 2016-03-24 + * Time: 11:10 + * + */ + + +module.exports = function(db) { + + var module = {}; + + module.deletePage = function(id) { + return new Promise(function(resolve, reject) { + + db.oneOrNone( + 'delete from pages where id=${id}',{id:id}) + .then((d) => { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + + }; + + + module.getLatestAddedPage = function() { + return new Promise(function(resolve, reject) { + + db.oneOrNone( + "select 'export/' || pages.pid::text || '.html' as fullpath from pages order by id desc limit 1;") + .then((d) => { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + + }; + + module.getPageList = function() { + return new Promise(function(resolve, reject) { + + db.any( + "select pages.cid, pages.pid, pages.title, company.company_name, '/export/' || pages.pid::text || '.html' as fullpath from pages join company on company.cid = pages.cid;") + .then((d) => { + return resolve(d); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + module.getPage = function(pid) { + return new Promise(function(resolve, reject) { + + db.oneOrNone( + 'select * from pages where pid=${pid}',{pid:pid}) + .then((d) => { + let attributeObj = $U.newObjectFrom(d, + ['id', 'cid', 'vid', 'pid', 'content', 'title']); + attributeObj = $U.populateObject(d.data, attributeObj); + + let newObj = { + "id": attributeObj.id, + "type": "page", + "attributes": attributeObj + }; + + return resolve(newObj); + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + module.getFullPageList = function() { + return new Promise(function(resolve, reject) { + + db.any("select * from pages;") + .then((d) => { + let rArray = []; + for (var l = 0; l < d.length; l++) { + let attributeObj = $U.newObjectFrom(d[l], + ['id', 'cid', 'vid', 'pid', 'content', 'title']); + attributeObj = $U.populateObject(d[l].data, attributeObj); + + let newObj = { + "id": attributeObj.id, + "type": "page", + "attributes": attributeObj + }; + rArray.push(newObj); + } + return resolve(rArray); + + }) + .catch((err)=> { + return reject(err); + }); + }); + }; + + module.sqlInsertPage = function(data) { + return new Promise(function(resolve, reject) { + db.func('upsert_page', data) + .then(()=> { + return resolve('ok'); + }) + .catch((err)=> { + return reject(err); + }); + }); + + }; + + module.addNewPage = function(data) { + return new Promise((resolve, reject) => { + let _data, _jsonData; + + _data = $U.cloneTrim(data.attributes); + + if (typeof _data.pid === 'undefined' || _data.pid === null) { + _data.pid = newId(); + } + + _jsonData = $U.newObjectFrom(_data, + [ + 'title', + 'image-url', + 'link1-text', + 'link1-url', + 'link2-text', + 'link2-url', + 'link3-text', + 'link3-url', + 'link4-text', + 'link4-url' + ]); + + const sqlData = [ + _data.cid, + _data.vid, + _data.pid, + _data.content, + _data.title, + JSON.stringify(_jsonData) + ]; + + this.sqlInsertPage(sqlData) + .then(function() { + data.attributes = _data; + return resolve(data); + }) + .catch(function(err) { + return reject(err); + }); + + }); + }; + + return module; + +}; diff --git a/obrand/obrand-admin-server/O-BrandServer/server/units/md-errors.js b/obrand/obrand-admin-server/O-BrandServer/server/units/md-errors.js new file mode 100644 index 0000000..b0efbc6 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/server/units/md-errors.js @@ -0,0 +1,37 @@ +/** + * + * User: Martin Donnelly + * Date: 2016-03-10 + * Time: 11:31 + * + */ +var logger = require('log4js').getLogger(); + +var MDERRORS = new function() { + 'use strict'; + + var errors = { + 1000: {name: 'Account error', title: 'Signup data missing'}, + 1001: {name: 'Account error', title: 'Email address is not in the correct format'}, + 1002: {name: 'Account error', title: 'Required details missing'}, + 1003: {name: 'Account error', title: 'Email does not exist in login table'}, + 1004: {name: 'Account error', title: 'Email address or password are incorrect'}, + 1100: {name: 'Company Error', title: 'Company name is missing'}, + 1101: {name: 'Company Error', title: 'Address details are missing'}, + 1102: {name: 'Company Error', title: 'Town/County details are missing'}, + 1103: {name: 'Company Error', title: 'Postcode is missing / incorrect'}, + 1104: {name: 'Company Error', title: 'Contact phone number is missing'}, + 1105: {name: 'Company Error', title: 'Email is missing / invalid'} + + }; + + this.error = function(code) { + var estring = errors[code].name + ': ' + errors[code].title + '\nCode: ' + code + '\n'; + + logger.error(estring); + + return ({code: code, name: errors[code].name, title: errors[code].title, string: estring}); + }; +}(); + +module.exports = MDERRORS; diff --git a/obrand/obrand-admin-server/O-BrandServer/views/pages.jade b/obrand/obrand-admin-server/O-BrandServer/views/pages.jade new file mode 100644 index 0000000..9a7f037 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/views/pages.jade @@ -0,0 +1,25 @@ +doctype html +html(lang="en") + head + meta(name='viewport', content='width=device-width, initial-scale=1.0') + link(rel='stylesheet', href='/css/mui.min.css') + + title Generated Page List + + body + .mui-container + .mui-panel + .mui--text-headline.mui-text-accent Generated Page List + + #list.mui-panel + table.mui-table.mui-table--bordered + thead + tr + th Company + th Page Title + + each item in data + tr + td= item.company_name + td + a.mui-btn.mui-btn--flat.mui-btn--primary(href=item.fullpath, target='_blank')=item.title diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/crossdomain.xml b/obrand/obrand-admin-server/O-BrandServer/wwwroot/crossdomain.xml new file mode 100644 index 0000000..0c16a7a --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/wwwroot/crossdomain.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/css.css b/obrand/obrand-admin-server/O-BrandServer/wwwroot/css.css new file mode 100644 index 0000000..e2b7dd2 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/wwwroot/css.css @@ -0,0 +1,11 @@ +#page { + margin-top: 80px; +} + +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(fonts/glyphicons-halflings-regular.eot);src:url(fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(fonts/glyphicons-halflings-regular.woff) format('woff'),url(fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.eot b/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.eot new file mode 100755 index 0000000000000000000000000000000000000000..4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed GIT binary patch literal 20335 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

!oRptb@n+ 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 literal 0 HcmV?d00001 diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.svg b/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.svg new file mode 100755 index 0000000..e3e2dc7 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.ttf b/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..67fa00bf83801d2fa568546b982c80d27f6ef74e GIT binary patch literal 41280 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

PBK;&Wcg|NX{>QR@W3{K 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 literal 0 HcmV?d00001 diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.woff b/obrand/obrand-admin-server/O-BrandServer/wwwroot/fonts/glyphicons-halflings-regular.woff new file mode 100755 index 0000000000000000000000000000000000000000..8c54182aa5d4d1ab3c9171976b615c1dcb1dc187 GIT binary patch literal 23320 zcmY&6mA1(8T6a0V( z7zzkXUYUXEN9+9I!ap!DFOd#1wlTB=0s{G=z_>rwLFyJd-Ppy62nY!Dzg$rNAC#b> zW_IQ_KN{(eU)_(Nsd6JjiMgTUPb}E#|M~#|A(>mdoBe3JKtOVEKtTU^2nd*oEldqf zfPj=PfBaZ}zy@NZ@n!KN0s$!#{qXEt`TP45!w50c8!{TL10RAG)dniu*zrR^LTrn}O+tRb0xd~0E&>H($0brSGJ*iX z8bUAslphEzmTHiWB72`anLv4VuEY~_ za}WVZu^zT;R-~y&T~BYSiJ>00^O~gpl9q$zHI%Y>Lhsr-MaOrb%y%q|(42pX<4bce z&%S(EIYGx}q8~@4pX*EKdS?h=SI&tEv`GGM8)AScL0;U}brn10v;~p2;1NOn2Um$W z*U=i%VuwBRz@Z11qKr(qgO8vr*&X5{?12dd{6*l`Yp`?k3MDcih%qI+g!qV2n61L{ zS-80y9H-NmrN`sSUC*p$lut-w`?nyb*goYXni_zf3okCBA{zrCwXDq^$DQB5U?DQ* z61o2X9r4;yA!5sN`)f6pe9e8pguH(cK5%0-vMf9zrWWth^A{_9wXmH0nW$}wo9hf@Mt&V*5m2_W0Zac{Bwl*3N0W}7D6V5mO|AbT zMePe7b5d1qntWOB)2(kfH3+1h@`qdCj$7%?Ws`6C=E;z?vBmFy(ZuU>?ZKAjdKnE_$3iyZHlp%_ z77-FteGS2x>7s==RC=EgNc20pi}B5ZYP?<*;Yn$7M)<7;<>9ljc|Q@}q1HAXA>?XX z{-<=FYU*8Yx_bmPn*eq|(6}#S=KV{`|BZ*Xn#BSEOxT0n<2%3UJglMVh`FJxT)N*_o6m(8iH0h%=F{CzZaZ8j3d^x{KT0bRC__^79ko z=tr+cA_{hBgbop+gr}pTjdh4lR9OGJYID{f-h7TdFVsTYrJ)sVL)@`Nes|mRJSCBQ z1vY;D{cTS=MKu(Wy%|e~Iy~QIi?KJEB~oXKHbERbMSWb} zZ$4oLo6Q7!JY7E&nSn99sadal3PMV~{548>MpAHY2H1T`ZcmF;%7p*Gd@)Z2X$V%V z$1bYU`a7{N-&8b(7EKxaD_#{2yNI&{t3rygLIQh8i%wdtQ^A4QWPw@AUkIZjStyRy zt6gfVP}$xz$w}4TO!~910gWc?ujr|I`%rxo*~ZRJj0)|c2kf0tbH}jLi*?h7#a}r#3UcIh%=Rq+9Oy<}9gOY2vy$@K}ixTio-4X=M1@9qI z^=K!qz=h?boc7!Dn&OoiZq*aBh4h7*kXhO z>pcXk->0DSLp`H8gAy`9imj3RrTwYMLn%~ax2R;y6z$S#bv?dXh$n!f{I%|F6CUzH zNglJr&iX(OdhO|M-zijiorLRikL!4b&v<-I;cb2U*9AhJqg6Km0|C@3UPi3VuIeHB zEvJkk^d768V;-U<9n39OEzwHebV z^!;=ohVM{+SKmNmc(fHuOajOg)eZg4gP9Z?_0r_5C&wd<_hxoo_+<48kwZJ{Y3kdj z-euRxbNtS4ORoUDw~*0{d?YbybVf*Z&j3f0Df|p6wtg}#){z60vHIVDYyvXYiqtw5fLstI@;wPh+Bd5ldW?|#AJXDCfR%eUYew_;&(+g6-=ThC?S3>8w7??8cY@rx zXANRWBOACbA6cC_l4+aF!&NSKMmjmK4PZoF7UG%C5 zf)X%cLC&;>^$NdUhi>}OaeOh-03Qt>c;rBMl8FXlh6u#+T;)aNQAM7iYm9MwQAwQ$ zauN?iXC->xfF|9A>Yn3rfOkVpm+8&z?LmtUcZTECdVP6@K8N`=NVn%wvgYT?wv(~@ zRQi1syDn_w+iAw6*B2j_C#*4Oa=3>>HsxLFzfc-lqHiBWPsG=v_Rqfna_4v6=XxDj zbWvX=bCj4jf>-mGLa)^qT)yEMN*AOa6}Y=z5r^W#5+eB*=NMYFLlxp|l;Umkrykmm z>1Pb@=d7ZMXh-p<@vNTD{%C%$y%YYN-VTD)5%>5QvQPlpLYJRSmulc?J zubo~#6g|MIS#tM^y?0~C`jU2#a#T$VEGW;6HZHFWLEd6C6gfhTw6Hw56Q8*V+~VWN z4AL!NdF6?QxaUpsR*ZThZ22BrG(+5-Ud8j`|8n^?HPZ7*MH$Y-GdTEy_<}Ip%UH`% zC_ybkuvZT`(*5-7zTSgt1y-AX_=4Vq{_y1PK|t=n8Jsz8N`x^1R#L(Hf(SZ(R}et= z20=K0`i!{GTB{~I3$HZ!fZ7PE0K3mgrlOj^=HLjmlzB{Q!INjU2`4JhvkVArhWI3g z2BFDRMNusx)0QK>n-{_BPLkO*tH?}~b^*t2 zL|B8@3a#it1GzFLG>-jntCpno1TF0OMs-3&ICPgAm$awK{?_0%(W?W=|3Ym<2B399 z6?sOv=odFeFq-4ZH~dK}*A#W0I_F%hOcy3B(B=(oS9N?rZK6R)u8SFgYl67%j$Vzn zT2com)G;k5ej>5&f(ldAjf;DQ6!5hOSn{C{3@HGgJfyHHbCwb;JWINl)t_@@KmMH+bk8Q`tU&fRBnQ(#)4NSadxDOZI(w zdDV`IZHTev{l3e|YJOjG)!*{Qd3Bbc-oK>W2LbR{;`&r7v=uuYN}Q!j?bR6qQf6%Z zD|U^HaP=Duw&<9^4wcHPM`Vo0d8#?cwduvt)W!CY2}SzBBsBVDmS^qNq)C$4z-w!v zu|}GDNU(nCqGP?m2nGh>so7Y#2jSAF;UD3l zTWTJlAQB4XoWDz=q%Vn+jEY#AwT@9A52;uB*W>Xje?f=`^s2DJ+s}6b zZHctO--vJs(vA6u2D!C~MMV%ZF_OWKERqY*L7bn~pu>emnX~};w>xKsx+HmlModD* zRe7jxvS`Tr6uHz_O`!|yld+VyK0FQd$icoJ&6I5J_C@tYl{!GM>wg8ezB^sMFG{SP z+~tO=8DM|68>>8kL{vLa+9stZVE2&^q(j&WrimlxADG12>h3l$)MnnoG~F+Q9%u&_RYNWV-S zu8Zij1T3udO7yF++y7qK8?@Qy;j&>d29gBr(=CZ4lKGZq^?3#ajS1CkdX7~BF>3+> zYZVG#qpmz`T?l5}q@jYe4}&tAuC*{c-?JynbwY*R0wc+;hotR!1CBsHEV}H{pEV_Q zQbs{v@#pEsI<-g|xh#rQJeXH}di`N|kNqjL$UE~3So5Z0bsl-UTxtBvq=J|gu+RPErd8o zq%Cu)1CPBz7A=EEzAUR|YC=IU9%hvt-M5s$vP}yYbrS8_xEfnDFCI~k&{z?w$lx zkHl$$>l6w9E<=%h&m}p0DcU+fGPM`d($iGo+S3fJhaypcIE2yU{5H<0HCgoFK{GLe zCVD+P9e_etX_H9_t6xc?c?>7@pb;TOf6%r&2oND`VL682Y@H zo9cs|v@$?BZbm;;TeI&1a|hDjryghe`LAHHYtRh=V`G;8&hH=u_R(Y1pv%n=LH^3^ zFkvIs>V~3aP^2c9bjt$HI!&KIsHF;<6GGV<&cs3&h&!7&F_0TJrW*V^F`?h4z4b9P z)shrVOIq;gnBtPE8xy|c?B+5Qhe9v=A{q0$_8i?gn>U-#3cMhdDV#r)gg$jBSHuwk zk}gryawT5)H|i8gP1CW0tGr3sKVvSH=C;mKYmExi&<#lKQbxbVfh72pcQ7oRvXB%= zj1OXzBoz0nqSwe)?dUE|N0dA`Jm0((=&k$p`L1c)=>Mo*a}LJx~+>;2tcjSh+G1pg5Y6PO}pj8+;DLXc4La-kzxi{dPSiJ7 z8JC>pyci_t`xsI3_*zD$W!*$<4tXVP|Lyd;LAI{(?h2Cw%dD@_;lH-jHe9S+i*4E z4mm+=yxP3;fjmRcM+tj5WK$Q-9_(!w&4?Zu{~+v=o|o`vvKeY_m&uw>iUOhrn)3ws&_6vxHpM+hCYx}osCc0Y-Tyq0z_HH?lw9s=QM+-Q{gQx~FocK9j!8!mtbNX&zBR0Xt$l zvErya$XNJ@m2B@ie45(Z(19?S0|j@Eej=zw0gE??YVlwp4LSl7VHUHoo|LraFf00W znbw<}e@IUzes(fu}n<{VdSNo|T`)7axnJ2E3 zGN-K>ywjN_qvqSYS+3(Tift}Ac+Th~V)w~#F13j;D~$iUE^?zyrm7R;K!FVAfwf4+ zgEe5#q65&2_@2P9Xi0@IzKKB$Mr=t77zjDw^ry*`L~i%3hjv^6l}?gMTjnmHPNyRD!RE? zVzeC>gkFuW>V5P|ms&5GT4O@NM-mhCx+a!f0)LQsDAs{!i(cE9Ov8j9Ot~S$SX^Tu zbvv@~cen9fE3YI>r2~|YyQVnWpZ-X~m^M6OE$L`m&MG`G=33X8DprYlBgvrAjN>#) zf7F5}TO}Od#i%Pvr08HxB1L|F7Lms;vt;^z`LYoE^HAlcM$*80N!_Nc@Z0C)>z37! zB*8pC&7s#0b$L(fb6zzb_{hxyz+_iYonkQLn|M^r48oOlXXt>e7{zFo03wLhcxL@> zruxmZD;ZM5U?3RR7ni`br#{#)H87#K@FBbE7!;=-Y}c+8!h3d5JExlz2JatQJ+?rH zEiUGqC0jaoW>(Evnh`H^?>C|E?;wdM>7y!8D4dVkC<+|T0zP?LNZT4#$T22k5m50< zzoALNpZ84Yo=WEiK^k;g##y>nq*73%RqJFJOX%P{Sin)USV69lwgt`-QDJjC{IgNf zBW4`*siNB=F5h|FpHc}mY9&H}jGvvlX!|~~dIc_J`?;(WsSic(jU>39iqS|Q7u!DA zY&kA%G@cdsQv^FWgQ+Nx#A;({7tI>&nigS1N0T`xz+mg6@_{zT%;E%P(``j&bsETN zs(q(bWF8KI1M_eY6S%3}4I-pbgJgDL2EYIzPp(Kd(4_CqWI0N zt8t_kb+H2&h#4kT$#q>Ac%Z2bj@0N+O;y@sWv$8hU9Zv@p#uT7sP~{kG6820-K~jc zzx+zAW+=CEi%kufkYzrAXi1hFg5D^8VfWJSQx~1y>x~0bBV$33&FY`a087m+i@@r# zv~L(PphOgimWm81wL^lXk96(eK$#U=hQ}pu<-Srb@X)RzEK4@vVL9cwNBv&D7`P0@ zqV@&7+T19`yV}oc>o1R%dLPHOtgykfkQ$mBKeZU*==5=O;{`t7RV`&nOFus5HWa@{ zXbhx+TZxRv=(Ko|DZe>7Tjhggvxn2ed0umrYSl8cq1^h1GLxv~Ovi$ld?|yHWQbL0 z!Ivh5s&TPz0K^%VfE05%mJqQKs?A%Hu%Xt@^>Aoa$L6|fp<>G;+%>slePPEnR_yRL zj;yc0lCyoP$Ic|g#bX(o<$00nsg*!S33aGHMx(FL1IZKmm2(3;)8v{BEh zq+0};_3dYnO)g&8rn2p~Esgh&5iy4}Tc`s#l(NQVP*B`-s(Tsgb%=E*x!`vNJk-`k z+fm(7Qcae_0=zlj<0~2F)s}a7tknTT`cdo_)g;9@CX6}Sx(tZ-vBXh9eV`-C^l3uT_&kk_ zy!QGr?i9qmGaJ`03`VTK^)eYd43pD#6!NwJr0B=zjQz5pDVIxqPspfGxc527cKuN} zM+02tzw?((Ojfsh0mh)!EsE8yz$@B*zv5LC{@~DSWie_CKtd_%3$Mw8a()p(IDD|g zE`aGjSXm`BggX|S0Iz8=DQwWq7Y>nH=l2gF6&gHY9=4{U@)*&>a5Lg$i6r`O!H}dD zW;VLr?c@ISTZz-X^w-r)NsJz*7Ik*4Ly0i!Bq{Zd;rF?m8fkO1OM@>WW%j&Gv#v`$ zQmZ$kLeIBScr38Jb@l%c_PQ|;xB~H7qh?jaoofQxl!Mou$divTfpW_5t{jt5n6rPK z!vRqg8v?Nc`M^e6lM(@2!!NA&BnKun1vVjc1z9YJv06oEUF=G;UtEZ%aSas1z8-O2 z9BC#xzszD?1bF!myHOXw5=A=9o9-@Lhm!h0YZ-|@A8@Y(+_Z-DK5aN{$p1>cump2t zD5Y<$oDGvcGH&@I&=`_@&z9%lM_#_W8iyXJa<&`Ydn;~#brX*PwN-j%3hf05d z4E%>Bj9t_c-iGDTJ%p5oMe%gVzvc6bd`PTb9cQF~$q=bA787VjPi04Chi`i>W<+{G zV&FRA7KPur^W&w!IseMOaI{i>RU}bnWQwl$BQA-{N7}-t4=-KVk!vbXQ}zLtKK~Vb zh}Ni+HS~8TjiAhC5SP%}5)++t1N`_`^O*%;^P^`Rj#KY=G1%z*MAySF&MiUH~wJ&BDU^kXcQH6%9!xbzqRA z*C;FT!ttCmLLmGAVU95En90d_(qX5~%fa`pstx}K4cq`D|L4WUM|^?pXIDSM7j{_` z3G3~Fb+5YFcta__mAzP+vqYM1(W%@8)d!*dz-)tf@tMWp!rn*|T0x9DwQmg`{~HF^ z(&{06L_~x$VO)QgY!}xSiz9L|mX(gredtzS?t3cy_RjmTIU(u5dB$Pw+b^CLxKo!Kal-ql57+p#JJ3zg*_!Lh#CTQlhLZaSdUpir$y9?7cH^D{5SFz4E4#R}~cZf9Y7m zo;9Cm&MV)C>%p+!bv-*M+$WJVT;|RqRPchoQ_7BbK-|yWM-<~FecpFY< z*+V%yqBEN@TuW|VvPKxu;wzn6PE#vLx(^m2Npl0_=R`(f{eE#>@hhO=C}MNbxWW_v z>i*?56p5poIt)%$`T(F>Fbvwm_u72fIj{*&-QjYl(EG&}&x2XCp-|gm&6LNw(*^~r z(;e^7)q{$HCsydP(lnZ{CMFoZw`Di*O0teoyeuOUSTp1qVs*`Z9<21;EeAe2nsvN~ zRC6*s$3cgHx807}TdF!K-J0iGN^SO{w>QZ;&Y$k3Kg?6j$YHFGxQg*a{%}-aq4xqy z&jBywOH07(H!X%N)*9k*pouLg-u)|*fP*&bSExgq7b56vts%pZKc$!0Wz)kTr{n^c zH0~1dFP!u<3h8{HY$Lt50id%$jqN@8k8{VALlSz2UVh`a-#R#>zHXSNNR|{7e9pN> z7TX5KSq#wFmVO-1xo)>HN)vR#Rlnv;&}%R75X^KT9xE{?m|>iz_BH-9O;l0+ZPl<= zgateSH#Dy&8cL!Z-sT5hq(D<^FoqY@mUzl=C-x$j>?y7nvAexvXwZ#MsHgqBZp zatbN4V_H3K-L2vU@+EGATIm6Ap`GU7lnAV|6g`8C(61y*zDel%2}VNAy1~`blPHN= zu~bPszDZI*Nw!P&qvtzvpA@&tGdJu;DIn1jLdX; z)t`xZwPI`TdB?s+nt}J71mU}hawwEbPnX$OL8-5nO5zHu%kT?MIW=*XjkB-H;p1>i zcVuPz(G&BP?D09Rzm-PH5sJ;n5|jQEen*(AWy!9%8%FrobT2yz?d&1r2KSS&4>U<6 zI`!cdm9dC1Hqn|R>+xX&B?|~3hd5zh)13!mfVsLczdYF0Z^iL|oZ=M%0c8`h0j{;h z%1hkP*~06j7+rI@eA;#HV5_3yPVSKp^*V2eP_Sfgqg3u-*%?R0LP3RyTYh<}z$74T zm;u}KQ$iP(LarIp;*m~l_iNZU>-f~@+~!>SGMv8xF)qs2Y$b}ymmJp+*51+kk=cjL zmrRQpnwbhoGj^9~t(5N((?x;Acs$~9zAnWpC^CsfbL2PPH_JB*;3Rr>5>gypdKu}@ z_u^!zU-oM)A~Rv>w@^Qe=A>t8Iv^I5(_hL|C*0994Dztje1-tP3-Ei}#z%jPDdt{8 zyj~NQD-NaTJp#iw;$eW^b71W?UD@s5BzgyHwZ@1vXRIB(t^Jc6R_Dv)Hs|F8qoLtu zkC$6KPc3aY4^Z{pf-Y8+AhHwBfE}WYF<334Vo!l}AXb%trV`AC8!T6My>xRvk#pm3 zHHM+JX=1+RLngN;k-3IQ<#A5MJ7DB2=>^LqDb1%kc#Q5A6%d%>IN;UIK4n-`2>D{q z6jHM}#0~z-%3!K9@Y#+aN0N<0nV7!}Yjdma*li{=yZCa;H1McT5{GWCXe?F`+{8IZy5ljQQS zrTFrqEl5LQ6y%wNh;`4Sr5J9RFfaH9Na!?n-MFD%$2Vk4(|tbc=g}P52_RgNSWcn3t)I333gCka0q_DoXC$EE|u?la)3Hi z^Oqsl%8F|h!WfxtA3&}E0KOg)%}(*;8p7JP~oIr7x~qr5ZS zt}-eG#D;|kb-q_a=YwMke!SFlTUXIIIyhgBr@r1$`M=v573zGUZ&Z;ovB#T+9BM0n zr7D53GV;cMPnitw@6~l#XLgD-r1|n4y?bO!UcEc(qc7(MCKr0=6j!>Gfu7UOSM}Wr zrxrvQMB^yRGbu2{3OLrjP=6`>V`nK;{YAu2$`B8FPF$7gZq2ZawtwRV0kK!LeuHJz zBRuR2nG8L&T7&sF(BmF^9-`K%l-a6BxnQhEsSCcMv@ca`7C+N|8~^)`NY6R>9&v-F zrSt9am3)7()aGkIp=6JF|$3I0`=vgS2}W>J>gIe0La)`lZ1P z{l;udc}QmIM(7D`(wZl?Lb}i=W9(rVd}caMm3YX@2^XEe7&6ov>SA_Ul!YAv^tDYe z*R}KK;n3W|(DgTksHFp3@6t-fBvNI)YrjgMY^JK*K9SzP;OKf3rVT zZIRx%tWtOEFkX+LaNh*i3kxphn^$o6AR{?)Vf=48wJF#hmJAL{4=%^PHvR5{s~IP{ zw@K5SuH&}_b#waDN@Dr*1#;8 zj3>L`zy2mj!ymgpko;mUZsF9%+di@q6&^JI&CNM|2-W!Zeqx=@JCWw~Na&^Xr+cBx zD~Z_rhQn8JeQezgl~_%EHY<}DHhMelQ2W>38M}*g^5Ct4+hNyYc-PQrKYdKg5LHHH z5W7c4sF^;~J5~Mpel;s1wg&NA+sZYw=yb=+oocgx@pdsA=k7k;S&^0Ye2PKV+jA=J z%kv8!s;L>%L)sb~z5JD`X-KkMJ5d1~ffCHpybzHPuu8Wkh9i;1AKMAU1s;ZClWgMl z9P`0tCm%NxKJ+&MOk+0dFd)syx<+DEDBOC1G?twC@TmJP@Pf+(*wj=;G#0iQZJ(iJ zhG-xA3G|5*R@}e@#7hh_*PQ0J_Ka#hcc~Q+8mb_($57A2Z^ikOt#!vf@PA|k3?1E5 z^UZ$&A+KqZAMh0`O@?fzgWeM%dCVoQ%|~*CFOh+?GLu=z8cs0Doi&=R*WpzS47aux zHba&$jRt-gFb4(L@D#uGjmM|c$++VCtQCqFUas=KKW6lql}beIi}Ay+xI^LtKc@0l zdkQ#o-z()ZN*r?{x*<KqloOmbT5w&V zwbjn3a$Q(Enfrp$2j4p_eha~MoJ&}&iUWxSZ!8q_P97wWkI`RGWaL1RonK|Uak^P; z{w86F#atZuy~}Jq{ejUdkdpr)fS;-)D&h^{m;kRv&q0P&gY>_Wn_t;WSnIeQ`eb z%#)mE*~XX(4i>^EwvF2`&wtc>49nS`qmL5rVz_@uPo?s)>dW#p*sb5eNQ$qmB5fE7 zIKEk*|9H&Y!}-D4T&BI9rH|YQxZHIugY!WQFWiyQn?n9k3;PL8)U< z#A$~V3iae6z(8e(o%*Jz6x-yjLA3G>j@cDD{8TQFa@~$UQzl;@bJcoH%=3~W6|DQs z(HWs+Dv4k7d(U{^^k~iOA&FEyEHm?ov{QGSJr>~ zNBu!tDZKyZ{}g5cj*I*BSypu7bHuIB>1sJ{JNP717@@1r>7Y4r23)bUfoFRm^)9*) zCp9u|gQ?d{lA>+D7QCSr-=sytp!RCmlefdPbI3o?<*$WGQBXkp!Cmif{c*L*AGg&b z?7DWdx+ZbqK6&wh=w7UbYfJvH%6U0zyA-;}t7CBq?(%dq3th6bFl7)PLYI4xVL;II zyHxo?4$HrM`P6?8Tvl|24X-t54n_i-h0-n0Sl27fDZZL8HpAEcQr6*yVHCb~N7E27 zmK=cCh>pD6WTW;ikgkvgiM7ROCf}QC3cT(BH$oGu-0t^8PgZ6MX?z=8Lz0ne4T4^V z-thAcyiPMh&#zu3J_ES$FBkO~$SuMt-s!u@48@57H?*$e8Pwbi2Yrp3CQGtR8@!yj zUk8vkyy#dDr0sf^D6wod7j5Ylf6w`wCmvcUyN^|w?dyUD_KL31 zE~V1>J!2e)z`E#xwN&7d0=DYa2DB6pQ4$wj;@8aSM@4AZA{vjr3qxAHqrY=7T1`94 z_r7;6x{PXo9hdnJ!N8{tBM9uaKE8=KN-T_n=P(rOra}Vi)`j2v%gIZ{7+g3|lAtj* zB}}a4stt3~a*NENyqPR5c(%njgkzR6v4J&RA53RN_zXRj1VRWa@ngnMMCvLZvQ@+s}}=U?P|DLxeem<(Nuv7p63NlkA7!CE10D3wO$!ANw9 zObXX`YL=R6%2TeGd1?xrLK$VEwP`qN7HPlo`MM}dK3I_H9Mzu;W}$)%JINEGUpF90 z#}mTOLB17SWhL}ZMRGTaFgmU`2O4g(>;@kprlF*Cp)kpy38(i>~14$R3s?6^?3 z(HgVQFov4jM7QWqadph`*vm$aIIXJNNcy|m2$G|ntBgb!GwWC48iMztD|o=(>;15q z{$%3Oyvm9@O`4JoB64cJ6IF%XU*;BiuoJW(Z#j^UH$l#9HR{Mm7GhSUp-f9TbS(>+ z=TBhELjbeJW#KE%-tr3Zh`nd{*Z|1O0F`(MTCf5%G2HfRAaIr0SmvO)Tb5xAR`)IS zDJQ*_aT_PknaBS3@{3I7may&O+zm8(y_ea0+%G2M5N-*A7TFy3Ev_pPhhj93^hy2p zsf~STscg0VHv6)-suJJ_HvfhYQrC_Zn#OPKnOTJx| zt$bef1E2v24uA^CoX;uvbNr#<^;$Bn%#1V#=IB2G9-e7lqg49ji0~i?uStqONO;%fa+^ReCL3RZjio@nXo^g1nNPbwp1HNQV$> z1@gTfZyF)87$l6~%5yxJnEQ+ie9+G%;f-}&?6HbOe(kPIzzE$iqX`vfok4&ai`W-d zwC99WD{QBt=6MXVD;D962#XX?i!3ihIshIg{q>fXgAMys=@kLkS%9d+mfwd@#_C~~ zWK@5#ngAyP8WOs%@7M-tVjQG={`OIT#6O?~USMV}Aqz>h#^!wFb!x$Ak5eY`gw_Il z+T)(XzI$10nIxlz0YQ2v4bhDugbSQ_y@s>>rHp1+Svi2@-tSsqlpIzzPTyUJ4&6Wg z8t%*#w>(z0UiMXQELXctsZ9~k5wCOwHVp$8E;=11PHAtA3;??YDwCu|jO0#YA&u$Y zH5r8Whl=eb)AhDqcB?eTs5~8M?tF{1{8~NvkvAAqv1XpE@W8WAi4NlSL<2eyn*gM< z`9H|9_I|T^m{J0!3b3`LzciFAtd2LRu7s*s_Jsb0!7S+S7aJc*lt;`*gA-fKO8ArY zhA?VR7)jaRX;6nU@n|8Tf?%{mBM3tZ{xr8|dm^KZpSP}F*K>^y1+c#*N_x*PnQV4j zHXXs6C)_oV)=7T8wRg}#7y$*Oxzi|WxACj3t`$g+Hqob;^h}z0MYNO*)*)W%TP2K^ z8+E9AzoFgl+*G|4FIloWVp$TG!&6mGHAR&+;NTh5J^p6y6{5nltCkJrWQ|oU6qW*h zPfOY$qZTp;a(A%n4fddVdJyiB=7!MR^#1%L6Aw9d{;jcxYG!qJqe2pMrVyVhg_AWH zCaVB55F%KKa5^A)lmMTPG=x(hh32&U*SA$xDMyd3{ZPxizi!QSz5K)*82;WGBaTay zHDeWU8ME{rnLTO@q8U-xW(Oe4ST5z)w)yoW?X}$W+~i-yIXAq7T_olt03# zG2Gu}eml^<1&ha=qIj=`nCg>Wm_0+Cwd6oS*LRkQkSgAw;gvpLKW`3noP`D1=r5(` zPz>bAt@<5_%*bgTP#IghY!XJ=NFJ98zDt@(K^*}B$ts!PZjYpvq%tq5kYKLcJ@r)h zpjGeWgspjG$}U5I3;E(wFu-T*ttBj99nkVSJy04B*>3M>M=4CJBW{W+wr zmo8Lbm?dVE#ijL><;n9dCt|#Od|9HFF4#}Y<2rV})IKejs~q4`MWlQNc41Kjp$r;F zAUY8dDHmc{hLF%=Kik+j1W{WEZP4aaE0T_9G2k3)50J+n4@!F~;6Mm#3~zA2!(uNW zD?3~9!k5Ezu$*P; z0Z-5cF&^e2ZT=G7;H2(U6=DL_gI^{}SNj?dg8|^Sxt0p`cq^jwVM;7!Xjm8d4}Ns& zKcd#kpeC&YrVPU?^63<(P>{Ui+6jp;gFDhm^1pecu3C8b+kR_Tdy{IMWKB?1fmzJA zRrWbi2iAWJf`OWX5*Mgp>n7+MnqV+8M&DPEmPa?H%ZJ7^zBIqoh9?*U3kCchz3T<( z{o=DphBZPs)&O&+xL<}PTrSUw@BBJF-j`J7B@go*T)LO-j{0ZZpPSq}+fSEg4@}1L zZ8|B8jgb2gyHh2Popw{~EdhN#pk1m(0#ygca8F4f!i2@Brzr~+t!U)sEME!yD(7c} zHIM`C5Sn4OHuPfASSw^KEK{5G&ZKT-udhQ|yIrv`02n2nEE6 zJaaj=cYtkxDp%*vn;v7!mw#(ERHUI8&%?XwWWwd^?J-?@A*9kw-cvd2{8XJT$}8H$!5 z(CR70IjoaC>DD~Sdvbq8(GW$Ab&QVqs>5qM-s&(pM zPqqe9RFj;kYc-8w?^V+V%7{u54k`7Ve?+hh+r~`oRnKXVB3p_X{b-SP*}HtZ{G!PA zYJH&DPN4_-LI0Qq?XoMhMUDvc#~1H5z9hRdmx!A;m8^?6m~Y-#b1hlP<)Eq8U>?U? zbrG~tojEl{f3~|C?x{5NaaOUOJ;yJ2hOz;`4;z|OgBGHrpdB>_F3<8WI*%OHZMd3j zy2oRMzZ)xk)fy^F3L0R20hg0paZ$rdG{I|!)H%|BW%n4OCnFJO{@5hlKEt@{ZF)bo zm3&_P62l@ToZ9vsZl7rqgY|j&J=M}0aCXo$QWJ`uVjhB(*uS+H^UDM}9(ER4+JpW&Q9Bny4m*?YQ~L|5@IZr?xwVdan$7a%9{gv7nROdai@`14 zG+-^|Z})4_OtE~I#aE~AS0(LCtNXU(!?C{8pLWYD$$@TV2HsDljoVJZ)B}69$9)?5 ziNy=R_Yv5a^;THLpxNLO zy{q2MTR&jkfAcY;d3}8rjNG3Cyi-4GYlGzJkoOXtWoKd{@;N{&Tdn@M?Y}BW7UX`* zGLMt1)|BC45~;O zYEbYSZ2{~+yv)QlkAVg?M_pjZ-!GCpjqn>zMaydQ%*lyE0`=2E_1o>1!sJ380i_My zB})!KN8vNL^sR*WbvXhjt`v!TIljZl+nd*r_Ksa?e3=XQf1O-aR2;mzg<{2Bixzj6 z!AsHN?hb=%ahKw5#bL1GFgQgEgBN$VL0hCa#pd##a~|%x_wD3M@@21YV9+3{YvzBcTXYf<5#f zw@nazWj_=%=H(>O2QSy@P=u8`{8`_bk}x;!P%>I-jlqoScuG}=Yua=oBl+#ICF~F+ znS@$6yzx^4vw5R$n+4Gep@PYrOxf{U!b#0SW0W|~0Cd`pgH+d9 zHF2Y}rq%oV6;IeW|n{J_U0dOcSD`AWh!D^dDYCb*c8^ladlx6e8v=7}U zpGCJ-DErivDK7O9PLYZ!KW$fh`Bl7Ghke)_A2^fB_mP3$@dtVOu4PdD;J9^%pt#r7 z9aUCSF@MAA8f69~*msmp;gomRMsbEyIuir9mRT;mS7@#2U>)4Yq%WOoTL5&hULy8K z>kDnMX|3fn-RNuw(0Sen*8dtIY+Cz>5U7I^6VXeO{2jLdd$q><>Xl&1Vu0p7fs&1| z$PbIJ`zdYzEI~m!7&#%G%tX&h5*}N*sl~^UqaR>nhkNBS8AZM}wh=ZX zrjv;)`|w%_y2#qZAId_YsddV+wJ2*du<$W+5t&FUFZk{rEi3ntr&SUnt|%1C=Jd5_ ze_CF4u9zeMdmT+erqTwwyjqRMS zXmyK_a6D!#O9m>R+q5u*q)F~4F&iq;iKuj7YDjg=gR!K0M@3p&cI+#a>do7bc+EFf zp}{hAArKj;X%SHZ6D9Rz4`|SSmahv#VAGy11cXaX)Mt;d8M1&}1|-hAvZVNiXA6o< z6cfy5!JL;QBlt}Ru*oAMLs~|FY5`ga72TPzIc9tZFpU~37kdem-*}k9(J*PIpJJ^J zsSU)i+YsOesy~Wy%t%w6zMqz(_qC;@@v>^vIJuyqXhxU}irkNHR{VlcZHy_J-_{`! z{(i{Z^`o?+;-T}NH3_eik^=@7nJ{&KH>NC>I8$+d06Es1h|Pqo^o{1;)^}_EW(|57 zyJj+53*y)m6e5F~AR#?Ia_O;t0+cCf@_;lqd9@>cWM%$cNkbgsDZ7Cp`OsmBv5a=TQADA0^??l-fO1^j=fqzmv>$Ik zsF<+b%&B*pk!HX9Wifnau{En>S<+**we#g+tIq++C!fFshl@IZ%_AS&j%yNkj=w#j zV1zL4>BCBv?8m!_A8vU5w_+jRJAUa*K$Sh=>u;o)@%gZm(Hl#>>H9yA=VDeWW`zerl}&-1icy~%Cs2WRZT1JiK;)SUZQ>Vwq?HIZ#4y{7%`Ht@uU9-2mT?U8mz zC94OXy-c}dfYYZ@TnK!7OnYwUnU#=S)k-Tj1Py{Y_*g>!$igUn_8Hg?Yd`YAZ|zO)ET;+xY)CD|&4M8hSGJ5rwlLozN)`xJkphmTWhnkH7R zp|GN?86tSl;KdX2OoQGhRYBxMNYX@MpSn5D7F}DSPf1*q`Ib#*a4Jg@qHh z`7qyVkKaMCcRemWNY651aHvi)Dt;N!*0nRH%gv3csv7=?{>O*|2rMzztJ4FC53iHh~I24S*ZN8u3B45qTO2k zV#a%2-hio? zIFEIohf8EYWRDv0QIK6XdRv9JD+t>+-4?eH^&08HLs(EaIj}>ufdPG-&FK`ox(hP) zSX*Zqbos^?mzT7`kU=2R(_sFto#;e1-jS!3{wMk2OMcoJ>~6zIk%mvT-Jh7Kvbt$B z8|rO?J^g2Xr^H3M{Vu`P<)l*|Vr*E1X<+$j`p8kgt6ScMbN952xjmdzc;`UuBmU19zH1 zdQm<7)we%}!ruutZS5wmd;bx?EJ416t*z8Mi{3Jr!!9It;_W3U$&c}W?2NupfPAbz zaEvS>tF=;!K5Ao~-wL{`AaKW`2vX9W!v);+3Ne%UcVx zb;L=lm)%rYtA=x^cwa@f^IsmG_fHBMF!yLCJ+BFOHR>7stJd)?=Nxz%8iP-Ve6eSZD~t{%G|HvhpWj*; za3=~ov&HyCmD2vW$N+mUE$10$G3&6M?QY&iR^o`>Vh|lw=YCxOOE?w`X@(U<9Y7~6 z)Fcq!<`YOUk`P*#e17Azvnu6Onjf2;iYsll!t!`CbngkGOAaC^m4^RW((d+S-n)L~ zTM!mauKzQ?74*h_S1@6)A_2|}RmHj8#A&~vV*Vg@W*Y<^Q_2%(ZD@hdlKyCe zl)xetJ8!pZ#}qf;Cj>*iNq*>30qx?euIoKYV8uSrbVuX;KB~UnQ#KvGL+w`BNcSS1 z;U~2{1T}vKDOh?GjZqA^@8P+OEsh={qVYmQ$vY&4jYp=IpNGGesr;aBWx6o41JoSQ z(}BH4cv2?sB~?BFm6;E1bvk7aC#n*P%Oi?dG5L^1-hlm5(P&r2+cnG+!{_XV`;L8< zl|p)Pedy^d3gl4Zq{eg%;hsN&VW1 z*YjjpggMwY-|~3Adr8jW^cl@Ov{4xMvHHP;dHlW{U@^uuI}B#!zEBT+oebadmu;(T zo?I5REG^zcKLB?tC^&z^j$_l$2Lu>djULQa(#{(k8C0@jcH@Y5plQC>XSdZR<%2Fn zC1CnY9?x1zI@i^uFuX5uMtLaq!#%??TkQR2I!ifI;x}j8 zfr`BP^Q6sA8vDu}yITqBe`9jn(s4p+U@XAi4YXGwT!~ej6K_%!Fo)U1FJx5?IX7s? znI|z&$~=$$T+LNGw@LY9(K6|S?R%;K9(2@!slJPxmJQWG-*CpPI!DGkfnTM3=U`@k zo*N7*koGrw`pli4^pJpjgSMLFVm&}>!aSM4cPn7hzsL14QkK>UK(EW*q=T~B>6G2r z3kc0PU=Gmf_i1!^$IwY;XsZc*z39uQZd1T0?3v{XK|jR#Tw@inoudHrzw!~8x`ZUL zP>9mhb4GJ95$7l35USY0dK*R}JR4u>ysHdTTaV{r`q%*N4gv7}Dp8PMMD8}ve;U>< zz?5tAj*Jp>e1)7Dm#5|^+uIQ)R zX62|+|J^j_h#O};zES66?fadp5IKr-?2tmw=@pHfATcp)iM6Rfhw?q^hF;g%B>Ngy zio;8u$*OB7`R;LZ8jGhZ+?gbNu(sYscLxZv$G)#thMhWlfXW2Q$W_rJ(Q!NDXH0+x zQ3s->rPUy=JY3Vfy|$uMz(uPW}@g0hNlv$ z8ijAn!zVyZm6Y}Z3dOh3D#DU@xDFGReL@V#ku=QZMao^QT&DAIy!9xSy^UP-`SW&!tYS7JG zFuK6m-6-0VSp-+>X2;maXQ{4IlvcA2;7P8*nSegnv|P;nf$F9NvbhM?*;a6o)S^Gb z(#qjN-*PB$lw~&sFU;|DeLP1Jbw(%3@f$Qif%2~O;`X-ZWzTE(*kP+j%s0<2)Gc{o zZK-afhs+SDT!8Ina4zgiAp9*+$_7H7)cTEKJW8+e^gJKxMz$6cypGY^89fs|HazKi z9n3p~+HR|@$_yMOa9sUnF;{1K)uoFj5JlS{O;LE*{bHusUdI3Tf@H8^QTqikAog%~ zKpdW@gb&u4i17=8{|9yEsYL~NCnUb3#Jq@Qp#7zhik~?7U0OP-<_c7yiHiuw$`g5h z4Dk+W4~Sojj=p;}luTuL6Lg+6F>9i|YRt#X8cuo(eUrk>Z>~;aJ7ZEaCnWA`MdBc) zfcc&Z3TO&v%@gFl5^ijq;B^ zvz8RN(2l6Y91W9g(>MrZChD2F_&#rCv~!t_YmXK2dn;Sfp`KiR*b4t{fjQf3Q%`r#62E zj5SJx>6Fh)rVp`o2&;!MR!DuBI_q1wKrBVwev-|v@UfT;AjKp)rCR(I^k*jgDeg(( zdIc?W4ny#lvCc_WrNwMjR|zJNNMLrso)T%|FFxc4pSXieYJ+Job9`0RJB;*H!b0G7 zyjcJul}ATXgRQD@Yuqc@Nx`3oT8^GKT7Y2wB1^J~i?05JS~|{5gv0O!nY8;jhq0iY zVPoNDo!<0;UZgQ{97H7O8$7r_f}$GyC*2ad(Cb5O_SsS6e2xlbCFI@169mKacNBKf zncO?#D0m>Z?KHU#0TyrHUQLXd?I=E6L`*jy4f(hrAVIealGr`&NqObgCPsaV$ z8;05!V_^4BID!xGSMV_+$cnGE^*&HvV`wNmYWa_4B{2+)8oakTZumHz++1AiUv>v2 z#nF>*L#C+#6)*VlrjjSHLTcbM41+%nJ9?1D{^dNxjG)t8k0`ncWIu@OM^XynqfH0G z=WwG`Md9|NH0e)Y7u}|NWi1mh^%BJSW&Nd4yG7L! zA@u}#ogp?Nh4ArWVO%kyr}loh$H1|nzQ_RWz(EfYHvCCq4=quN)z(Gd%sNZ1qRFGv z^hc>BnG`qrT+|>4Uw)fXDcX!5DHZN5M4oHh9*!Q7CqcvjL}A1_)JxPVR25u2+)p?i^lS|4 zjQzB!bd8Ey${wkDsmttcR2Kpl#CSw_%6N}-o^&?yFDaL)RVk|sp31*snxmUTn+rX1 zuLX`#W=*Z`t%|L_j&!B*r;5=rQZLcp$!;nKg+9Uml|yqxGeC1j^F_la5N8H5Q>wdb z2p1WZcd5uoTc?ikYU3_oEdZ)=wYDl{Dm^PsHT{bw%L~eaR3K8cGL})_vJVJrMQa6D zNmp~5gOA&f#-}&RAC)+jT~aqW16dJJ!<{1SBRwNC-+@s#0J0xpc8U*({ev?ecGPiyM}y+{LPI^Pz?Ji3a8#5efn?b(KWc-fBU|^ znzO>c4x)cqC;rQm)MvF;V?w20k|d9a4=;gCLFjI~FAkIXegCKr4lG7?rbLS=Ln@|L z3$L)>=Fje6xLl#+7Nq=-S)MTw-AEsaotO9R?|`NzO}OzLB(ed{M5IYv+ZmE2)-yjn z2;LdNB6l201nn}Usb78XPvsv(=a!oOv=Mt%G*z0SZdP*I7d0QUxQDKO-T~4G=ztAc z@B5-Vu`Zg*ttfNbRp&NiZ?^jV+^pKthCKh^v*imA8R6#*MAthXKqK*C3<_ro+!3&|sV3VO#qfx35<~sF#wVm#wXr zv7ndFub0-Mm+PsQd81c|xtyG^oTa>+{`$UVUrwz(!b9^**P7>RzFx_3TK;;vTtKm$ zGI}yV@QugpOa4lP@k+wRO1RicT=z;;;7ZanAOryr9S->N5fBdngwX{r(}c7_!*5CkfA>g#46{`oCAdW=8fv-O$1Et7)?S0IJTuYb}cw|G&rE{b=#ln zcJ1qS4CYi+WlZDI*ue}(LFN#t^cb$&^Ceg#i;iA!~bT6jrXc!gwoNoab7xphgg zb%h{ti7#=5-h273_iFgwj`wgXy8!hHIC13FsTn2m{qdX#eajU}YW!4kITQvWO?tT;Vf8g(x{~xTU8MmMO%erSx?CP6!SO0-5{u$k4 zCf4#NV_{_?ECrJF}4UgOzZ`I+?ZFg9Uc||hEIS~1iw|&Yk-GO)NhbQ mX4Rtsz@bbI&t$WwHf8F;c$*gr&=FH5V+2@8`RSR2nq00B_{fBqWIPU`2PXKbR_f-M4po}yf-I%=yp#uI4O^u`$csZ zqxK|%N6g}L2*n*HW)@a9-bZ|o`JaeONJ>e|$i95_T3JO^?TwD^2R(fQLnF&iR@OGQ zcJ}Tbo?hNQzJ8%!!onjWqoR{jzNV(7fBT;CGryqlS5a|EX-#cieM4hYb4zzmZ(skw z;Lz~Y^vvws{K6u9V{>bJXLs-K{sHpz?EK>L3Uz(+pIih0qW`t#|5LF4LoPbJT!h5L zM8stO$wffujsFqR5tBR+A*Fx*p3K~h;h|_S`MnoOdDUGM++x}YMvKprcbIs@H+Yf% ziS|Dv`@a(`MMQw#JR&*(2!JD*Bk1?a$f9HEclA5}RTsgoOQfL+ zcXsv7dle^nM9}Y-kt1F3z2RpHR-g(f`Rz0`z1gYy3h zm@|oACrc%vs(Nn$L?36gH!4=Ab?VL0%>;xR?Evol zkL&v5SD;#sjQC%3mp717Rldhf;|f7rb1lUePWJZ|M@r0$gHOW@zq!YHDah;_dI!qP zoIgr7kib5#bQ?4r;*IPllNeRx`YI745pQ4EB5Hi;j0)ZutQ4-}^ww+8WydtUtV4Sq zc2?fe;`D*NXl|OSkK~?l-sB^fenK`KJ3j@YhG=Xm`0K1}(J@3yX($!=D6+Q}eVwq0QKUx+(8qy$p`YfnA>%d1!(3`&S%d`ZTt4=j6|vgT zw&jD^5A8jNoDS>Y9;`Op7XsR(q+Dls$j7b@MDA5UjFBLHgnqYlQO!)fcYvFk?Xe*5 zpN_@*m^QA9Q|4%xEsW#PRqfZlUtE7eVOEfZ+$YZ~^J&CI6;X3bQ|tGCLXR>wy<}{X z8bvS~zS6NKI@qO&)n_eNlgBv%sEe&}S`~%Vh9bAZeJV}vxZgVglr*?{pRdzH;&I%q zVvRg0$@UN3lif2U|J`4w@!LpyQqX9nOlN$5$U;l!IkBaLId8m3VsNGc&70VYzR5vl zMeH+y$9*-4eNF|OrL$H{oBL_flLAfBwD{>mu@+s0_hY&^kCL&m-INfycH=(Tj#4vqthVpMR>(3< zcT?Gly>v|Rh@{(qbfv}NyG-p2wQqtQTUR&2*LrVEP zkXuH(bzvzMrN4(>4$=cOe?LO=(M`#(PZw)GG$797Khv}z$#^R^v6_V4MfW1HDoCun$$Z|np4ZZtMhT3wJwyUf16uBVWNah&l z&3X#PxaRw0nL8^vtt!yB`i{>^9^Pxo&zbs}``$KV2fiiUzm*suUG-C*8Icc0f>N-V zHu9Eo>c5}Rx-DPscGRL?qXqV(6f+$iZRYDgt9*^3_-JrWpmZsL-b0H(yB;XYLEcWE zV;u~q&ey_oSX1m6?1KvWWHE_Bh8+<^tI^Z3+$Gb>Ukd&ubl(C91IG+)L3Ljm)1Quf zjpY!dUOc(hKO#Gtyaf>Vpf-@Hjys6GpzTSFEanzqyOtLMklAMHSJC`l^>^>m=@t-T zjvLPKn`49z!3AC2Edr{4Mw*Hz)LwlcyFgEdr zqD}}AVZnMryJ>FEIEv4^8%jMwT8p&oo-EGQ;P}m3hAM-tx;m|RwW{o!@|u=XVf5y`=RPY6-b20 zZKeSwhIYVBT+YE8`>NvoKwVmdru?3h7{>Ib98ylUeQ+LeY`6ldYBE5e8^?v1jWyDb zIOhbun4*)fZ>(!jwWQduS7Pim#R#)`{(bt`G{hBes zJHe7`d&n$D61d61bI0x&$nZQ(L_w|BZz`4_DTNL?cM?^%MxT)S~pTta2aeD zD`Fp}FZ?N;)Zf5rX3npb|L!#=s&j-ceqEmz&uq5it*&U?{qUCtU|9iW%0+yh$K2xr z(H^!49|MI)~}Dpbwa0_fy6#iJ-O5n_Kk!H z9L@B{DTrXc;me|hrT)BEuKjr`M9uwLB|KM^g}F~;9I5uEe)rCPPO5nPxh(0s0Rl2jwABF8a2aMyTwp~Y|CX}QQo_%fbJv-UxMZdX#$ zW#=~*LKSlnZp=qxYpftEASLAE_!O(fLTKITMB60^YJ0WUCmIYao(NtwI)EOqr5@5TieWKR?cXOnS=UVFs zWL(46A6E7Es5Efi+}-{;D;eZ%J81m_?lTafMJbntt;Bblu(+uqsg^f~142F^Vzpp& zD<)b6zDd2Lih6g8(mAdazgL|@8k6!`W0|brTQcJy3207wDAV4$K8Cp;9G2l&R$yii zWUUk*v^tF`poEgFq)Dcklu@oLQ2TF@4Ru!-?psKL(yr+$>gAfcR%$GyrMD!oF1LU# z;y^*W4oYlE2Zilb%C{qo*1910x$8U8wjqW3Ui;2%S}Lvh_1tb)s&I@MXA45V4;E#1 zx7Fo*RM@nAx^O^aQgbrPQeh6}0$op$9WjDZKUvsl*W`u3x-Fx$SE%s4yApO3g$hnw%WfY5IcVQf8`1|o#aZh@;~qmXYLUOw!V za%}(YEAx?5`SAU`1jY@*I$JmiG2Rfgr?75pu5SiUlli}QyUr%=`1nE?=?|gTQbIMnA!`|`iOP;or|(o)ZgVAzBahFSO(e@pmCZTekoPRD{ax zu_C=4d~~w5Bg*Wm_kN00#8ZRRMLDkw?K`jeYHJDVn6895P;EZ?8VzX1=2`jI{*P;? zj$VFTF_F?3Kv{y@ju)RFc9ug)Q9>Y^zwj@zZAlI-m-!Ex=PFm_WA+z5#uZ7&DUp{g zDlxi7sa{WC)?yRd7|;fRqeif!p<&nZKD z#Z~bj=PDFWdJhcleJPG|M_6_@I`Q>aMQ}0KPC~dhjggrZdhF`v^zc<_`3Q>Btn9d0 zSB=2@Hlv8(_=UdJiuF^s-&RFa$}*h?2z0>C6{p;YT(R?dV_R*L+A)t3@=ZmmXa8sN z%F+*6rW2a{f1w%aM^Wf^5Fh-JYk-?eD9@JDofZ~v9TIn8_OZXtV7X9#{)ji^HFs$0 zazbnwpr@(o{4F*IYMT%as@Lj*kwH9Bpvp(J>&F(HqpYqr)6OdNM$3=U$$9IcGqfti zY#1AS&&$v*0Y|9)TEtD`u>eB-d3_`Hhdjt;&%VKHG7QSFs7z`AP;`i#;A(4$^#lO- zXmAv-Zvi9^khvI!rL7i}L%&1S!5X2&Qsnswqb+}0#;Qh_-oH6fCG@LL*j1@Y-K`M0 zgKi1SQO+^S;jFfVbET*SNwNKbx6qs?=PF6LU%4VU?IR6rLgo%;w;k+$s{OQn@g*P7 znaX{CJ)Y)a(=8wx%%}*&kfH3hfU!^}$aAuAMW9dM&`CXeGx^{LRtmN(=cF-4{bq%- z!Bm0T<{_iKQ6S_T{dLOk)S@jYYY6RJ_zM@dQJb@b`698Z z*(^UK4wUH%DccwOQ%Z!nuWE4=$Lrul{|)d_5@Mh;w}vdLj)ntr|F@b`rrGp@oP%t1 zgOD?yG})-|tm?JCEe8SEUPbW~=yt<)&2Z_BGDMtR>Y~gGF{~&Bgutd$D1^e!-3^j- zQs3?$^F32kohNBoOpZgC$Mqh;gnk3GduY0%hduW$%HJ{KUA6mVN@QU^!k2s*%`BLiI2&DuVTB`?%K8nZB_ zilXH(v{1f{hn(YgV^FHx-JkJQo8xzEGddzRMs51c*e5ZsOPNe1yAN(2SGo*e(7yV^ z_Cnzv+y42!Sb%+7>|lQAKY=su%MEPs5zOv{6(f(j1+2qZ4gwjmKjn$;toSHcIl--F zx5c71s<)xrYmv(E=Svz%@KR6@W1X$1rRGv@X9VURA2>k|+YGg94YT>YDmII9*|-I$ zxs5lnRvpIR?z;R=rddqC%$jF;QaBLf(fX_hmTDuA+k@r4o=1uyPx`Ad%Ge))Pf)mF zye&0*v9zMhl%#5{X6^l=r;)0;>bMqnw-N~r!U6H750|{g7L)}A?vnMxynWr=HtX`U zF68l&dM$05_XFiUF@iD8X|qb9?BW97^X=@HH4#vFboc+F`c)7n#NGfYsTD|HoM9KT0@^}+(fw5wDxOXXUFwu{&y|JYdl-T zTijRlhVKj9nTU}l!QsnK9O<=6&JzpZTToQB@w!0aWWfuokz5P(Oj=M*8QNT5_^0Y^8K;arY-GP4hJzG(>3> z=RQcISB+{?u1w#z>fcB}Xi$rYTfk*3>LmibmEOH#=m{nCNzhDqSCdHBL9fiks)VlT z-^llr4=K<;E5Rcq77r($(C$Hm!rpNVBISiLQZpllIp)~OvS+!QfYJxRkrc#nu?;lB zwBTFPLAx}`j#`m+Fl((i*^3!4VVhO)Q!jlf(OqGxL!l4c*)beE^odD>D#{Cc()JhC z;;FX$6=NTS)IR5~QhZlq>Ev40ju<3P3>Ye3{3Nn*$|WjFE<@~>U>|AXEX`TgovNVO z+mcBLZIk=Zw9DbV760@1)C;wtF8P@ew>pljB<&xG{Ot6aZUesrVvqyz@(&P)-5Ixl zc#Q9+246Q9<AY(%pL}Cv3az(>*V6AuHH&-hArzo)nQ_#kMhyLU zKeSOR;YeNs$!r2c8KPwj4-@TV*CIz@neN{HJZ2tVdV|XppG;wG(A1aIEQv*nMPbn< z)6cT4&sE|BNAMth9D!E}FbZ3_=)+$RVm)LqE!>O7m{*ypU*2WpwRk)4&0=8~zRCU0 zw3Ye-7o3aG0-+w+9IfDe@&y!BC=}89Hl{z9N%(jUNQ*kru6bT;Zz=PvYlPk5-E!oI zcvniM`*cW956uGfavB>O_!u{qOLhyetcvO2Ou2kiJD0AHEMN;y`L(z*O8Hjfj~Gk- zS*5jY>Z{M&iK@gw_2|34$U9DYy8!~7k_|T(2SA~K7uEtri+=yy{?xePD&^5N7cv$+ zH;%8kmrvSWZjK7{cxjb5+=Mk`+rUOhYRn92Ud53K4P-qgp3iATH4d0rrUa~m$(y8= zybdx#E`~n3*+)z`C+?wSS;e);;rllcm$)jZ+h*=PTK(hskI?**gES;fGUK|9?a;s< z4bQ8aX!w#EcY{}a_F<0rk{#2zzI>x@^CX1bqD3>o%E8>au;DpvmzQOlHK?~YS)C(U zjpwQuBT}MXCPx_(^bh?Voqsc*dYBQL5#Mw=_%`g*I#&>N&uNu8f+^+c$kP+H?a6a>a{1F&Xq?nZGn`$E>X^gD+ceHip>`B?wHj+4Hc|TvS z^mvSt!{T@GRJ2ssaygV1$P8M~r}r7Sw44j1grlVT*jyq#U7|X8P{9@USCP4vGhC;a zh84#TK3G4sv@=q%8TeEB%+&z*9HNEf9f)o-F0qe&9=AZ=#qs6C9SWijz}6hh6zT{L ztww3}fmp=ZmsUjD=nywIdoLyhj|BA|R~icOnEqo96%dc`&oQjgGQya&xX7M*zk6oV zKqk*{3z#qGCTWooNl85#8&RrPcOu-~{$eQf>r|!Wb&r(dcGV8}P2e9;ZBg$D+!4f^b1q97s;_-p>JBAtY8w`hDhWf`bf$5E2TW$!D6BWVD!@=iKyOh~o)Z7W) zFP?M8>27bvJ{wZYZ3H6Tf)?erwD2Z46GR-Ft2pw@hsZGc;7lLM)Lvc%zYu)!&rY&x z@hEli!Rruq+tj_pn#iDMZW-v4x2X3U{(_cTNUj!PdG{@Hnj6K6%0Z!Db(UR{gDUAx zS?k|Y)i~%~1>k$1mllWkk}fJg|NVXad2uW2yplxkRH3O=fEy7Gg)@OrkA*S!@Xlb( z6h;dC}HcEza4#zQuNM zy>v@|&+wKEN{^_2s((LuvVK-D$iU#SBsA<6VC{+OL-X6-0$4mUd2`JW72^w41}e!7 z?kPLX_XB3WlH39s>JQgTd5*?pCtE-Scq0pcSMB%_BU%eWg)NhRfPTO4hH@D&BTE)$ z0!3}Mp6+On+BQ5BX?n7%JNXeHYUIh0EO2(VMV*f5*-*|yQugK$OzuuYgaywhZA-k$ zE?d75^uAd@m+O)`x>A@=+!?}t4WwQ}5vd^c`>L1@yy0BA-bEvn@bU_JwNJ6UYp$Y1 zamf599C5?tq)Js^6{RrmT2V2Za@p@#1>3}|`#EK2ny;CgxmzVgp+em)g<7lf-}U~E zQz4aW14`Cb58$ai8c>n7G?1r1mA^-oANG3(rOM{9^5G_5?4!`P2z60y;B`{&`%KZ}f5Vf+^F4tou`MuaaO5%^}w~Bmxu%cW^m7AzceCv7k;iBVu>4k!|cQ`3qg^ail)E zhP7yaWs)T`u&7G4)O9#0)s>Y@`cX$6Dgl20o}*yp2RVtU`|XgeW!Wq?8D@#-c>e0pbWCxJQhiP@;E{$(P&V)(XIYxI;>*D^NxAC59` z5>y91YOn0uqzS$SFhP6~2j{B18JvojuNzt(gj(2Ahzv_T$&yVcLB7GtH=3WhEVYQ%Y z%=DLfm9tww8Af>KDbsT+FK2GSZuH|&5gS}lCFSGZ8|XO6lj7#uYkeM1 z{s~+vnh33i8#Cj@re9QWt0LPP9Lm8>OtPNkaqhnEN&O?QxqLXu1ZKA29WQ6)nUQ>^ zivB1wXt=Cg*qUU)PxZy7`^SyidLr{D*{h`jnz}3BhyRM5F7<**FGi(D-G7>NRV+Q& zu(-A&n#sd`na@=zIm~!<3$W@4D|kI<>#Vy@o!#$nzGsA@D^QWw=Pz+cs2Dc(T+h7v zLTga1BpGY@gJp=Q9fI71(i}{nO4mAD(!)29Q>xLEroLRdlO+d`vEGk+d>ne7kG({9 z=KfqqGa>>Th~4EoxZ1slTul+VRc^ZVT0{;^?=s5_HfB9=Km9**ST1{21tRs2E*p;J zTV9X$g$=Tz1rOGxYKEmHHog6zu^0j$oTC)n-x5!sEeH6~nTQq)zms1z)_Zw&os@+7 z;8a6P7#k!qe?4C|x_QiJ(5Tv`{!>|qRJEy|odc@^m=}|baPi{!J72wGlNfjUn|1%h zP+Z53BT`hrT2zG$pp$(18o*?+Vt+CA-P^iL$Z4lh0bs=~ku|Z!azFTRHCURj+SP15 zwz`XzTc&K^<4&w3h0LgXK`KbpZDOlJ1jrX5pQSBRsx7G@5?*pqpWem94Kyq4$1K*xK&@Erk~R9J@&7xvp&=S~KIrPnr+pVXt7Z95 zKyz$bLszZd^zBcE;TNL4)Qc5|P&$;mR@9H_I^yQ99yvQPQtPtR_2mxY4iw@E-Y9>x zE^apP&TlkxSO>4qxb}1^u^s1GW?v-qw-s^1SoAgSY(Vj0wnem{-sTw3*lc82=lS6F zq$%CNsKC8zv!WE+RnCq%Ps#w<#dqotI&D6dDhx@SQ^z1aJ5k$K)<O0zADS%h=0mlnKhtP z52%H1$Zqv0hlfq!9}o>HQ)TL5bXVQNIZ8LUP9-$fQZc;UdgT42P+q)MOGBEJNo-C8 zQHq&PDdrg}ZUa+3X&1;BrAc?Z`$8GIxSl&)iSotBIqS{$vr$+56wNM7W3n=#c|Pj7 z;dW8H??eVBx)b9*m!dbxoj|v|7)BPvLN#YP9)0d2H7w=z?u}}vkQUcMxk3Pr&R}0( zicPV+5uOO-t&2Vw9Y-4g{O40_nQ*|?nfRjeR$^^PF}2eB98s0k&MM6W+8O^G$Z1pW z#bw)!gq=ptx4bQ4vh2(|`7>Najf_+Kip*0-A_{*hicN{a-Dfy1IZJbLH(l#~4SyBjyj-$t5B zE0jdRvA2LH8yGoTct^d1bLWvS=_aYG*l2*mPusMXoDz38d#<^$ema)Ga$}Apl-}>) zR5gW!bcn--aW2{6^nSvFjAa0F2z&7`Z^D^jl<6e6l^a?03RMCvv=?SGUVhs6jx)Hm z>BLOJfm`K?v^6nZ=yW@uL!1JQK|NBaWJ9+#dThOmap0+27Kdf*d8M#6lCkeRep3aK zwVmu+c_Szyua;LAX;?|f;ZG|!PvDeqTGtO3;NQvhTKVxQc9Ox-Qk_bhGz zVHSD|sL*HQ98A?57=JA!$aA_Xr9$@acNgQVtzQA{+h3|q^U|hMRAD#K=ZD9lcWt9w zeyUknjt~rE1!8998GK!&*&t%-6zGE3v;AD7X7l6fCsi*e>gar`s~ct?<*Zy;y+;&q zg%Yi{v)Q(7~%oBUd&zh>x4N#NQI{Mv`|5`v6~wh6i1 zoJaF%@NkZf(5>xo;5;uAI-y@+ciS|qicBDiX*~n;qULGFq-Se<)$gQ)`B?4)jj%o_ zDKwc6%z!B!2TFy|24IMtpdNt3HHUZDpUJEPp7IfCUIuG(F; zSjTx+In+vj`0!=;RAi69)eo(Id~$Sxw|0t<>2b&6Sn%d6CMY#VEPJ0gsciLadt?Gi zOVgMP-cg5;Oh9m7ew;Ga1s?(Lyu3s3sG>x(!y^K?7U(|k8W{E&Z!?kHM<&Ewe8T|I zPa$%%iu?|J86>kOmbP^Z(ETEdPD>fN=NA$y`h-&x<&qCM4R1;i?3Y&9Z?}L?w}89G z4zkV>KkTla6+6T^7$wT*Mez0vo&Gqya+_*BTto4@bRV`}AjpnRHnf-nr-2NVq5&FP?1J;4=VnI6`}XR1n6EaWXrRSYI#KCvBlb>4Aph&5t^y#6x3h z6&r~+XD3g05{|HFGu&jWFwFKO`U*%Y&+wSo2h`>Lh?PeNBPC_)EybyP^x22;lBOHD zsI#usC18-!38X$3xT{J4d*2*uV)i!R?RXk6T;Q*2{%}a|Zn;Ml;GbBLMrgA8gg$%e zDsO=cHx@S&zxpSk2E)zCxP6P?Zc5gqaY6m#0u=G%?u&m=!cV!!UPN?>!8Ws5`Bo;fE>^0rp zJZ(f@T6(D+dfM*|Cc&0EQzpx%Cid)48$%0@EAd268z& z_#v7|iFIQIf7RN$2rUh1l84M~O=-`*3{qGSuuzUOqVTj9aSVPeCwm~`olCr5c;;qI zoX%U6@h<}{?{Wu`?ezTnxmwbOP7vQip=&maRXsE5zMn$ z37T;DabF6-W$w{6T)=RzQARD<0bJAM#r{pi%2iF`$by&6b=x>gJSAn<#v9EOIB^T8 z7w$WW0&>a=qo3nObs$8D-7t5mKwyS?o*VCJ@=KnS2O@8j?sRR*shUTl{|o}T<)KEW zi*5RwRn+ty&nAA&p4%evkw;TD=FAbUn#H)O;=?}{O0rqh4pq|-l>!GZyJA~-VR(r} z&raH^(jh9*M{#y*Sjt=OYj(MlD$2C2)>GkdT#+9ljo9l4hvz7u)HjQ@U8qqpYRywZ zP2*`bdGGIYmA?6X_1?4$A5kO@9olMtzMBe?ly%d;%T`UVuLl}tzU)T{Z-RpGPCCYI zorb}#zsGEfu8#zUx581@=R`hG8{jf5D7xQs|c`e>L4H$cInAZr%Z&7cW(%^9368e+&%J zfJ%Y^7|qL;`u><*CvPhsO~vhEZ=wVXfrC8suu;yF1YQlAa}-JtIXAyG&@CLn1wy2B z!&mEn@iZRv2o##+vs5y@b33E3Onh<+U?$5Oh2B|1=FB@g-Kwp^Sg3ooPUZhS2LeYh6z^X2(ktXZ zciFX5mGInje*@)CH$md{cDH1R3QtRX{b>T`o)gk#~X=yf#~THJWk)*y402a1*fg=9>=#ajbY zWcLxpm()9~YJFW~d+Q9~u7Qvuw8B`<*yr$f)PBMW%Ft}6!&>9sktrVTIgu(y`RF&R zm`_;P`7Iz)k#-vMG-I`7BOBP&;=$C?_U?^AuXWtpq%Wse&crrE5*TG$W{`C85Nf%mGpZJw69p+0Oci@Fw8=T=xRHG7M$E};gy_7ffcc;4mHL4?h~VPVIQX6pDX zdH*G_04jY&;Wu0b1CuqXU57`6tfGN0G5gBjJ^Wq@NslpA@?TJ9{R%6$yP1uvtj=G3 z8DK6V?QuA>V*sV#2q|#e2My>S9X)XxweKyQx8tZze#KMOZR`OpKh0erDrM&S5NkjF_(%oXavtjOr*{|LfKGCkS zsJbqHe;Tng>iq#HnqCJVXKU&y)rY0-##|ITpTn1zTzpmF6o6KcgMK) z(Aol}g!HT8#V5}dJa~BpsSd;^F`LjXJOR62rw=8OcXL6D#%K-BX8Nel>rc+?_b8oYT{s5ko9q0r_6r+Kio659>ke8AjkEKRnFC@ZlZWz!ff@ z84u9n-kZC{YpSOlAe|pon_l1rJ|0)+d@@@Nc>*U%k_Q<|iQL&4PV{Kg&EY zo(O2q37qdT8-HcK&n6uEsT$>0aTs_XkyGYQf#xx~*XVT$wP6B@)`=caaa*3Y@ZU#{ zLw`WK96{@;Mz~txFmVvPth+@y+tP+LIyAx*?NA#KYqzGg4(YiBuq z8lNG)o2+!-`?7GGe>?Or8q<=Cqcq1qaiziPYG|-6wOHdeqN4?RIb36d7hoIO_2eN? z_}HK}_r_*@)F%P^u+lp`bFRRSLJ?9kxwK+uP4_p9qH z5xf_x)ru$zJ(;qaf$(j#Uhwf+Pj9*gHtS?;*VBZ;$m>Oap*LK57Kcv@_Gtx(EAM~UE5Gx7#Tgar-FWuF~FwX0&Jr45j3F~P8%fm=~Q;e zoSZMKCjRd2&(%pfE<+)p{ZD?GA=c}wOFXR|qV8kUV{{9MgV~S6Px=*kQ0Zu}PxOFJ z)6DktMbx}HVp|8!LK4^Z<$I-`fR(ZP(?8yi_dB^meq)QF>)|zliy*}6Gu&(rC$Nro zif3}OwaL^%fFYD4M=H}pI^Z7;KwV+tEiMULM4uG8V?s*!RgEu z`D>I8Ub9r9n4U&J*=opoLUSxQJtj1Xb=|)qFdUII~?d*TsP1t)s>-^4g zI=k?gYk?5@t<<) ztp}NQ@`MAaV-D9YbH8G=kxUiE1G_w*mxmsP#*3-}nM_JKyvu*d>0LHH2&B4yQyC+ z7hSC{50?kiLf^GPg)V8j(U@)74Sf95sPiN!d@wmRULe(=^`*hO^G4^OG)U zY!d`Cw^YI%XA5RLz)^k{p=YdZ0>wcc+mWipnOke!8@;On8q(fUlC@n4B_1qQ2G%Ki zOHDGIZZk8V-;UjBewrVz>2sr_#=tHasEmWdXmEUilTd~Z3ZH@X`Q!EtU?}vihw7sQ zvk8|+Y3iJ=GQ7!~v#RRf3SRDr4!RNy?lEHYaLb^YfoPEREg;tHaRdI*>c&HI_`fQv zwuYHD1yJtC=#%F6pK$aPoyynYGP|&;Z6iYyCd2Zld|GXKs_%ntwz*PK0ccmu-T$88 z0!Tn3HXcG!Y8!YDMTwYJgVOt)^%*&R)l6UIZ*8=i7PqaWCHS^w-IQr3_hD9bxrZy9 z4JMdBF+%rR&8`{G*%RY~dLil0(Yg@MMr=l)5Gq;*YD+_EQ0^DdHxn_6l#JnG5X?6D~7VOMst`8n7hm;M|e>Kfli54Prhu3Ae6!lh4`@NmT4T&#rBtF$xq zW1!*v46*8&ZCTZx4hJkA+ALu3@r{$?KD3Mv-{lvSuS6Z;CAUN6zJ=4&U)cg52KY#h z^3=-*pa51D8_%cKY^xZ*ER^F*tu&Q6sQpsoqYN7xX*2g@-6{5nluxQ-pP!Kg3PZcJ zLF;u;63}|ijb0vNuXD5jVt_5?jr=lcnI2FSp#~_=2(9A1CRTd3wknX6L;l`rVLxkX z20d~)fo%cVR4qtt1dR7q#dq*G*0(21vI$32m?#!jjgisy01?0Zh8JFQo&`b2Epc~P z@yPiGTLfD#gwk(JUdY86tDr1|sRG#$Lh)lx>nmX|{8px9!Q*%|v>wpFVCo=s2dIuHW4!)3J@q_pOU`H~$TGCimQOL(t~;&DJz+Hy1ca?; z0};;?=uuJ|fz^0#eqoI&rN2Y8X42VnoCL$!lK5{{$TGH$%mD7AXQjvVBY7kU#ZwqK zk4H^OaV^GuST(FyLFzIc^>&RC$K!LdDIAGWSI|hv>UF-V@c` zZ_ppSn}HQ-MtVoJS;`fK{B)92;d3~gpM+G(Wg1YkX`+&TM-;CLIJ`hqCT&bB%(g6> z*`J+x7q8&6JiOM9oBt}%x&CkkFw&P6Hn-jX=|dK>i%f_by$bDkYA;6y9%+#5*eu2L%kW7Dr3dj8LDYyhYsWR)3-n+Og z^zc|?_0gWSLRNldc}@2b2KOp|o;(}xf4uw!!9g9AF^R~Ht{Z3i+v3$)V8U95{!0D* zMP*0nu+o#xZAR|e`f3a$ktBC| zSUEf;MutA^+WktzlrPGZ6|&2H9}A#))-Xv75Bfg$;?Hx%)bpxvz414{(@r<01mt|o ze3#E^#I^ruO%R#cZRb8CpCC#ZlkOVz6+SLRTKBAL9YK*11I*q~%dCCT#onzG$#dSz z_`Q$j3726GMukVQ`(^e}4xF?;UPq$v+vbMjK)pDfaLA$jjSK-FOg29fDcm1(-qG*Z zoEIUF1mxxxLXGe-y1qEz2B<3`63B4jaQJ~hSmF!ILd}uRjxsa5qL%?f5X}i$J5(YU z;e67)FK>m^xopLjUL1bDYDir20V%hWKjJS24^EFA7#coTO{P~PiXyu|zYoSRX$_>s zt)GO$NW@29JiwNflG)x*lyp3%+;_<>N*$75nsXn)++my!;H4f4!f*08E3SanzhT@euc8rlPH5Ok8<<-TRsE)WD~M17i09pAfTyLLFV3$`?!o7}&_8~2Gx-yzA|G71eYyRyUb_%A9v1;~r9(W2RR}G(!qBeaC?eJq7QmN& zc=o{`tJ8Z^Gysm`Vw$dMdwus$rl3dU_ANkF-N1tL&B@!=Pgz{47)EH99LQ#A9By;@ z2b-x#247V31x8{_ZCv~a|DBd6wV_MMkLby5+>d_2=A1VL1jv6(pa0dK*J_Lttk`%S z%we1NLFEU4AbM{=w`NCjWMig8gmQdPWPowxfS&0cduS+X?oUlCz2TkhM41DPk1Mo3 z#2m<>$~%EJ#gn6E#a>qLSk5_Y;=^HFpmn_IQxA-Qup?qju<3P=J+ROLuBWxSbG0n*~;z#Q{NZA~cS4a&qEw%_JldEz`z^+oeKbq7{oal`cXeoG(}Q}XRs zWs#ie5gw{B8e*0TKeRTzE_VxOcw1(K@}?ahB>(%TPxr;l$c|z^0diIKR|iMlgJ#Fj zB0L;fg?T) z?H-OI^cRK$krRx51JR%0ZbWhfFLk##%~<}4VpaB}_tvxpXi0(H! zKV`sZ&40w$!MF0?zX$cTaq1)Dm2`9}UKXxob8V}>f);*s-YT03$71+X0*FoPkXW+U z&!y(e-T2ikB1e`v89%3{TOGk?a9#=9qHsNp{WN!FF>V4?1z#Gxf z=B42*zaXEge|a!lL8;y={T7uj5S2ZQ#l>m+*=VWJn}(LVrty910}NE*k)ftv-7c6m zZ`wZ9gNC;Ha)~g8KUYi^$A7N1?mm74l8@nUfkm9PfxU z?GHY22OnG`p*V^aGzaD*VkVGl7Dw&l&>jAmq`kgBf^d=Dg9zYjEBR~>^)=-XJPtm_ zV+rZM11bqY=(=LH)n=K?w}Fpq&CMJsLEn2W|3dGa+szj#jIp5}HGtBp7L9RtXpj+? z2FU)x%{Z-|oO`Gd#`9=TW~AWnrkPIyvA%vW)*es9f}6k6tFl(D~K|WgT zH$kMP_I}!Tx3s6nb4f)Ky$6=4Bi6X*V4NLfxEWYo!qG_S!WxDj6;o#CMfGNlpQW>*XJ?J4BcGZ;RCPnNzy?3HJbXgca5@p;fzH!IcB1# zi;AjLUEjh4>z5hX-)m>t)gArWd9T2VJl+f6OOp(@)w3EiPxb$Ql_F(iZ?}w8NcMJ1SxGm^$hr#I zdvo2Ztn3vcBOyul%Dncqa_v2?dr9Kv-f&&qdq2PT_xF!~JnqBwe!bq$ah~U#XHHQD z&S!}KkNV+pwc$&gL^1cR5oyX&+<;Xn9`e*Vga4 zF(t5(d${sPHU3{;{9*p->nU7@3VL#mB9&W7KP$8le9r7X-Lc|SPsr%`@Waabd*6Q6 z#oLt>&e8)CnrEdcxV-cMYaQ7SbPv)r9JdcDo;jy#v_h?FuGurf!%QD1_!x0ZHpvUL z*9F*o9Tvx}C44cuD*ve{?6ysMV(EVIY0TD%M?>iHga|J4bOs&tia$m4yWWE!5Ok_) zY(npfx0%={`Zt4888b~j;?^=+&q#a!(Tyr;zS%vjS%ONLyO4)gwXUeAG?UU4Ge+vT z_=h~~XQ7v%`c=ElpFKd=NCKk{g0m$++<|?{MH{I3$z~O6GR8i^cYWm22Jkp z1j)sQdVbQSOYU|6Sz-Gzu7-AxP)?d2xCSkQ5F^Zmo;ufW>YN$f@N)2@gBm`v5vDNn z;;$-Df+S((a(m0lo7#K=ueYT3hZ-hwJn^89#+6{JaF6G7uqw&RoVudFE^G|b!lDJq zQ3J;{p;b^rRq021tQ=r_sSO1Sy@DCG;=b@l3IDVZ1M33SRbOTlQ<;o~PT{|vw}%Y= z68WY9S31DcDucg{9jml(+B|w<_{!M1G55p(rKHr9HGtzzxZ#aXIB_-4bgsB8XH^%O z!6fN&Sow5m)Tdjod^e%XQ)chpnd$d>ks#S4C8oSz_>RhukqS-G%VH4&x6T>4`vhld zu121HE_vSC>66xvrj4Xr3|!)U`?pEs118PD863m~Qn09dL1sFfs0?=`ZLl%5Tttc- zHQv(xa_6&VsxCoku2@ttp`V#UE)r>K_w!2#*l;RCvTa!t^Y^*g5GXEesxdYs7aRHU zntZvIFW!2B`teDIs6nBgsi(y;_bKmS%KO1*^Um=Qlwxw%lx!{8E*|@g>_?t{k%l#YRIH^+fgUvki*>Bxh)TInCCx&*0B2{L$jipkT zMAv&eU-Q)reuQDHjJhQO*%4e^Z_+EhardTlwoU7M$)98pp(dv>v8Ar#t;d;M8P(S{a_`kgV;h03pnYDpvfo2_0~YsE8+y>?DL`>b!Z>T$4j zrbht@InK_V*M#ZIpFH~+6|JH>k6jB&!{)nSY6O<;{#{u2l7;d~_l=d51ouiUdtg;{jMw8%2pBECirBUh#D{Qk(E(3dH#ds4f|xT1!* zxDGXD-r(PDStllurne!&=l(?egqHy7om7|;j_h$Hxa*HuXTq>+PNp5mItal;3Og*? zV@D;l;|eUeGFK?p!XbN2S09qejJT@pLT0m+C$ae{WPP4S_FQ* z4-8J3Vfq{EAQx?6B*AmGLATP@eLR`;?lkiU&Ra9NBPz)s%18!d+2SZ_Ok_2njyfVk zzy1jeCPlX#?9O+2FJ3E{5tDDvuvNZkBXq9GH{YV^ftaD2->4ioSJ3qA8Lbz|lkM(H zq{jsJ@A9awB{SuTrF`pitgA&meLlZe-j_<2JsxBr!0ZIb$%OXqV{N6^mKFm%SHyjy z2bnV#-rmpD+~T*OCQx4ywke#u2IL$?5m9QbrcpSt&+6Zj>fu@ZrKWlvJu`lvzH&l( zVG|LAmjk{hFQKs6ThruBhCGL08}BI-5u6v&)Mz-iZ{xe>-|Y)H5Gc(T)*>oPsn}{T&r`ybTh_VCETVp{sGF*JgVvK0yRyGzQ87D z>p!K_ih(=Rde;H;#pyq~r3Zbdh-3hhM#dKk5?6wVw+ctp%r&T*g`dOq`V(m+xxem5 zuO{c+=p%g;@X)O7qnU3Spif(kcw+%K<+oZphJ&suvX5sthR$c^3t7Ak)3uI2cfrAB z$A+~jK+K#DC*&AZ{p~c+CV5+^sLU_trR1wp`lvj*k-D@|9s|vM=efp*H*wP`tzU7A z?U&ByV{1NVzG>0=O|M}&*9g7rVug%{=~r0&rin~fm34Nu=e{lLxLH>4;gpUAk>^a| zav)U#b386@(&SvzDudMSI-Ayki#E@68t*?3vu0Eb|H%gmYGwYg7~q`q!PoJGoQ=Wc zvuiMwxgg5t^uieO-KJNim!X z4w33pVB52Now(IG^8{P!{59z+N|=;F2@84jNRE_*t(24;N!WV;BkTPAfXTPl#97nd>VZ3~+V-Q@>q-$!Nca6zWRq6T0GQi7J>=ht z1Ul{xFVCD`?7Nf5sMwp=FU9d+Hn`EX_4)$GW=8mIkavzaL0;Eq_UqP-@gI64{TwR% z^zJF{W0d=Z?d#*^ z_$7IbqDMm|L!|)z&Bh>qAFFkVd~ApkNJ%_r{fW_3Cf6ZzpHt`{TIli~ObZ8L4jCM= z22`OuVc+EnGCy-PSb;-+#n*{H(J1-)a>w>ua(=)y&Xe%@jF7V)5zu^%r`5bs+kbS? zL@d~$b9&p|{l`;#@6eKyjwW$fRhoaK`fM*totikz2mk?H$-JIt`m{kLJLTdRSK}%` z|EQNr<46|avPHAMdEvZHopG@eJ?NS5Yg1FC zsCpC!qO}1vvr$XmocgIt9HuniaZ3>*L96)ohZJUBBky^Vg_j6S*wFb)_n;O>|59`Q zWDd~DDuSY)!6!t(MAY5^&R7x!Wl&-<5AVG4v>|?0U^TxsJ}dG%j%}+&*g@Qp9cq+a z?q#0J3+kLaT?gVx1-00d#z65V8)JE9E)jNSN?K+JnC~Rs%1xW>qXnlIac3q8$7r(p z@kXgd*9~flX4utG3!bp*7>NTP{oZk4Rz(minRlpTQuBdhi=^os_a}pv6~z<> ze)fOt`eUVM=9WoXuSDp(A=QH%r;+5K1~efNiHHf+#@>xxxsyE zcL@}&7za=;_2Sm)nGYIhn=J18(B%Mc&QSq3QdVNQ&iuQ0C2nzygzZWO9~`7fkKla>wdLX6lh64 zT(-_>&lnK6naAV>>&1(w6#FoVH6ijkyUJLyO9CG5Tz|1pd40%-ZOyJjq@*c=9alq^ zOvM`$mP!7Aq~HY($=Fj46C#RKP*cCGp+beGJ~kit)c5eqiWqlv^UzE9t~hU<$z1$- zykPY}xVK%5rCdzdzo^Vphw1t&_eT)ZQ#^nXdLnv&1OZGN7THMW2-|y$xSwEb%zWxA z;+xzUFIwUETupL-idY^ge+w2c75y> z7Lhp~_ny0cwxwxX${)Jv=<^G+sL~W|AY26?F?k|P?k@sm*bHvn~6M$$tO*V}rlJt&G4?Y@ipNNmc|)Jwo{&p5Xo9--#*D8}Ia!D#vdo5C>fy z?;r$YUO9yuN4vs~JJ8H?9t0PT9q78j~I`)#|*3!RlOcEGh8ns-v1HDR{1=peR z-e=N(MEJayihAwD$)4ZIZ~4ooF!QqPf4xeQVuEi9f4I5AU=08(K-t&`#!C{8NoM3* zxSCXec+`a4Lo&K#_v*w#*8cFy^qWtl{L`?fQ)e!WoIm*tp93|5Q9y-u8>lYo?zHmc zd=1G#*-6e6PjpCboZTC5R$fl%ald?cnJe32w>32kUu@D6?&5Ee09jojtS|18l*lD# zPoW`esEyZE8@762<`DmrPTWvlv$o3xDRinzdq`m<2Kb&l z2&eT6FiGP2z)xqRX_yQy;{1BQw!lmP`Bz6%S4;NYGtJ-guO7GBPS&lo$Lb<{i|V&2 z>_r%hZo~rp0JxqpVPEza`3=t9v6F~SY^>01N6p+VyWRpPrFocHe%wS9yc_-1S&k{% zGa{Tvk?hINXAHE-BDTFQF|vDa4yTRlGq>Z5^VVY-avja-${*1C9|P#N7_pg#Gc*Yx_aX@f$OM462Vr$zlOQ`28!#==@V?4|Ta5+oFa8A@eYqOnvGBe7&g9;D ztT3#Fwo@}}D@$XsA(Qgm5RKctqdJgrho-joZ1&|MtGmQh>~U}Ek~fXX|LmpFg<$of zzI_lm_&F~PH2X=SxFag)_hy0)T{e$NRC-j#r9V<3UniqlSd5J9OjI)(F z#4}=lWidY`x8F;6;wcHf*%|}6v82PqNVdLdD0ZWc`&Z}Y;i2$t-zQ_VFi!+#4)m_H za)mZmc>aa|q@sKF1-Rr?3lK{%bFy6dS8A4Uz3|*ro%}Sdf4DVdjkBwmOly&ryq=uV zcJm6u&d$s{{ov4_WWMUSf9gd9cjd3`%*dv-_%xqKzd7<#VVwr+1b3&&*D_}|JFMkN zEEiGW<5`5YrvmrzE3iP7c!slN(Ej$*I=_3r2a1M{&=i565uzMm_kx>UVTf0%C|qV< ze=86>UUWQMhNUi{`kr9|B1E6_?{`ZoQ9})V`U(~$=ZeGQwe2BVjNJ7DV|Klg#O1Gu zo+>D30(S$ooO14V)W4kid~Vc+-4y_9WGMuoE&-T2@wh);Tb*)ez7fLa(vmm3Vkpu3 zh_Ku{)%N*)kN7R2d_ZCL&OLVgN}(#Y%Y)h&Xg&pggu{Cdxg6lN`@TZ#z5U?c(H?T~M+Mb;a-6Z|yJ zVlEhvp=7D@zH|*&Dcg+&u+Nz=2yD?vxNmuP)-%%bB4Q09g&n9`5#?)nQ2Gi{Bs7a zMuPwGs7jtB#JBchmgm8pwxG|=i*03Y?`I4JBzHrYCFIQN1$ z`U&Ky4U4{HH_36`!DO$qh9k&99s$Zl>;8|fP9^!73+2I?JnZHVi?d(CO7^dhCFFiu z%-ss&a#5P0xlwKb>CpgY9>W!KK+-0A!b2|Xh={c}h~x65Cx51*4{E+p03!}Y9XPrz zKm7p?y;y{eiJFIy%#?Yym~xG28a`ev?0)?z*Hc$ zGaug|G zW2ttnm(&uT3(2jFN=MDYDjcpHO@#cE4X2f3VT!rc9qsQ(` zVn?I2D=KG_Fa~NT*f}DYlm^IvZ%{EwnL*lWFPk=_fv?1&Wx;HZn@o(dm6tI(>w9+ZYknoE^4aX!VuM( z@dZsu>~0#*==~YlQdpAppriOHOID|1erT{hi>tQ7>Hj$3KpE209Tpr(6ATF^nNTAs z5fvfZXW)Cy6Gt_P!I9Jk3m1FKLL&*M6D#AgJck3=`W^M6f&B$Ajj7_y9Qg2yE(tOk zRTmQVw3bj-wv|Q%r)U~(Kgv{$$%)jp5gjUxVTvPbp(fZdp=39O)6(uR@s`g;Sw#raL(fC*FcV7v%yDhPdE*xMp2 z+Y@S;`Svxkt=q`u${q9TP50>C>iBEQUlLxI)vOLw!Sp(t=DZ(x$31Eun*RO-(e}hS z%{Ld6M4h#w!L@0Ab6uhK;OzY6EH@r;KB}D>;*R1OB0?M>gCypLe02OX-RozI|vg zs3ZCnKLO`9Yrg38v?REAz_05(xrX46J!)Bk^S~_0p2XX8y8qFAxY6Pn_Na*TDoBjT z{hMRQ|6$Mv11B8c4*o^kGwTvva~Yws*)H<&xrM@TffKvKQNrjT{<}4NyIbJrkoAny z^?)kFR8GhIOJ7bNAc7u)aH^;O{>&1Fh8EN=yz0R97qZt8FJ>2iaWnT_ceQxh!F#pK z=XcoQ?=bt6`==Iq0(#sn6Mv)&oD)RKBlTE~O=o}cWN+YX>iD~reu0>qZ1ww2Q;G@g z{l^(Af0hEY;RV4rPmYW=f@ZQh9iND0g8J$0z0S86@wmw??x3|{DEgRZOqwED-yK3Z zKkNQvxg+ark4aE?wN&YkG^@8Mj^%a-PuCx}|ANAs@73TSv@2S;P76{yaJkbciq!lLaA;~vNR$!bJ$>*n z{i+ShOX%&r%U>U44&Gf!n4F%YzGYE_1Jv0bE;v1+7kD4uM!+uD&dLntVA;6Q5k!y$ zFI_duuqD0$?H*D!D9<+XMCxBS?Xnip>?n0f3=8OJ^qW6EAyjA2%|#}E=C@%g)kFKi zV!(eBXepW&RXv2vjo<`K?Q~VZI;+d6jXF<(Oqc0iGf%CwP5((R^CS2{gge=h+D?=C zV@!zZ7bx4>5kMy#Rg}ZD`5vNw0np<&W+OYZkA>yW|J)OSwvB8m9=R;Tdj2SRco zM}KwtaozR>{O~4CX#R)Y%17i?TR(F?(z5lbKJ!ZxE|8Nh_wOEwii4@FE&o%Xl8&;b zonLfEG}ZKjmL&U?d5ad;I0<{F+HpaX|IwBFPqlqrr_1^N%_gG`*}&kMzgX;Jh0Ua- z)N=0sM&KX||e5Ir&!Q1!0)fn`W4_H|t-PR;rGvgTcVmBl@A(9;nlP&rIGO%XgxBJCpuwip}dwVW}fv%9Kta*^C+5O>Hbi20W!*}?3WUAUz zI;BnkLiF2w+F~N{L4RKATZ&puUnv}2$d(S^OBY&=!w#91dc^i0M)P6ql8ls}Y%PBg zNWJ@KG{+nUWaf(;)K*!FYqdLIcL4Lg?K)YF2lvo~Rp=5e%lV_9dhV-s|AGo#t*aqBZ+@#YUnZfKRB&Hvh~a~IvF#DtR<6FB32wk_dUApB8b(g zKtQMo*1QTWCANZi>AlD}h~Sc;_!GbE_JoZiH^5A;vQ>6`IMsv|^&7ulPGqO~XnVG& zs44;ZmIdhsN`TV+N9V;B2W>L@Q-w;P$Y9@jOH4nEz4>~2`mT|EKK$>EmQYc8A%<}l z1Qc9rK~ePHt2t98?{_2l5%y5NqNu#t)uWoF4i#wyav-^@V-&MfoS#Q)>!YHEooxyMMHX3e1?XFu2RXv@toVOv^;Qw z?4TvsB{g#Wa+jL!MzVho4^X{do3o!*;y#a^Q?u}kJGx*Wi@SZl`)BxC4Gzpi2I=S6 z5#!#egZ`2&!sB=+DL^CB!)BjP~7KleAriVu7BLB`{UPHJ$eR z+z^XO!437H*>!7M<_tBv0)K0FKUF?l&8{7+#Gy@L&uzilawmIYaly)ZVM%l^&M@-cl;gpSh3e^2HY`1<&>z+5Z0lCM!f@M1VHh(<>}xd2{Rz_}yAqbMgCCYu z`k@y?!UyIadJN25YfA}J?UTjm!a=kdDB%GFAY^hl%mkvNm-1=sbNLE_f(=~^T3O=s zKv(w$9(dO5#f571PtzcsCXBXbBhvH?g;_1WRxg>pH^@v}`HxPkW~qk8q(D5zn5`cD z+>TbN2$1cUV+LF$MsjOja;r|IYCbw_gX)QL^>MHrNzC0G0Q6q9`JN=Io)$T}G z;mKUUNkAtQ(lE0pe$gowd+m4MiU{}-Ws+J3#$-YpobmL|5#gn->>+Fecgj7QiTiI> zim;C_d6ZW6{aB#Q7#ZNcC-ThD)~7A@!a9s1nKIokeYrq)saNRc zNxdOhhc*u-Jd{lVUDB(p4hinV4ZsD=v(Ttw#sDisOh0?FTl+X8~_o?MzV zP?3^$WUpm-YWBpeP)Tze)bB})l6n6(qkm%LQ-wp}IX-Rbe{@!7%Ycz8H$ADG%z~LF z3@dd?VtMJNUo7AV+$o4R6(Yi{GHHG?4%FHi#Lg*=)c~OiiM(kSlx7eTO-0j25Vf z@lH>p$GQGd7kR%=zLA43Ka+uvf|$CbLgKJR{Wb9|Ag-p5)4|$NH{Rd*zRIKjFXQJM z#xeV|()7i9OAIS=k^nc=Z69zx>EBPf>L$WTmcp>HQbY+{b;F#iE27Xp^CLq;V}JXG zqxKtKsU9=*tmnlAf6D)aE}-3ksgZR{@B1RE{+uG>Wa;EXHQu-)@j0f2B_d5gR)qEy zc>S^tmwC0@cT87w#}LPIp`=c0{-`=?1Km>tOnMsQ;;R7_R&3WLVov{Rz{~2bruZ^z zC-8t``BsuY)Vq?`10*RCQyI)#QHf+eS-A> zX9ye*eKhSjMrwX0Coc}KX6w=mpGR4($cgW@Tfo(%c5S#{zGhD~_q)@RI+~7xK8hQW z1o!KoZ}U{S-#Pci+EWHT?H6h}zb|(A_Qw>XK5v>l!$zL{N2lL5M{&5|DJ^fgz}{M}$)OP`HLZBYqF|7qD&v6- z^-(c+!n9rC@y~t06Bi-C>#0NgH??^Gb>QG63YI?A0Y$Cz?NudOlA$Iuf&8@(jIS*u zM9`s?j-EFxnwY0!A+ly7ar0{uM05;{-Bp6t8tyIhK~(km)+WgW%0YpUPpZgkdUaDc z+Q6iq-mJ&)HK0uI)QSnYQ&I(W%N!2=Y6}V05X#sy{9ZqHU;J;4ET~_}-6du0j_D=0 z;msfN3cTW(nfXUb9F-%_uZhzFOPtCe0c9(fiiItc&RMbeyS^%xd2Xnx*~*P+RofMt zdjCG)-L9>`rDFH0XNVhjN@P^N#hZp1mV$*wQ5Kr!O9E(Hvsk-MoJ_`&!yP zpWxb2)o)hHSrJ-UV^#wn%*SWNg9coH{xeP|e3irJm{V`DMGccW*eSsE42Wo1HYuMW z=XZGK^-dnoWqifHyrol!EkW>*Q;mZfroCfZE{S{P-b?pIu}mUw*L?kx6PE4Rmg#tH z^GgWdU-!4On%-Y_da443O4`~%{S54EM_N+#->+p&j$XVmKGoMB=8~KG&M~hi*NFFH zIR#++q5BIJ8|BfS8${o&zt|1*7(A-Ur|nC5g}Vid(ouhXi!NGMq_0WW^$WyTRQz12 z|HQdGOs41WK=JHNg`a^wQ#Q8768)uqFY4WlSqE()Cb3i3Y(Eg_cCFRd62nUtmpcy) zg)$vKM~yT3sUKI>oU_c%!;+Qz1Sq8<5q|>zxJIz9p?b~DkLO#g4(?iZOEDW2^pnu{ zZB765s%D@Kno^Bg#Dv&#QSHwKJiiy}Ifc^8N&78Ie8X9OOZ#yyt_8eZ6&A2l>Eb&R zG*RK{CcI#B(gfl{7i@qQ5E#c#oqo?!HWI4Oe>PFt!@4H zry2biW}esLr{-NfjS{A&zl0%AiXL@l%xzqF!fJ4OYB3FMDEZw+>L}!&FX0ehR}>Fq zWqf=#pBK{JXKDla4%vR#V0D4xA^xndu$1jSYN{2@xT_)pnmb&5Hm9Eu^4d_o{KCsO z)!vmq8q7?z&~sN1ZwmFw#TIwW=i3Y~{}k++pnWO?jNB{8ra*s+LsGwa{M`dU?kmU` zPQCM^SQnqO6T5;7+6YWgVehYPOCbb{mh zBZ5)T??^7N`+5wLZfbsG|4rkLrYkP$tdfoOw_FLg7GqvF{vH!b&D#NLoB2{qDJYb0 z@kfIo$&(rj2f;^*SQWLz2E#gA`fU-AcR#_k-9kmt=3jd$wL%nnt9c>EPR4}G3LH(i$@g?9kaJH}Cb!zm1NNvg5q`g_RDqG1rb0^zdCM zzxadsMa!+1)0)mm?sAW6)(3Ua(WKcRzsoV8J934&O2sZak>i(q@wA955sQ=4s^OQYcs+lWIljBxeFgdzpNTh%=k@LO3J% zKv7*v`MDcYN21d^en{JIf0)xU{|W`+s^GPu>1whE`T4N5&fQtKP)Ht_c{f|2a9U7| z!Ca&WI@0mI_oI)SMq#0?(s(8q=>HPHwM7&zF&a}QZW$!trp}hEdAr#(S8<<<47YIi zkG;nCS5)=Fn`1vFVSP7h1~n0Z*@7m6SmzA@=7bq$LHjP*Rr%pk2S=io`JzJd*n%87 zNrjm!KY|FIO^u=53NZqBEYN%Nhg6XDR5gA~B@AAC8FFz-}Xsn4agcJ~C^dpL$# zyRT8*DGi!tX9BckfVUIf2uWNz?nS=?j>6+Wu4R_vmMHsBK`?>Y(H^6$r3?Q+Lm>%1 z`*>Xf=xHMXh00wgMG~Z6Ue6GI^|YzbSSCc!UC8M?bvGL z^{f7eMOYxNvH8 zgPVnzfSM^s)=%E%!o(JUN}_3T@sWI7f8e0&o97^VIRwK+S;T$b zl43XioG?QH&mKXNKm=3Ja`@93OybjdiZ4zk;-N2dZBzW_$yJfb&zLYerkcZaz&Gz4 z*_32Q7ABlw;-X3-T~B3_e9-DQ)|*$^b65vus2v zA`cTPy9*^|93vF^vfBzM2#==tbDU_B{o^+u(h~n|;=SFdx5ryHnsQX z6>KWX*2(g_-_p{J-14D5E$1KFUh?Yip14m9=pt7KT#{}MON^m^3rESCq}=Awv)s(M zUoSE2?8U8Lp>+|#iWC52HlfQ>*yr;C5CCA0v!f$}%iHA#BpTViK|O|h4ql&=XY`3G zoF&leDgkiG3gK-H_{LjNOSEt99Gk+LD}96V{5Y6Et;V&o@Sue46gzyVi`uKEdNAn)2GNy9`VUfSuUETEf z<34GshA#j!4?r?!GlM@w$0Hg=+O>#GS~+pg!c`qF-(^^S8u^v6{7J;_8G_6XM6+gU ztTx^6)4=L@0%uR*P2z=nnr(%xjLT(N2lF1ekC}0T?tk%;PbM|x97GB>BChBV2J@n> zc$dG>^%S6TD4lPz%rlv~3AM;1=hA{`7l1d53(@lk>0*2TsD?WP^qjB~EN&=soFL1? z`^tBiL-`+qnc%((c9kVxZ^2(Y~#L|BUmFB{mg%@V;9HUO9cTI(4ctGB~5)HPFFk8DKAA52lKl!r!nuN z7w7M4y{mHh12VhhZ+HEeH_beb(#Cmtz8eoET@huVUcAq6Qigz!OV zoyuU9_dplN#A|YASy%oNPlG5=TeIcsfV>N8^d9Le`nN7{{!4|?;IwJPm8SJKU}1{w zhL+vHUX!t;Md6ZekL~vi_7&D>5$!AzsxLf376<8LV<)pcD_oQE=KQU&NZt2gGJAK39kh| zY8-oZk0Zo^Zv;q}8l3xN7rjZp$(e+b4aQhWf^1)D({vz=c+{Y;A8Zyq9j(o7lR#K;WV?)Sk7wSz4%@%#|bVAZ$H{%z%tZlbv+bGLeyPbkTw8bhN=vKK8Gu+` zU;sX1GXTsq73-|zF)|f9ssa$+ydkZL9As<#bUKc^Vp9I<8IZuFH?tquhKtD8 z7%3c6;3Zy^`Fe94YMoWE=naj(%Xj0a@;|Lfa=GP$RJka&!a4d_t-O1cla?08GQI&* zLm^A*H|fvm+iP`JHn5xM`aSGpVW9ppaFSQ{V-3seou{akkxQP?e$H+nZW>6$TIQEF z*Qd5iKT)#~_S4Q!n7tsh?c1|IRo!nP>BacU9i8FqdlCx#*O#fWnlfhrFp<;^i~dE$ zPC?v_4;h9SkkAJmi7|kJmnu~cp3S}csb+OtIJ^pR75GS(9DJ&XU?jWrE5iJWuu(6F zy+bZSIk(!CH))um%(EkOZaNj0aPOO+>RC!hq&xLaAd3QIuJNou%Df@=Ke{J{@|h2J z)A|mtow5(%p-~`$C150e9zKg?%fa$S$>2B1xKGwuQ-RsN$am5vY!stF#z7eIKRW3< z)>|HYo3~$Bl3x0PUg;@)RoNFiLX!-smD;@UrK0mN8RGhe(!T=rBh3QS$LT#kCXO!B z|7`lersG#LIZ?^lbZA;yhnF@OS5I-LEF&-lV8T;mB4DG8SW^CTY&soiv`=RgqKFnC zKMT6)Rjj|XVA^Z*@Bx=Yl2FBoA^K<-IPxGOTR$K)KSnmk;e{*VQ*cExo}h0|;VYAM! z^ypNNgjv-7b!T?}RIGh^*Uxu1MJn&^-+(N~+x)o=Lpy~{mMuTCJu)-VR!z57^umt$ zcF41@*RS6!k{hQJwx0UVkYi?=af!5K-YBwW&QQMbigk8ujJJ0QI^cX==UC#tomkRUzPqx zh2YNYpCbWBox03v(OBs2_=7N}O!Rsnn06ZT!=9e*{u19m4fDp&C+XbUoRk^+zCUX( zpDves#H#j;({a;^kpzgb%9$XEnVQy^uO4d0FgGSh!{IvIb zg?e`tG87)0MZEcNwY6JSH1<6v`Ow>+9eoOBZh(y*4*EWVu>2rsv6(*e z)ZmZ1CzlU@e)N>*#b&mkrC8Fibp2fe+&%fRv5?CQhLTN+)kdyfN@D4oW;TD(ZvVe3 zApnOVa~#8_ zA36C#h|z{jO+1aB*4MULl%Or4FSWQUqW*8nNcd(_C92$!c4{&)rq@H!XiMEXCOJ|w z5N;5Fn}@Pq_B@X>C0?ZB7u$h_en-Pj*-HbKTWk7et~Wkx;^WV~7I*x%6=$ptcC!|m zt_&XK48{SondK5MT!v1`)g74C(x1pUF(C4fiQYbQozOg{V=VOZ6OjPtwVB366e zk$Jwwr>Vb%xuVf4nalo`KUJ321H5o-Z;ER7`-VDHF!&2aoU6<4j?hpaL;h*a7&vI&kFY)Mr5nA+sJ zgztXUR@KfK|Gqg?%XeJe;s~fyFU(PM0BaH`!Blq9*?<@^zc-25KSyyV{ImYOrZTN4 z)#{mCh8=tuZ1UyTdHz`u-Q8H$Rt@(hH&&iApXhMkzz%?$755c5^qXp# zC)0oFS@ZeMFnAp4l{dyr&+^TD`ScfITEvdPEQ1!x2Y8Mhx(ijwIfT=l6SMSJUCFA0 z43C81uaO$s5{RB^Fh}DrKrL)`rbCwM_ldi)#-cNBZTRS*Pk6xaw*qtl)Q13(#c*uE z(`A5}k=?6bkTbjC*QPgS72AKq_a=tgWA)8^Grq@V+28Nso*Sty*?OhHp5)x*gK!y_ zHFbW(p?|VP(E*M5$!MgpV#twmoqKIIz zzj*mnMj8ALz@Lj^WvbrkHq37Q=xTZF+cMg^cGve<-wHryUrmV#Y1|Gtoind<{<0gi z3s_mGo3}fSe5mn!7IFgU6?(X*g$B<)!@p-t&{+Rx`_f<3vfqceBb%Vj3NQq{hVR}; zeL4k&{8(a>{Mq7kt`=e@c1la506{0J5a}%Ay*GytM7~A>gLc+x%joQ59c1&IOiuL^ z)R|^+IEDdi*K{@jn1M3^TPp5KuM-MrXee8abEc0g-t%H<$I(d%P#EVx`4O1a^@VU$ zyl(`iz-SQ363BD$E$a5lJtpw#HFoRinkSIDtVi-zCDlMX_4Ws%M-#5$ny0lN39P?j z4bi|}Od8xb6cKO9dGzwe-HAt2Um>?m{((LU3w}#D1tx%l0E-AdVaGWQ^TZfKAI(#= zw8@KmUQ=7w^Hf~6k_+Ya%qHh2aAMb@pd&~;FboD{GNy#r#lgJ2H3@cCiDq5c$ug{w z$6kpzbK1xgUo`hg#CKXRuy+cv_|Y-~(X+-$?!%0Z>PaXet^g)I(bwC)&s7T+MrdqW zR6#D~dvlIuxk|o9d>(AaCW7ONE(2|IvL3MBbgFTL9n23 zWzsHR2eR}alGnm!R+~G-`w^1JG8Pumw~SUA9TRPMo(mcA?~J8){3>V+yM;xQZv(4` z(D#9~%sYYQR44ZkQ*jq>3DF61lpxY*o3}!oz!AG(R*$As-F031aA2(N&XL z*o|@A%RRew778CLx{7dOi<+}zCaay9QtUbisqbuD4?@5%+Ejw(*6g)kCcN6j+=S8a zta8J{HCsibKg8^E1TKQJC-`7MW<1MTU}QM?iy_0WYYwR!pvamv$kH+G^6uGf`0Sc0 zL1z68#jwhyP-NP}%j*l|s;l=)U*VN#z3cV@2Ezu$jGO86@@af&zLZwVOXBAXWl=p$zR>{4jV36c;uJ*8#Na)3+7MZ(@ zAmZL&OMXV82ez!T9z5Z^0nAMm!GP&3O$2s>(AmLLC`cHLd-=(7FfqnJ=957VJ?)&$ zc8cQehc6ApFNtiqRXcy4g>de>@jQ$Ye=wVq10lT;^7i~UD8^kj?9h9qL;$6L2~%y(KzyL|5K$sgr5m3Y|oa`$I;A^Wxk-W~V9 z`i$4*W}C-9(G!p8WKgaV?yl)WG`hhx=Nk9f$U!rIcw6K{pXwpI|YUoQ5M5|PZVf9Xp(4=ueMFIpLI`4)60!vJyK1ur13n1?{`5ejpN z4LFfBB^D)1$QLWd44zr<*{F!Jg3GnBqL=PnT3IRNWjuY5`edrn-BPiW5m>})tSoPK zttnbpAXwFm&hZExHs`;mds%t5Fg#c`mGV%$eJ1d$HV@fNG4u=1Si?Gs@7bWCm-X?} zi#8eT&^PIlZZvs-6k61flZQIOSN+o4bTM1Yv3aSUthL8ZM6Hl1& zhH;RvkzspWO~Hj-Mb7K0LmIEV0nmtg73?gV5+;kkNRZr+9K@eD*s3LpM7dX}i=Dq# zkjC^G*JdCNC9{~zvdwIkycjeFx$m?TzrRCRt((}K+h3l49n3i>hqnWNalgneznLUt ze^{BLKK)h1+-92$Af!d}_iN!GrH`qA`)~q}}c)9on#tNVk`E$xG z6-L_Da6RoEwE^GSHFbk4azaEjjw)51A}};w7G9VyTc$zB45_Iou6A;M*mu^ zy3ApxE!wn#(U%_-@+Ku~_IB(wNB^iSl;~%lTAZ9rjfla?1@>WF-c)iF9YwxnUpFIB`8KW4~ zjKWou;8&==+0A@AK?jnuiX5s3^ITHt;;Xv`ShIFh*IJD zYht&3hZxHc?$Bln3cLHpLv3NAWWQ`2O@VOywo%H=eY9+D%i6^gP)Eu2I*8M;s$-EK zAn(BSIf;9pKlY0V)OvG-=opq7+1mB<%iL*}(_0kXyn0D2p>IL*n_L#ZI6Maa6L90L ziB^ZiDXz!Tz+_!dg8D`K$_NbEOfl}d0gFtUAWrk^9p*TRkD8HSBzKm%Zr$5A7D>VXf_zWU^sjZ^2{tO3i^K>U57u_-~YcNWM*$yAw`Jn zb(=xmia&*FblpwV7mT8B~vG)^8X8ocP0} zGn=i202H%4KGHD=Rh(njcLRr7-KZ;b5ASBgUKf&Jf4!D@o99$nefRk6$Qf0bTU#NJ!rR1qfveJSymEX zzFo(w8B?&8Z5u6-KbZEgU98|jWLfw%=04y8!qMzEU|=JW&`R(}@|`88d7okVocII( zGt$P8VQJWdc5^%X_WrxGlvHa4N)p1_FLc0R%h+hVevhm+TwSm@cTwwD|J`U5>pf)S z?8xR*2fSYw{ffH7!GY7kqR6K%LxH@|27T2?ZVX}6jKKc9+EEfmvszoTcE@Hhk06-D zxBl@Oh)`D+aL0AFfART6l(O=z8cDfr{($3L(fXa4ZvU^*N0|+IJ{{>Hm3IJE?TCU` zW~4B1%l3E0xNmu*E@P?KYCr=ud9T0UX6PN@14#{+2FNra^d|YL3yl`d@>yL zeey)c+F4Zc;635C-KZ8Gaou(O@xpxA zLNCJaNd;}6YOA3RaW|0uRk}8pe#~&HK?sd#YgWyP)<*=D%jIE8aLEH#$pkkqEf3gy z&f}a;@#xDe$`$u(E-I&E-Bb=N9o6xR%z_v4=Y<`pPl9}-8r|ME+lzNpzZ`n-Wp2_j z`ebpCGRx&N=GDRNf%0c{tBQ|=YwHrcb>e@-Vwf)E3CRRbGSC9h49?wNW+e-?Gc~Om z-yMW`%McXOw>)$UJe#jS9HHdcxAjn5SSvPvuW^@@g~TLf@!(g=phO*9&$j>!lmYq( z%gz2NXv5=GU*hizeX%SW&{_*p4O-*3cZebnqQOKY)*Tw{dg(f=;9U=(u_c-!y|>ld zp;PE86fhpvhUXUfN3~uf_h*6iqn24_TZiROST=gK-NNdy<)-lwPHXabU{kxQ3XF1SWN^|!7GF?qm5-TRS@P$!76Bny^R$E-5;E&7cQyBs~oDZ)E1Wl6JAar=x3qj?8 zS$X>6&pK-EnZ#I4W9RYhU4L@(}tpDqiI- zZ*7cBlhF!<%|i2~%s{)cP=THY^WDPTeJgWUq@$|9*Ix#i`jfLu25y5M3KCM+C@=i> zt$;ugQ;`ZQToYuVg&z7@*=d3@DS&?+FcS!An?JPgBSQX2obcb=Fx4>P$gKzz<$f&# zsM!H9LZ5xFo&l}61j?L%IQplUcZw%w1pwR(v`oA&_j~=>*|2Y($1}}e+V;wPeN-R3 zV<)%zz~Yr$BduC%<}4@wULE(=ZQ@O0S?}48{JFL%%w77AsWYtH)l#_OCBUxXlCAAa z%`VIzD+y2>PDAoN>XwAYPWT+^Cu``{WoP)^QaVBcUo+)x{>~fsIb`!M(C!Vd&dqh! zyC*M!pS3X9TG^5zyNdqZB;F1}xkxA3ZaFl|84b zF5MaUzUb|=P(2P&eAnU5zsU#ntP(yCSuR+ZU;Loh&8i`GTmFZ60ylK&dGOf>Ql$n+ zEOLIueP22UKW@-E_I6CNuTJH0sa}!mS!8tQ-C>?r_O@Y|SQbJ6;UVxzGbAP(T6ttM z2Ux&9Vo_1e)^2$MG#$MJlVkspferp{o{{qf(_;bLF5u9@%tK-U^gW-zj_8FjHFMyM zOh1;n!(ph17Iaf&%0>52*|t*OVlk@kxxTQCdsW}}5`l^awsrk^W-{#x!5Ptc-37vO z_uWVrB+TU9SYZ@VWxsMvX0-e|2%CxYw^MFchc%F*(U=w};N0G8l+&ljFL#X*eeu?A zoYH$}mVx787&rI4d!V;0^Hb3;b{`~qWXu9c7II170YNbRihdi4-Cz7g zAg$rCMe8(0de4&-tBY$OzT|)Qsv|-tRHnzO82tzcN2|R5H@Sp}R%RSHUVa4BRwL0bwV`@e|EJ=cy z;7`jfyX}$kQxSGS(qCfDjjt}~y-|MS^?_~oshW5}_Ki;^4d@`d6Yn!XY#l;HUWW47 zbQ4WinxsQ7pNvK^EQz-2nx_gAp^h64dZFT<9MFCcM}WXkfMJ+Fv5vpQZ{whr_=rG- z>QsvtMRj!|zQ=C|1tUJwjJ3jmFLeE{2)eSc2RY~04h4+Y6a-tiFSfAvWHdg_&vvc& zHLp~@>JLrMbCc0ts_UGhpJX-bZ|EIEr^(qqw#Ck8>G3JScE!#{LjF>c`Q~p@^dFTs zPz6OFRhTu#Xyxn}#=c0Hfno0Y9uXm=OgN=fF)ii(WixnAktuNVe(Fo_ zt)HzUAxk5=wejQ6t7^vI89d4}8NI9hBT)PUsEj|1D)EB%_e4tJd2l|^Lf zZ{;dW{-rQ))Qo-?*Hc)cS4S4gM38OI?QBLhAz{?|)5WESG*0RJDPO15oV^``*I+4< zURbG{Rgb)Cv6tepR~F4e{QD^Le1)ofC=*}hd-aL<*wE0RICT0&5_rFV(3!g zZ5(8!pyfAfz!ooJGD&*S|S+ z2yEKmU*8bZg$wgn)z)~v3I_x=Y^Q&8xCRh9f?a1z;p~x3`R{Vejp!KFnfbPszqvvQp=QS1imEn0jyczf{ROwdWe@ zTTI;Ef@uhK*M4|r7kzPf)<7z49A*rD4>DVglr6iA!j&q&?vgcdcN-)*nv@-)-YPG8t0w(Y ziLJ_F-|QvYt-8;_$aGZ%2l09O5dq?BTNaHk1z4j8Fl#4%4S54>z7KYRBmr%8d+s@axwIb%}jf z=O`+=FR;`*-b#%HhqQ9w!5t9#|D3UU*tE_?>JG{K&&JDMikSS>tbYmG=`B$-c>^rp zX{#TU^&j*D!~E`JKIkJ|>Ob%c`lD3z4mQ0^SiCNDC6#Y>)Or6y(8klfD{@Bz7Sef%sb-}%b6-*1tf z_vcGui8p+W6Wg!H<+tw2ka;hM|1e7)`_aU{x{=3_Av@%c@%hQC8h>d<22|~s{AKL( zgn7r+FhDG^@90C|+k()!O?UnUU{ffwf5)I%$ic-;sLGCn+`K2KBWde#*c`%(8U_&T z7=SJ^p--4G?VX0uktJ+)6wy`SNGal?#gd5BCF4BkCwWPp$Dz$Qkwz*S5@mv}k>fjFYS7QY1%&N!9SMU$TnsIR_l~i?8Qm$*V@`-6m3V&UhHIy8#-1HDNB8tHQrCEsY zt_5n(9y?8@W5GhK6ILOir-O_3YCiUbpkWMQd0#b=PDT0-cy?|=LDP7Ke`TuWnNsAi zm-g}Qm?s%Savt=R?C82YVSHDZO_DeMX47NiIg`v`>>KZ4(xl7q}FpMA!?Qb1qx;mhIr zbh`NHHCv}&633M}9ln(6M0B$!Ta_S3JS2~K7IlWjI}?oIa8f>?T!geE6#x2+gjba+ zp3i*|clD8Xj#bT_Czl>r50nk&EU1`r1TrxVZRJ?&fDJ8xtfGfShn!G0IE$hkkUz}b zF4&?!*2t*ZOJ-_F<*Cl*!rPptgrbs*9?b$BvW&(kqV!7B#!bS*(Stwwm-BDmAZ2Wf zS5aXQs`rb`KtfH78V|-&fL^~Qm3+Cg+9Mx5M?293pia_Hjm5B~hAI{&e~Ht$!@U|; z0F&JTh@yo5f!rap5Ur_Z;8U34sS9YJ>d=!&^UycA^s-8Y4H6k=*YnET;vZYS7+EpS$AgDu)wU2osS`HI1h!} zDKlIePZzj{vk3Um$OMH8Y*TN$?n#pA1u)|AUjElqW@5Z7AmPVCM^ut0sc3SsTA8x6!Q{l*ayoOp@Vef0t? zsv}DNR!bu`etWWPY{i&L;aH2-RwydlTPK{5a+&1t^528Soo!Q z$>x__H5I&u_bDF!Sg%z+a?QP9i&eRF}w+&6w!%~(^i>88C%of@FkpuoY_6x-eBv(LDv@<}DtkPqm}{f+E0mnG?O z=>uLq%R%+q-SV5++(u_nj=Fn^aF`0K=U`NmicEqUvzYU0nTB*t+MU)^4C_n_XD?ml$UK{Yao?wSQZ6j(ESYZzORXR2>pzS>m)DlW)c&rl3F+0Zdm6Gto6FM8 z-~uv!3cC7|8brzAAV*()Zv>Ij9@*6(@M`O}OVpHX8zwVdGlqt7net{~{Db>{!G#vd zeC^63YG8H;Yv)w9{LvKLT!mJ;*2H}axd7rE)~jF+}WH>0yo2J=mR9B-xXSqE_AIil&be4 zdKx|I<8@d}#!MV>*#O~A1fH_?I0n@P#5vl5hgcIRkc1tLwoRB5{2#~w+frVzOj|QwEHBOA zQY_3Ya-Z{vKA}k@SV@TZBbr={#zaA|2LDJk2nuufU3_l2mLEaa|7M4TwV`>Wd9!Ze zE#ZWh^Go`TNo#oQf_r%>LO>@-JM&fkpp*$>c#wKw4U`2_@sCpTqFDFsey>PN(eoj^p=hIdL%q4F&izVvXKYU-?cejf0m z6(VV0nl1*8t3JK^(5mTe_^FaSc6r|t44n00Pzr=N@eSS_dmtSps4}|uEX;Tlk|o zq)Su!h7zml=NpnW&(n@*QxGo`BivWoFNWZ{_zS{o@OB-q`P1cj%ybngZv)02l&o4m)*pTUT@c9v^BWhf`CcmiypFBu z>JuyP)HgrCf#lBj*}!Fgr8mBrWkn3T84HJD(Oq})+DSj*TAqwUb(d+W42S>P%w5Ym z4``bfYwdg)#kgBUOn4caaxY!~JGz9=gzzcA9m)oui-FAPu4Ko+?-a~vM)wFPqmWe+m3!`5EvlG~NDP29u5q6K? zQEbSY=%sM~;}O|s3tIV~gZvFpeF!(kNj0qn-(S5xDwRJjM>6TFsQ&(H&+Z-fm4C~( z%i=u~+lLW8a9=#C1V3Uv=|eKvqwlYemWN0-3w^FY{iY)6h_$#zv~}x#OM~)Be>w*A zeX0}91|=?BTt*|mU|fpSmQl2WFYae1ALyW#neoEzMAkRsYg|z`@Hx2XWrK*$)Hi%h zGpsw>)V(5QzmNK)Mt&b`I)P4C(Ra~rM?#mGt6eqR=Yr0XnkUpC*oYUcA@n}FNQKRp z-@YR!9zBcVzcR!n943+oo!{L1M*t9%c8%6sa0pf}lmLdiVbvNB!rX*oIs-#BQhx2Q z)H00ryLuJbf6o3Y>;4i0ngQB))2Flq)UDSMsqIV|InHy4n4Im}K#eH-E0z{>mN$DD zOT}}HS*SrkkAteo)5*RbKepY(`MKiltQ+IaI(f4&74;$0IiI07X7+mVkOE~YU*WkT z{aYKL{*QlxN#vAIb_)ka`cG6~VXw8Xwp_k`B_1W)&p2>RQpAWoy7R_FEX&BmgzA^X zkk|!mFaN70e;OsKx1L!wrPkm7lJr-l$@KRLDmHlGUS7Z0wQ7koXM60QpJQ5~BB^V` zH5rh_q(3k#@S)c2otjGsuzw#QMuAN@g~))fASl4n(+A7_9~-}bJq^oS7|FMJt6h@4 z62GdT=35VaM&KjUtzoasuO4<<1NU9Mag#OU2|1lNR7iodtjdM?Q?>hT=c5ch9SP6K zCTPsp>}oEeY~lVS7S&}@vu*(m^?}u53mT7-itZl#{zncZzY+?mzXl{`hK}EAVuU<(e$(-@XiW*F zVQBF8ppZs1XVALmfd7+N-B^84{XuTx*MI(7G>{J{&tx5{D+Zm&(-OhsC;H#M280$o z`1#%E_oi0PfImVrp7ZmO|DP9rCh5_ysU^a9dyvmI$93-IO}`s$cZeL*6^U^98LuOP zrI|u2qMcEA3G|*aK`glG85$o2?grvKJ*a_L&s3=?E}nq}oBx4&n;nJu9;?RhC=I^P z{Qg(-nQC@vEyAbYn59YPglFV8Djm?@Fwcjc>5~%QH`FjEWb>#guav!@kl9LgllFn7 zQmPvMxoPd)JAA8)hsQRZtcY}3#w+oiq49@;`78P%Rpy94Syc7R+zFlgO-49mZj3!fnX0LfPj zD;81%jspbk&{$r_jzcPE&KJL2mISdF@>py1BJIGSnr*JBn$%45R6oeO8&QR9=SMIi z1}>RH5voKpAUB=R`S%(zxM*umFek_%d1uZh!IfR6)9qZUX*B<0)83HcSTpc7V$i?0 z(?$@t87{v}6h2&?$=hF1888vpbS?D-0+6BU}pT7#ADIHblS z+ge$}(#`hd@bGF`#k+d}j^6R+QFgmV;zuq$(R4kURoL84qb1#6c)d*%d_bA@d|tLz z+F;1P#)I^U4W4Uj8}oq6TOy@CV^u%QAj5iGQY|R=4tP6IiN(4nw`s1S6E{8hCYZCO zW1hEw>q0%3-=icS5y=d9wBSy%V2$UIePqUw5Xk_Rnii`P-p4(x5> zF{)et8c~XrPZq#utbn6WC1&N+wQnxYb$U$ICCYixfF&3Q9^b~qPXcLB+Zbsex_u;} z*&7i1Msx-`TzNrO!-&z=E}Zo4%J63e&I@2Ts-#aQJ44~adz?-;-U>CQk+?n zzG&Qr2jIfLdrTcKyDU5WJ^9W9j6WNbysiViA;Jl=cEI@z1=PJ6=o&z3vyh%& z&WB9?eg;^=3sTg|2(@{$PLAa>WDxD-I=$KvJ0E=3kF3QptCw#1b=cY^07+zro!tQn z>;$mA-4NDt%|whoM`T~sxKNgw^$>E#VWEWheBts9IvE*#w5@V0QT-rIj+rXwXYE@` zCic(P`ksGHm(g{Kd;bIF>EkR25Af2qI2t{yNsQasWo;d5SM&71n!?$hb;bDe=NVcR zmMm}R=Vg{=EvYg;SEo8nOI0UBT96f$!C$+H7nU{MW&jNP>ayaEHvVt~o^G^Mi_5#tJ?C zuU{#hc!ch>3CNsnenPsse?)ST>EQ^x`6|iqeC6rV@AJAj!DRn%-P@f3evh~hSY8Rs zuRhn@Z+@2Zwb%uy*Dl;E!AY;=pAM%*!UamVrP&%Qk~Fv}r^SF~0#vgY688RYzr9y7 z*U{ORO^vVR17Fq?@5Si#t@ymzAY(M^`JyoE;9fZsa!H{M?4D($xyY8Ew9uu26|aw+ z=l2n==()L}Yi_NMz4Y0e27^8U#oCf9Om-r!PX$~o8KsV2B}48-G-btDPln~!X68r= z3;N-77N&=8TkUPsqD)?mHs9xH&^es`^TkVegy;MeWjOwRT+S1H!{gpBC5x`{eMftp zZ}+owgcGev`AgZ3oC_*1#{FFO^V#E-hZoRiPipAK#8dmIC=nPQsr+ zGd4l*%W14|UpONN88Y$&n3OaoSLX^^f{XfZI9q>CK8nBUr_wLU-bTs4)5Tq)h2Wd>UJOen&fQXt>`!-(l!@X#U%X zjjoUU&+u?P*R*o^Yc`OZi*~hjBXprWms7f2d{@$>w6{-+|8hR{Pw5v!6gEncUKnx3N;OC1Z z3qlL5ot8MGLKb$syZTv~pNfEn<2zb^kum{IUCg43wwf{Soqnz}=-Qic(|<`mI}D#l zqdO|o&43&dRXuXmI{QO*<#Ol>J`5*GQKwycW6?G*v1j|MhZ$R@W8JOR+^eZ&vunoX z^XiWzA^&A85b5Sp8<4h+<<(}#8{+4ed0+q8#=;jeJ!lZHbqE8V`7DN1+pJrH57{`j z!1EAPtrmH%=BfT{n0i3Pqx{dWoT7bB`_KJ!;8+9z^a{E3h$vh92*Cs&?HusiV zR~S5{Vj!l+@bhHL8M@u9wUiTdZyFwrD{C(5h44+(59uTF^%*UtC9{QN#X9 z$#DsI*|8%#a(@j?xi!}uX8FqO6IV=f*TB8rEf3nu>Gx7EDTObzqv;i7KB#1pYc664 zx8Y8I%TE`Db*m@#H^+Q-oyvtM+TJFn-S*7-B!IRuoq<&Mb}in=i~tN0uYa$}z3Ptn zJztaF8z`v_4J!j?!=bidS=gRzsg}H|Ahq4IXQt}Aod|WTeyqtEgvLLkv-J+l^vEqN zZqEHa z#z#B%uhw)DHzeM_GSu7%$JFpyx0b&Q z5=_|%bg_3mH}@qi#q6G zIuZRJcvqKQh3@?5mkVe6>ysUqB@`#ak5@?dLci~eD%Hh-bk`zY|j8Q^&XZwr)!;M)nVh(TnPl_Dc9XcdTXl4~&$)Jt^ss7sFm z#@}qGD4#!ClGX1w(20;}DAphW04Y&T*`1dT=psDyNuyNa7J|7Z=+*7zwxfUf$)Hoo z;UMtde{NO;sR*Go0$Y^^XP_c@sSZR^4^7`VCTjmN(XdMHy;WaQC;9IEU*Ev&5+oZM zv*!0#>g{h*3Yq?~-@Qc!m5~@qjiJnItYg%j{3i?e?azUx?Q`fJfXx>_B(nE*RcssX zqIuMUZN0_5r0Yc$4#En$3aKcrHvVGCJepM!fSp6mo&c*s2GNIPl&Wrd-0PcO*dxvU zIHU(h%rM#|A0FwKfXB2b4sIqz@(;&b6_ zq&$fiF$~5&fzBwN1;^-3h~a}3yR$hS#5A7Uz&p$+2IdR6>NM|4oErWabH?4xbKAAP zYoNe>TOwNzwko6iDIdEP%%P@Yx$_dc91g#aAxR0a0db6fiPCwRA6e)1Yjpi5AAlHy z1VC5NLckk=tWAi3*rR8bSEWO$6C!zmu-W_grWXn->R&2`MZ1SH`iedNUbq;8?XEL~ zy^5O=`5DUYT*m^750{{JtnH>-5;blNNAepRn9Qu8n^b~a5-d3AGm>VdQ2#tS%0JK)^ z5aio^$eA)J4Z%me5fGoVI`huZ)os6R;ry;SF{KCM2mbn!`AyLDw4x3F-$NkD)w*T$ zBxu-o*!=FHXpLrl4dbNUm$*JAy$5O=D7IKP)91HWe&!y6yTty##Bd#s#6u*{V;~N$ zCem?B>|wg3XnC2P(OZGRnVGsDv#wWYq+k>FrU7{zJ*f$a$!Zl&?wAvcRC`#krBEkm zJssw=>sw!u?A)#y@|=6b;OoG>Q`8B9VzTbWIzmaK26w)1P5_e!mjUN^czGFckCGid z-8Yz+pL3b=EaffrVhOwchuXa5t1Pas`<2YVvvJdFE0O9sg zMtFsnC$sq1zN~1i%gtSI_Esi~eT>lsZRznoY~Ri_J>kHh1c(rP&5EuxKT#U!(^Lyy z;mc#B&dImV@6w9Jq(CGXVoP4fV@$Kv)G&La)4Wm1_o@GQ6>iTJKO<b zpvmtTildsAwxqEG_WH^c-aB^o7jHGGWV7E~Lmh_zdr%8`hznc=-nYYnJI{Dwb50#6 zJG}2p%c4pP++}YW{f#Tn-6>V&1qy1M^XPBw&%B#HE(4@kOyr@*t3dfDEfFzVy{1u| zlb6nkx_P_52HsDph)fy!1zDyXYZ+=ZfwzpP-V2)?*@T=K;p0eUKewim7e*M;u4_d3 zNgd^tNCdpScQ}ZG0Kwy`Ya`S>gmji_-<)&mh8I03D5s5*?s@OOCPHEg3f6z>u z`_2>#s+0;mqC4HKp0;aZfz*@pGmF+lZ}uvln?9+N z^Eb3rnQZwPC>P#3v;wBi&rH#eKd{n=ZLudgA zHK30dIgfE|RxXA!OwK)Isll;!?T!3>CK5@K6#_aOwQP*78;aG3#H7*2c#`5) z8QCmoxbKxbl|(DMTZXMOEyDhMN-qkclbFr!QEY4Rg)+k*Vm0d6zTT>Ct!bo*B_>G- zqVvMq#1hjvOk_2!AIJ#csvgaI_2pJ^=q2U14jCH#P5s-A4D0c7rmQHS@k zC6Vi|NU{#rH;k^qIVF?QV>I@#{#!`ax1LFUI+8r_FvB325*a`n%nl5^%zGEB^7VMn z+~KAki<&Rrc&C2G%DjtZzV}G0aA-Yyg#%c)?adJEGwJ=N66X2ivl#5CHT9pj$t$%n z0h~-Z@AD2O?TvuYgtZ$_9^QTG=hte*e7Vb=y&uU7@IL5^pPi+>U2^l6c*1AzW#KaILMq~qgqPwbdRmkk6NM?#NzA_w%~S8K zWfJ`Il_Wy^i@sHa(9#Hg-=eZB)~E(;^CbdChmB_GRb)&J$;h-82w?|?o4r=~mQR3O zE*j7}cihiUuKp7&Wv{ILGB!y7S1X)_UWFtiw^@j`OqORZ-N4D8wgJwzyBa+chdes3 zMnvuCN)Ld~MfcV?z-6&=WQNhhThsFQSHb){ReYqNS9hwd7k?8fP}qmuU7o#vCJd7F zbPRnTsKM`HMSwhFcf@t;EzW5qQ~60lHLOg%pWY89&i>8%BZGNogTo(P8IjF&4EZWz zFdGDM1c#hMtI!?U5xj^vtk)`RK4$pljoM zEQDHlBUk1%#a|Q8qVYyHEi8a&TulKsA1fH7!m;ZNUxiJ3F;N4Zt?N>}WqIwN#a)+HI^10z{pz-OI)U8|E6w)D zx7%r)w_Z(GJ^NY0WbPJl>U^a89lZ6=D_q%3X-11%sT^rD`X0%;mA)C?{IGC-=Ta~S zCK+~G+WFq^o;Dy57nn?mgjf*6foGtBY}Y$M&eyHH#yjIwjVgYV3W)M=vt6}bM|5+F zE5yuvR2%wnJ4MTjpMfo5rq=q~8ch*OBVUor!FQ}EuRMVUPft*Svy;-AS)@A?KD1sL z14`XhEN6Xq$|UVmp(-2C-4d5feI43BZ!sWH8>;URuSDKZh2n1|KPhgt%m#1a#ER%S z1|3g$P)k;<>{mDA)t@5O(O7TMlT`F?t}U>FP8Gge_!WQ{*itU zH_SO4TV5DW_4c~IJlP0c>Gm1^n4k^6I%+am07LU^bIvpKoi9D9*XV`(K~GV38I-_y zqh5M%_V;+)ub-;liBlC$py0D2P65x(3(=_|OA2dd#yxH$i{W?6hz_HtWpDWQS*KRT z;+dH(pCn1Aur|qDB~C7I(W>RO?PiZYWaIqzfQKZ$=PB%?%ukt~*;7vk37Gyk*Iak& zTwRyPowJ+!s@8P$1>YG4n3rJgbcjE#HzomM40&~1Lj`|I%CWzipRyn`#5tUKF{Z^I zANfay`y&2IRh=POe?~?8LqtN6QI=ANo z`NnK>z#n49OM~|r34F8C?I?aCFDXktVb03QpoO#?p=Ngr<+xJz^vjjB)LptC^^Y6k z>Qh28sokL)kPbl(QZ=yaLaVE51MTZ#5Nbq+sRODyKdaQ5C6;FGyB#0y zQHao8@{z9rw_B<_QXUeMkASG`beH-wW1jm3;J6axodnhrj~lhiC|S-*e(DT_hV@Bl z2K*275DXNB-6Lh8ZL`Ax{Sh775lub6rNC4)S6ks(b1I4OxaZK62{Oy_2&HWSakM-e zEzI*%&Ut3!m)d)L0sI=kH-*^anK3|!$h>fOpjHf=5@)%_)w%E9*~*0-iI!Ya-hX%c zz9MMYQ0aqYqyS3N^$9wNB>1TQMi}xjc6D&w$7WBQ@Jd=3(P%ZB5h|DJ3G?+_ zSir-K;=)g?XXkbXXw{hqIzt#e!Ik>JsX%!qsvm>I{w!^_bQO#9(U!M%djT~h*j0ay zdLq+(B&0pQe;@O@V)^*~YrBbNyMlh~ZdWq=)mTmd-3+8bW6d%Q~lycng@CR0|kCNGi-JR32K2ir^+n)*>O+h413j^KHk(W z6yFJ;va8_mlJBR&tlQzr1N03=8@^8cxsvHPEwDYzb{$h}aJW<({V^8g(o}wOcwu<< z>8oDps}BK!;Xn97lg~Z>(C%6svUw3S{keb1J{nqQ8?gy8iHf_w0i72lwReXDJ{07idXi|!it=I%DM z-H*tkN~TlxBV30glUKmqu6i4TXFj;HBQw~QHQ!~X9f%j>L(`w-zP-}?IgCVZ$g)+5 zyH~NNt9;91UXe(&(^omKT!wHH{_78^Sf;AFZCf(SHF-;1M!Y|eM?|lA-smSm`hT%? z{wv9O#J=uHl4xmoqWwJcgGB!+lyzRq=gin?CVXybY1!gV(|1;T)5^i>_-~-~x6^%K z>`TCXW3pUzxaW>D?Mbqh{J!6vY-V}y9jm#{I|O|lnMz`>&+SQ}XsUd#vJz?oOlHz0 z{Q!(he86qtPT|t`G_n2ZU#NsH0+>v}Z`weq-EI!zjku`Y8j!4Y*gm+-uDGvCc(psW zs1sbW{1D@MQ%?~r-#Q(*GedQ~;EKmX%v-?}0QkS^fe%{I=Yd;dIX^+o#--yEJ$w{u zJqpfd!2^+cuRxwRGVi?hH-Z)d4DpNX(0+mjxdTYy43SrtEQ9Ob`sle9?4*)#pYYfy z@c{JtO6|#qZrVS4w2h`~V*BGb@t~2&Z2s1pHpAD)s&y4dPmZ{M-<;*qP5zr&pK5p5 z?P^%su=n=o7b&C+8tnG|D_IDpA&9-a%gdR4qpHqen$AN-=LuO@_EYVA)F#4U*)NrzfkPh42MX#B)bl@0a(Ku_X;Fxh&7 zO6n#kIbMPQ7+6B0$)mk12j7a}%vi2Sz85$|j{7D)<7L>SUP57Is=~_gr}UQ(?I!KS znnEBMBY0uy4oE13u9cdoMXE+f!sW5ZE=bg7mxsUiihL`|<(7g4ecST? zfyhUm_smSryb3ub{_tfjcJlML8By1$9x)d}WcKbK+NfisulQH3jdTUGwJmYh)TeJ8 zc<`in2_-=8*G*>z0nGKoWxVM0p4f{13}Hp^TL3b*o4HH1$wx?q@k~ZG_COupyPiD5 z?VTg-%NMKYNdC9u+G5x^w?32{M&R$0N&bck-;W6h7>ekSX9xh3<5{tMoVJ>?+Hzyd#n z&D-AX{ftZr$ls`u)%I<$a{R1)tG070aoQx-5Hd2pqQ4JJZC7uTKDg&%%Oc{{f>!pK zrcC^>=TUbN^KW{6q35Qclm*MAFg<+(XeGKTjmRIh5@)bi4Vf#!?E1gK)#jxye_Aa3 zkm)sIe?K77>wZ|`C4z&*41a>R$EK~ee$z<9Nwf*F<9tdZ9|uMSbul4z>nk4(g}JGcc)+@8A)P^L>3U7V z9O@&qwr;PCpl9~f4{NlR@DUCzy0Ed^rapD8(Y4(bjcszEOaS5obL3B4yY@qVUA(5D zBud~_@teSJc$0o>0L41^?Dll~^SJ5^WyN_H754ms7|MvY&KoDab@I$@%m0-u64@bV zkcm>F@*1PJ5k6rh$b@C&hyT*#ftk=7+UU)H^^v##di zj|hsnR`h#&Ezemzt1D`ZGI`3gxe@u=PaSrg4WxCgfWxy{iDHFB6TBjhs{?$UsJyb< zmC85FY#e>LOyGN!WWGNm_pY76&%@=VY$nG%xA3iKL(kESXF9o;?|?<^OLQAWJ0oYc zFw0#M(p)qCyVfzfwWFt`M{`Ts2B$D5JDsB>I3{&d1m3mo@e~m=yKV4w()gj<*KKHr zK9P?=@PKoZQV=&0e@!6Obv@th+933f*hUv#`OKwvQ*1lVKH#q=OY#ni?py<(Tn&G| z>{azVcii^_5E97t-21@nPe2scCr`Qj{5Uo1HEv>W8%Dl1{gZfRW<<(@ugr1cztuMj zi}8D+_Jekpl{iEbCOe$WJ3(~C-R}|P0+_L;+r+^ZQwwzTpD~a&<@?I(4I&??z4R&5 z$w(kV42f5Qo;|}0rT0ca9IdH$&th<0s%r@^11tugL_g;jz#kVv&yDZTtWl#A0aq3= zhy)x5m|Q6P{(E&hGkhnGu*zAiq=E=5=$8Mh35tCPyMBlD!?n9Vu7Z*ta9rvWWRUGG z=xS8AfP1GdF1x#x2Cov1v$XtsDF4W3UwqigEoE;2{5{;)tIzA2kV9>*9?O*b%i=q_ zZ{aY49&oubhPWlnTbd+4!Z9bvmq~Q^dEHeYb6~4wXJ&q=Uw_Q9EVB+DtBwu!>;{A; zd%!}by8Yi@bb;(0a{4cK3S+<@%9|UIHE<|<>bW8dKP%SkH(R~94#PlXkfH^76lo8D z?qU&p?gYN=+UrC%ylO5gDu=$QD{xAl(ZY|Lv^ghYrRkjZef_)5zYG|91bX z?Zo;S4@bXvW$NbBFUCm{BR3#2UhF<1UIC?1QhIAgMO*iG4M$|+B87^0PI=Y@fT6j& zJ_GdYpF&p4!(RpmkKYV??C?vtL4t}miq(dOJov;ucAEx#_2BaY=7C>TcLtMWne|=9 z6RUNTW>R(7WoT3z+IZFp#_F0=(?%6d<2Ce3?(ZC!bEw|)% zOua|~{SnIrm}(xgxu(e1Ewznr%Cm<7iCh2>S#W-MQAJVxqx%(ljActX;2CPR@|LoK z{~+J(5snIMqnSwM$Z9n#Yx}>m`ekO~fF}mQ2JVXzIg;Jq*Lm>ot(o!wk7eqQKji+1 zD8QnQS)jo8qU4REA;aQ;UcjqNIQ3}6${^w`8ps$C@-DnR<15zD-rAON#%XdddW#@P zC3T9VFalUSZ5#0i=>Y}!i39Gz#^x1DVW066%k86Z1Cruv5oH}WN4EQF#m!yfxtyrQ z3}fZ2_ZG{Xf92Oi&qnux>cMZouClK|%$>R=WI6PHz+6FPu(y zu>O|T7R(%iY#o{2Cqeg#Ss1o!OPXJEtFO;s#7vz-zb+GKwg^X;gTYUi+d%W~tN&5; z!(V|L4*QUA;MX()T=C2Ud5U@Sn){s(MT~-}bT4I6Kj)`4UJpt-BtupYuRyEK*f>0z zZL21(=*r)=sYYGMzkfbgx0*z_g=wr;-L!uHw@U;jLkz(i8Rwed5pRNjIM}nhK;IkC z-Sxi!PEQ?3HjGEQR)Z|@ddWbt&|I8!m$YrK-}oEx>F1=#b1$)wXRr7|l7q6T*cl|K z)+x)Q7?3dWNfRmt=6zA;q0CVRO%JY^J3v9>Ms+E~caf|m$6;8By^px${w^7O?tmZv zRuLzKnd~(!Y?KVSn)+bHBQL72!rH}S?q$GGX(e9_rggy~u=i`TV!7?+u{uc`@Wi@C z0eL?eSp!ph7Ya@s3XD#<{a z`}=Ri(@QQX#pPSe!4XUL+y;-67_a9aTS(t=YxBX_eA4tF6vS85tMacM03%r1AI0+W ztuvm$fh!*US!qoR9?PtSTa4m2Z*>p*J=!a2YG{;u=*MkCXM>-{g0Ob?Ke>g7`>^LJ z$F4Re`fggbpD$AF;>Hf6Yw2{siYe6rZpA6BsBzs{I?(?ynbcKkko5 z(v1w%%I;KoMD06yOt!<3&L+|^wtC>@XwG_CXVMN?8B?GS=}HgYqk z$s)COClL(IMTzfOVKS zPH3|q@;2|_Q^?u`Z)W6fQQOOa{?IK$@wVM*l3SMv5e|e&TJOPEWqEZl$+yYw*rhPb z9HFa^o6u*u0sXXc4R=WyIjnI0-7Z1Oua&D{4#oonF zhk#iJR*ckT$}AyGx5)SKi9#7*#*gdab7- zsfJ_I#6zNC>_BR%Ao&t*$77jk^0|*rH_5l;)>1(D&3iVV5cc`jrJicOA3u9GqxDjq z-M@PJe@naNlp><{gX&V_%wYI)A}d={6w4K5$?2n=HNWpl+*_4$FHER6LGhCCeWkb2 z+e3VVCaQ<_#E_lRgfUalW)lBu?F$sIipB+a9Aigf-2gvRyLH;V5I4|zv55WlAJxro z`jPx&VI z3+Htz!SCtR0Rk$vs?|yVg%oL(h+LJ8MY6-x{<#mX&_U$~(2OjC-j#OxQV)QMH%Bb? z=f&Vu;bpiu9A|Diua42*8(BkMS|$r8pp**v=U%kETi7)gxaM;E7cVs#kps4fo7$+C+tew(ndZu(ZdeuXd&j1XIKVg}u*@$?M*wm%$1* zcXX#N!Tk8fSbtfkzh7IF_!-fP*1)%e!#Z_H-limeVx{o}kRU)u)EyL7crR}QtVN*L zBi<*;#R?d{7t8U|7s#lEcR<)EzgKXMptoJ3YH4wRtpdF%?&kZET5nrGL3(iRu}bqZ z{qyzA%_Bq_u$BuUiUW(O=A_3CvWYN#_wP{fgN_WBPtWG&(S|)5&Af-sDTUr=;{>1& zi+vFNtBCG$VHuX$omjc{A+|2(NYT!p3?I?LUOz=NmoQFGpSRb)HrI&YzJd35^m_I5 zA~GOpc$piIOi(*~57l*qGq?(`#gwK5JsqZ@`x)DLZ2JxS{CZkJ<+|(wJ>fS|h{O+* z!<(jc-6XE`@xv2+8ix@I)pT}^Jnfx7?yN@bu9z7SbaDU?d&9s?!V;RBq7KnZhxf0d^! zT?R(t`M#@dtAY=b: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�gqFCG$z7Ra;r4?&wyiJehR0J~*{vIt zSg3IW?leO>HRp?Mac0#6;{jEn(_7Z5K9AMF==h+cl}RMY21o3YC(+?z$fvE7ti^T< z+tAHEui6j66UqV~nVbS*#q#cTR2unB?4G(=eN)kd;L3hsI4EjBI89(fsm}u6s7qaA zLxbyzJD&}=*$^%{=2+>td%wDHli#$h*@^kR0T-859N6Ci@+cz)TY=EhmH;^OK_vN+ zN+|<;K?2%AY3@I&sn?UNQeQmg-{2A7m;A;2Xjd>+fcrMGU4r0_yAXn`AQF`hxZ(H5 zU5Nf$EiIY;b-m}JP`R9S3lYy%aqV#n5x2)4d2Qd|mPiZ!wPQz4d;t&JACI+`mf>|a z<>B<}nv!~7kRPk)#U?inNSv_KcQ}0jJqKGkOQtB1#4vt)+T011m{o8fFIeIw_ zMxrxziPnWD0ZoXcIT0!U1e<4<#3tD)K!HFMm zh2mEY170-UO24ZOtFxG!oMp6({t;P2`W0&aPQ0-kqcDbx5m;APcgc8313Ws8q=qkB z?upPEc}2N8-fH;Gev7AOHswbTzBcV!KR!Y9cN)AnmWu8YCLco(JJ{nPsss(3`r;4II_rt}A0DG5*qk`F;; z8Bnlj3QG{gSN6OWWn;CuNA^$JjJrpvc9v(~NBm1!UU;DRBiK6Z_oZJ9;!=?ql3)v8w%sK*poS%#$4CbCR_4eJy0x$b&rj@0!gB;;qf$)mJ>NdwC&6y})%(NVE$k5N!J4!?j28bdPly z$@I869?NXq0$;sv&zVvK1rMAvX6wD}GdwheV-&OZ;aFV8DVX4ftDo$u|8p4BF7&|K z#UgXWntkj>)otnz15ubV!Q{}%k^x*9(7F7glFbw47bdf*z7kZSccKyd2GH1H9Zz=G z3TNbRY?Ss@LVMT;=#ZkZ4J$8W899=B^NSEe%a5PduST26c>-wuoZ+=s{E8}K8)Uc! z^6OfAT@Royp=sybc`^$)J=jP2M8kIC>vL0cQ@!_&(Q@QE?4I8u&HnxOhuQEhv7e8)cLfAj!K(I@F%-@e8o9_)J8!nCPvXewT;$q+tymVU zG#~gA!|Qj<{wR%A8M=GEYw^B@PUG6trKzWLFP17F)@qtj7>P?LR)X27EMWk>CFz=9 zkryZY`PEx4c82{g$mcGHdh4&B;aDdy(O@R84Eu(ZU~QkvcY-xf&(Paer+Yx@83$Y~ z9pty+cY|gimtevmyu(?FN9)x>cj9_;_1`b`DYE;wjQcz)CSaK_;R%c~dYr89(h*sR zON9+2FTBG*WzT#Yxoo?_xqFfA#jvMa6|!s9BF%v%FLO`2Jnb&yqsVn22&C)F z#(~vp!!FQHx*R@v&>Fb1IF0N=RLAXU;q|R?k8`}-!@d)4EijusRd(l(U&B;o><;J4 zD~jIj?K-)w@+>S12R!QraalIx0t$0@uRKYRTuhQ(Me}xRX8SEj;-WTJIP2 zZpeEmWc#w=#^-!-aY3%^buGAJ+gLIbL@@3WrlAZH5@*b9&7Y#g%^D&NK6Bmwne!SV z@<9G;g!ADCt(1_sD3XhmOOjo57VaqGbifb%=0B>TN34(KHKKMUkAWEF$UVx9AQjW$ z_3GO8)~O-JMo`BhdSFHsZw8t3JStA74BukbflmD}Z4I!%di7 zxp|mVp}Y(=wlkc3GsSR3!;)Nq;X76u15&Zv2_7ra1iLb+26d*ANp0@Nw1Kdq>EQJ4 zg#V~AaV+LX?b5~H>)wFa;9hP-Z4w7Qt}9fC#sWW&jys;NQy#57v;E8S zlR9~)aG^Hs1}DZE#W>5tK=&{6J=g&h(eRmZ z@N-(1%o((ReAT~1;&(p@qBJD6LOn6xfGB?IK>h|yP0$ITdhDJJ4uPGqiuQv>2s4bl zmOUnxJiX@sLe?gGu&|M$lzBC@5A>VrdO}Db0oZgfU^(LPh?sIs8=_ozx3DUk`)JRp zuqeJRrDy#;m*ma%ys2|@jwtoqTqocfPXgCNNSr)f?biuuM7=G{C6b;07obF?Kb0;{ zIuTM1G^q0%m3D1Ny!y2N$IY)QDv&>XU5NtGd`Doyt&N{U5g0*?J1SP2gZxEl(6Cjy zbg`m7>#O@0#Rbte;sEWTC$pF5z2`1Zx~t6A{@{;Pli45R^{aLGchfFF!2JW54BD01NQ_jqM_gV=2*xwfacw0ai(?w8@Y^%2RW8&Rm=fr&z0 z1y)n6HakHD=iD))|2ACkWx#+(v3tE~%sqOmfE}^qV7J#bg8wF0RXQ>3TkZ6teqfd$ z#{Pky!UBJ#zl|R6$wH#-I*RY}&Quq`l5f+{2%d;5T`1wAPCwU!t&YK>FDf@wDhK80Ho2j=u^Stq#qv^yWBhyyA|BoeriU)Of&M&(iuMoB73?AT6X;S${jn&ILBM&Ui60 zTxD!y?1Zd5yQj`l{AR5XPxr2zQ=^(V$;NH4h8346H^p8i$hd20CwZ=P&Ge~XW^*5|fne%_LmP+g63awXD6;qrMbl~BzB zMjappKtanuzPl4NB~LjO5RE%dGxHBHN438`5T#6)f7VEYLgDg+4_d(05~*vSC^7@l!jXky_OkT z-O<(0k>vc+ngz~xsgJupJm(v_B6-eAIKl_FS^>1QKjh*APg|H>h2_q}zyCB#Yif|Y zy;kHc__?}|wbet{K@Gk!`}a*Ps5nHuN|yxX2HX>`G-JSAQ5!kJR`9|6F`dF5Sxa)j zPtw%s3*<4|Cgs#kE%)fe`ZV6OVqWxP^FwsC^HEhxY80Q`JM>ls;hkv z%5k%^AG|YPMyA~_4hT@|`(t>JO?d-enubKM!!^mt?YH2*cg^c@zF0D5HEaFz9w}q_e?7(r%w1+?6-mKqKF7c>TAFV6sA?OUy zB1<8%P^K)ili*eamHbU%>CcZfb(i0psF>=holmC)82R`naMchd=MRm1?hUZCf}pSZ z8Ugc@21FQ`@wl1P2K@O=VFWJ~gK!T|$k9B%!qouPyU9yO*_ugz^D10VM2X&oXPbY} z$hQJ-t`{-=wbe+))@Lq$Xe{fDS0|=!GOjhyy(oN2U8M&m8y{dq?LAfeT1RFXLZ@?PBSAaS`33IKTYBQvwj^rqWcc>bB-Kquto!D&I=C`Av z*AcJWe~b1;?%RCfN)X$q;r5%Am*N8XO9zA-AQESB7lJ+Rk3KBG;hnJjCmi!5Oc;Q2fR{0w@%p^AkZ;JSHW(Ujf%y zaRpBgczbz{UJ-w<9(?1z!0n86s&~q{_zPeZ%>GQW#5fOTp3B5*oLK{+9zaLLP$joL`o%71tH8Z-pIrF4FF?3! zDa7iqkSL4j7!0Y;tJmfv*R(V1uUvj|BcnTyY1S){Z>v2_-fZnr7`*hxe^hTKkD)|m z$~@?Y+g_ZrhssY-N**6Rymiy~WuWw_w5>e7$h1klUQh6C-q1<;UwyCrzxVBjN&5kr#()c_W1U5~ZM6TJ-@BigGE#ak{!bXZN1i7yDI26q-bI?*O z64cA;ja>2ySaSWzu);YDqTBSO0eT%}Mp8dLvK!V5Gvf z)Vbk+Wj0|2WKcA?J&GmU=xp)U9Aj zC-Mj)kL6Df63C$u`$s*8lRTOP!Xjo_s|l!;TP>pZmn-hj1&uYBo5j$~Pa(S|GvZ5! zh2A+p1`i0g1NV4}NPGn6&}9L;)}Sn_`g!kk73nf|WwL!Fc%FU&lhG>;h@cX+HR=E+ z-@!?R*VES2iIItU;{kugbXtQ|)A3L7Pw1cCLl+@DfCMC40>F8894l;b_gL_uVtq%o z1nALR-*8fI9YBAea9)^QdBES)29$zH_^XDqO9xDkXAm*Z^T6ju;>gA&D?X)~^>6R*@t_uN4dfA+XD`&{1Gk)$@JaKhG!LC`ZhPkk9iy z%bDk9$*G_Apm$09ZTyPi>I8)HvT_vKe&(Lx4opVoI<_H89Z6s~E;H!sJ&mJ#^u5>F zclhTY?N8-9sX2*ih_=PUij@vZvB zUw>Xq4<2brGMIcxdwa<$Ycso?vBX8J8cUyjOjf@TPk!cchea=}Y@kcGROo#{`I|+K zRzWy)3Bg4O4!k)y{yxvRWL@pOXG+{~WcGSEZ%`J61AHmSxogDJs;M@i$Whx+dHFpt z@(M|Ec0FBrKQRm&a-Ov8@jG02yj_eS@Jg4QQ?51m-LJc@_sA;s5)LB2PJTdB-GXAKqf;t@Z^$1%MX%*OVI&eB~;i@7W)vah4SDl*|hHtHC*$Ocn+ zu+Tq$|EGQJpAfyM7LK1ZB$)B-p53*!g*fkupc)e$no6sStTQ_cf@Aq($9=0zPXycAL-13R zSWq2g7q)zmh=;6#FX=dag+H)Z6dW!wsJlh8Z^W~Y;bq;Kz}OWUcAmYTKKC%JC@ocCfOhz@f+~Xv)=)w}WQC9wIX7RQT)k)Drhe*?`S;NO1B{hX|&O z0D~%EyUKzZVo8R~dljuJjIzf`6HZLPq>$z9#a;B)06Zs|BLTj+2es}0QygM-b(E*%9sMKwLh|8hWhQ4=#2AZ3mgZNJP^eyzSl zd{lMMru@&U%JodJ(Xrjg?i!R~1CV3hvLVS5)bKpmz|nIFry>(|_Im=6xq&C$2q9?A zS!|swFvF?^$1S&g+GxUzx6cRc`xwYJVXgxj3K-=o13o%PXUQ@H*Yj&hr!**bk6o9( zqSY;wLL0+%UI>)5n>bj9_bMjg$5%tCipzz`(QiC&_TM(!$wX)NSZ!2(YZlJrm$}x!)=Yr@RoJB%-l6-AO{){_m{ix9pl7Rj0?1$OmIRCE?R>b2 zv_d-teJN83|35Tx|MIjR!=}GX2>sGt_k80!%5_YzEzA6Uv_0C=wB>%M_mkE0f}_j> zV-`DD3(dihrWKD<`C630hUPxB(EqQzrj7mE#~~+`gg!sDqE8+<^g?04&$xj(P_CA0 zb>rJ2!!&!1pGizX-rT28Y~tYdD9dHpD7y1I@xQK)FZb)G4H<^)F zJP)`T!D}Da+H)^~`46(qEi@h|gb1>R9FlM8PKMujbr#Ja+x*`%UUr5a-_*G5YkjnlI$w#zKOjzS8;u^P5+H{}>G0u#C}5snKhu z{dqO@G4iKW9`vX@XgbjUb)NcBZ?_FgZ;WAwpc}aGVZN{RuCceg6w~10l3?1Fqc@I} zVszH!DB-c2)u3(C5|P}=Z5~d$uO!}O65t`*nH4*q3+=t!){Lg@{db!ZT#5X3;ioQ> zP`G7@r!}^Aj;6-mp#r0B{isrL{=ri2oc8Aas_JHN>BzROkIr2xw=J9J4?7kowUDM1 z6aB_A<*Ux)FvyE+&SK|E%4k~LpDro|tlEXezjkJjWV)&*HR`C_=jt2fcM(WIm!qc@ z9SpT9gSmb~VB5Z72`lxf0`}@Vk6sySxm!@ZFS*Sb0P2F}rn*yiy?&!7UmRsla#~%y zL{k6jsc8kAJQu7{nre*PnMbBg2F_UV$hi#c{d8DnnW^n(&WsF&cG2>gl-RUo$uLTI zT}URfmNj$USL}D_>T`Lr4eYPy24G^0QWQw>?P{JtE<>57v7cmRi>?2c3cfZKk?WlZ z$hX~51ZiX>Tzs{xo1Cku;DKkib5JTTud6T>7O=h*NZw8B=rnv+{r2$!^->fx2UtId zr2-Vr9K}_!4|iQf0Cgh?J`YS8UJww*_J}LbtKMp{DWD#BJDOMD-cRL1=>g9l7qB~I zS_L?K5?WdRqhf?~@yDfTi@IMj0b7pmm7lsF%~CN+`N}a%N^JF5>G;l$je@cBF5kfdH12~LXDK$ke(*+!~hx>7l3W9%p z5ZCme7m_^hA?LRh^H-wkpmkzbTCtTya7PUxB zV_~DmFbcyFa3<6Of3`iIRaO=UcsLxcOP_FcP4w9S83tbUX-7|sxo2%^N z(u@poTWCGIAK&*{P~o4CysxDfbAS8hp;ewj>iFSNrzFalf9U<>1YB|%&F#=#vS?>- zz4N5hILzwtrwa5l&^*U=+Db&kkK#tfd|O~h@zKU;3b^TxVZAB&H4~!HXGXJgh(%N3 zkMriQy=EjXDeTP|3Le6|>w?C++!KFQ@)LzP@%-0bf;n5SuNt?cfQ{QT2cR*&+MhzN z+BwdiX?%Sn@REY-KVEMZC;~_b!#;21AHxRWrppIRK`S!?P>wC`i}-|w*}?RT8ST5m zeDC5?uxIb190P+vUBHA`7jqxa1Z6wsP4KFQu}kr6(%;K^)gmUE%fRW@lKOufopoH( z-`mDPknZl0qEbrtM3fK#1!-g`BHayRQ<07l0uq8siNxsc8b~S4=#qv_YQVPd^Z7mh z!?xFUKIfeKy080v8NO7NKG%|bWYT;}UQ?V!{Uuj^>D}q>L`gI%Fpqnp9>MI^k{b$- zuG_zJ#=9TOOH1E&KTFhM=SBg~CC%iT{RrE{u5_}Ac=aDs$s!ongF(wv|Aia7Oj zPir4CriABkI!`1ZVK?ylSmTItnEZYsFkJ5yWv<45^UVlPK)Ekfr66rFEY3`; zD&uDwj6cg>=CYzB=0WKz^|L_pJqGAH{714dYte}rQ3^%H;2qYTp(<VWjFSdZkA5tP4XbI zQvuGig7F+bXv=3JssZq6B-SvlGYTfqO~@}$?+iFA`@AB1BY5PV=j$-;w3*IodZmGC zJHzv`uzd}q{)Md!v{?#o9?Vfx;Pbw%ayEkvzp`to+u~W^tjBhpWrg^F($2 zQ;-|8R8&mMqX?Z9@(8PD=8pC3RUQqdJTwEIf2DJ4+~W#hRGEFLekDdgvGI?5O>a11 z;|8ll?xm}@2OTV`cr7p z0~0Dy*ummUkHyv`MukZlXfcf|>R$>_(pv+2n+X~h(n*?vz;m4l3c4{3{CCWu2TwMO+N169K%`+0YM z7e0IEk?7RWoN%8%xYd<-1q=~Y6S?A15R4%R{bBHHh$O(Fw_=dhYV7#%Q1_3v1%`e@ z%8uXQT+on0i@$#ifz|L_PtX6$3~^y>(P)1cuAIBg=f7*CFN)A?vkubDhK*QfHDCh{ z+x#w#&V5_{kw`KnQ(tXh`(ao-6a())M$4_|1J>O~*vRFwqUCv@7E)cBv|fsL%$pdy zU1HIsEc!N(`_<56$1xwoHse}gfltZ45~KUKzt@t#-uq>!F;EJ$OPrUTyWn`QyHw6bH4L@LgZQ+v%5nVmo{0z$MJLU};E#Y+>=P3*5Zk|J$ z0%V7Vv!3~gD)mDSvH98)Jyi2?_P3xQ5q-j!;sNW!F4;jmmB^8n;J;8tV!hAM+-cU= zA?L)=Pfz*hqkoOg>x2Qck#rlZQ)~tPezAUdkVaAYXnG|7yXB?(&*BH=ZN#%( z)@o~Gsh!kU!_t;Jtg*y;@p!MTmNr?bT-WF93yFCfUp4kqiwyYL3W~;6af$1OVB^U% zsj%l6Rx(^wksIK)5St_6&?nEkFOaq|$Kxh3FP^uxg`lR=L+6u%kyK=k#) zO1C~unqXZ^91@FO@;qF_vTp|6ftMR|3p1rub5uRjTW1d+Dd@}?(XpH?5hynM`Em!A zMjX$t1w}d#GNF$#5h%3GdBd0Wc3?cC53(zEt5u1{+}H8>mrG?jWnK#9^$tbC58#Q3 zUAY0I%Au?wUC8+pt>~T=7O0p{NLjG4#gue**yt0h4wrHnX`76wha&S`%r(;YiptI% zjN^zi%e00KOxukG{5X&Oo1YOl;HpOc4%m+J_aN0lef2mQ zY?;aQ%6ZVN7r7EvPDPWm{WY6iKjExo`sd>+Dzscg|Yxz+pqw488!zc7kx^1!2l1CNACqgZeQ|$is-oLcS znfGmj5C?~|+IOFSzQn#WU>!SJoE0&29z%O*Jg>c_)iWxhs9NhyiF|U&yRI||&3R75B`Ggcx_tot{RR7g=IiYqAVfXb}zyNcClYb%|G%t~`A z2hwMbSyhxK#-@+~pj%Q_s9Q<=4Y?^V5%1qx*NWB2@{;tGK1;XWBBf(|20LQ3oqc0n zKfk?hR`iWf4_wg|kJ`kqwV@3EizjgIjN*wLi^uZzLj>@K>pAofoqr7#7}6>JwwfDL z)ptKHqKhg2WpeON`|HA0>?$HIqvLj5@4!Vi`ISI>@uJ~(w?H}JA;ok>i_v)a^8L-S zGH-rv8@^dxk5xD|RLxMg2f_dqUtPHoY|gt7`)bl(LzrH3LNQ2kOepfX(tQ=FgtVEq zG*rvm(zTbb;c?kwpU@v6js{?Mm-8K~dVWpW1?d!U-1?mQM~A<`@g*Y{Xy|gC^ zc%_Wn<$=Dr<@apbt;d4QQ3JXHosj^3$PUjD9{v@p8=Y`}Iiz@f*{tVN+ko{g5u6xb zsOOFLl{K$;cZGJEIokK3Eb_r6PgQNZ@F>Ao12iYuXJG`jhggm*zhb*Sq=PEcx?IG# z&ygx3bjy1$s8j-!1fgql6sRw8RSo?4&Q_w$@3Htw~Lb%b={VStLOo)=*{%(L$CgF=T^+`qSz_vT-7K7y~LmONO)CllP(opbv z#cyFi)zg(}-T6_I>hZ07FXei{pz!JWL(_PKTDuM8&5w03?(aRz)$b*cTD0*M&K9Up$yT#2Md@}%qLlj|KE+C`vFo2a!Y2X$?g6|Z zSRR=O6Trd``8UGc7wRx%MMAQ^Z5}pFlFXMsw?g@q>#9djGh4;q?$tX zLA{vLjBeon&?ahhvI5IMMNWtPIRUK=UxpS{3+H|Bs=ebj5a8O_7 z#i3MGi)e(oR*gi}XKB1IJ}Fq`AUrX22C?2cY-K;GVA#;;iE^>%^CQjAQ{1b#O2S)Y zE%aB+w>5N#SG^E9vi(Yj9QQ-lX->O|`pz$|+h~nEBJ7O+%s!D*M`j;U!f5$sTSa!l zfnadF?%MDQy-Xa`sz6)bJ!Q#qS=|qPpYrdUrTWYg4SLvfAdC*Et^un6j2}1bh}ATX z&75sX(=HW153?C6Y)}$SSl4BU<~otpbf@!!_|5NK@Z6kI@*9`W_MzpoFc^Md{FYxa zZ6MUCQexU4#Dpr>_A6c_d^s&8)0N8oeVNe`r7L(u`3lAB6LAcYD+fs;JglGW5S|i} zH0AOUpjvPbB$iXjFsx#{SSqPhqT%In#eXDza*ArTLU0^=xa1Lp{2e&+au<>XsnKc0 z%&tnuu0zOOR$P9oOZ?bNEYp62@^!Ibh)X5se`L5-=9A2D5P*leZK5!ASE^cOvVng?Kz>Cv{!yFNBW`AKzytUgonMPM+u(kwd=~RmVUNpzD?VOukro-w|MP3(*Qp;kMUm( zfe4{109iHEx%w5}0AT9pj#nFF#c_#Pi5?;ocDb`~*&1+;wtmj}V(y#6h2kPVe2K4p zrPVd2hukzK(w|~3KGv@+AU8MCrra)EEk1wL2cLIEzd7mQerig^J=1Y6zkpHH`rp z^!ediN=>U56c&Uxno8`wS>jeJbjEJ`AQz&wP% z*|C^S$nVT2a43q1>B#oMWd=GeI#=T%wN-=y@ai`pSOFOkpa!nT+33wM#s_@zR+P%i z>vUE_JfMrGxy~SK5A!j%a2lPoNY%Xp5eFe;hv2v1dGT{!LjGYvlmwD4*uc1E>WQz| zlr?+C;n0RyNvcEkMXczhFR8e)palpCHU8r?b#$Pv;PwM|Y`wg2cv{HFMhX6h-inD5 zIwwiNr%2(i9iVph+)R@jZUzx#al4c}No zDQlk9y;e~Z8Dw2ciY(pZ2rWsdQ~iym-2s0+>ol^|qxu*KFP8E|mZsK2xjp5PCs}x zV6#_82Ucc`e1G*OZ5<+(BRI4bh1L@hbW$K@0TGg&J;qV_wN60RS#*hKz)Q1i20&G6>@6LA^2yq3{?U&)ipk)V&H& z6`l+K6n+yH@mEK@h^g5#K%gY|#a)9?$AE|HV5{uqG6C6V$31D&g-&_9xOTd69&C^{ z^tPTO$=G+)E;6{oOw{`^I#BKSf7Xgu*L1|$`+K2?qz)!$AU%F->}8won)9S_i!5k8 zg&kVT*m}#j0e9sE&x`=JO62bK_C4R?2=#N044AGLmBOUUjJ+|Q>}I5!zC+NZzut%Os3^$Ft_p7ZVS z&=-r2r9&q4?l8h`3t&ZFVj1rvvS2Bq*E<<(ZwD*T%l=a<3+V>+O1>#QT&_XBxvfXT znWqDcCiIHOcD{w+?xOH48+{fqQHp>Mwf4XB|MTIejpeM8OtwN`W^SvgwJ}n<6Duhc-X&xQ|)A z@X~=lSGtK1m{<3i{f`7`#oF;;>EGf0DKe+y25b>r<8^4};iA-aoS4Uk)u|As3}@NO zMwv$>q^Ayer*4M+a6Emjg8X)zewYz*OVjpt`O$df3x3}|%uTndjE!gMq%mY9=fEzJ z7)AIN;~UDL3<%;Uw1`-9(?x~oh|_jcRCcTw@3r#nx{v>nOu7wGMc!X}QM>V7!793! zsDh;c^}%jy^41BycUjwZezX4vX-lmdl<1)O@r7zBub2md0ylpxPV6UwanVYB;CM|6 zz$ua-_n^!xq-am+w;RU+1&5nu1)u7Z8}C4#%Ip~3L)LO4px;-gBO}fb?^i$yfJ`sI zi?wT~j8qrFT(3VaS6zucmM$_6%%F`S9z3TSfL_j5?OEQULe8}t7*7(pf|gM~HkKABO}L;|Sl06cLRkmLK8W5E zFXjpr!))|6X4Goa=lb3b%enTsM|YvbV9uxnl62iGVVE9OU9y_y2?g;JCqbC!@L2eb z{9YKz|2&|MaPDC3jebn*`V8{SO~ZQPt(e6dCdpP06XUk0Dr0O+zLrp}Yd8!oAPr^& ze1_4Cl+hm2MU7U-w-eHv0ZMdVFWvbq2$ru)ZbluP^oQTM1`g+*W$7s|u=8<(tY*>r zW~#pYj&$+JZPX`W&G!zr%!tSQ{cxpx9!=3@{3C2fK@i&!`gO;kgZf>;jeIQLZR}IX zm!9(G*8wXvod*{i`RLj64;Y#56^ascJ;Be!(y=K`(=NxYiTh|vBwzaWMKemAgh3B^ z3J1c3)4Cym`Mf8e1j>o?dD8;_2nCm*Ub+3d88S!LHjy%;&sST0WI2nSzGlK%oTmYI z5r;XbD50$lf*IDDA(G(6jdP5r4qx5t=xFe2|2|h4d8qw){WJSuD)`fCF5>~Bi>NdS z6A6~-fr0A{LUT!Z=WPy zU7d}&{#q)KK1=zKXB1|^tFfWg`nob)M?z65Sn>FNEQ&nT=Oy#k`9Fv5p-UA*cgveZ z0HGq%S$&VqlT@E;A8=i!*?AQ1?|-RjxJP+OG;36B_3W$Rv{wTL!pEvJ_)Dtm+$22R z>}+*NP2%ekNWx}Eta}g)(D2F1wHNV*Sj`xzO%zvq&Ff#NrEj@NLN)t=Qud;Acb*RU zN!r|O1k}4TX}0G|Jn?&YEiTBiZmKX~e8_oBsA=Q3uEhQGCvb~E)*pxxVd|~>bdX%W zDb6@PvO3b-v^;u8=ay{S2bGS43%!im2H|B3sJ|4!zlk3{Ik)aape0;=t~z%561m64 z6HXFl#bw5Jyps!bQ-sTT?`_epBPgRo#&ro~ggFtRu zOWw^(7&7;ny1L=TPi^6DcydaHWIy3dgjz!Ru?1Q)*)G7)9Ywlyjv^z)`qIY~n3%vT z0FlWy+#b5VMAq*;xE+DwMrISi`i5+EmvLfaSwJ=JD4ppy2L z^A(b&88KHm{b07!L~;GL>H05vXcx?_ZF|3r1GWH3{Vsv}%j*pUcW~yqdF53{8Qqm9 zg4S!&oi|_12O;~EkDCgNVeUG%MaB{ZU5N@ERWmx-qu+m=xR)2cx~|e9?7#0$zTWoI zvgU!uthY3VNY`Dr-z!-;u_#5kzwJOaa%pDEvC%#L_=?oM4H`vTakum$dTvml3;oN^tV^ z$vd|l4^nlr)ls|IJ{S*HY^n0=XYcBb;aqq?W)pI*rfvPXt1MV@V0Ef}<1~K*d@#F; zKnsk&m=2Jz*#|M{6t5Uf-7`1Pu_c^=V6yr^!Y(8eZC8dJKNrX4d)6-QS&NjT4nh+i zDO474X$1dD-*hw9)b$yr{lEEV#gqLee<1B}X_)vf zzD#G8B|YiRdQ!aN}2lRaT~9J<-w~z;p~V$FxvB?Cyazf(fohBQC4bt;Fs(gc$9o!!sJ_soRq9mv*TSZ|8QVK*K9G1Gg@F<*kSH1c zWRo}k5Dp2;q9R{a&%(b$Z9yhyyWsS5qS=Xr8Z~PhNo&K{1;k>{d#fm&kZ?fQ_I3nD z^ZZorGjGMko+*B=y$KP$6aS5Scd}&n<;z@#zNlN8@j%OEraa!jvX7c4;seRRkz2vX zACHZbH(6B47LcJ=uC6HB6Zyj;`)|Q_eUd(dwzCiAceyl2NA~O9Bz*z!nwhon^gR+B zt8e}zQQejNa44AaJ}LM545^b;rX5!>wLtZCJ9zvR(Gc>W_ch;-Q&Ym-I0+VZc0K-( zO-5{4oYu3V+N98HfQq?aiQ+4o`c}5barHJoNUJn1MePZ3=_} zUo&Jq^=3z!NUZ=E`&%Lpm!oEjp2K-kywWW3<1g@~5EkVWncX6XDePqgVy(42Txdwy zT-ok2ybGOGUv8jkr+4S0SZU{P{9s~=j zZ2a7$(Ptpg^LJA}qw!TemA}tT*dAj$(!`tTsyPf%E+izinP!;LP_Tba_B94=SCB(& zWarW3Zy40*+nrrT-haBSd|-L@bNz*y7H#K`%ciRrN}PA-DD=4>If&(`GnUjd+Rt1# z%DUeX&MYtQx&S-1a0JlewowC%V79+qU`dHiyXS zndsUABGR@(ewphPII3=;J*+QuAm{5&^0(Bmvf;?6+b;N1>HPP_t7 z=0_rl%Xudo{skL~P$9uSSpg}2k@Oa2cdz-#?VmAVs3o+*S4#v`Z3g1|@7BPoe`3UxtqKW(T3T~vXWABZq{M>rBKhbF&%mZ&mrk5i<_GBAtISCFTQ5csx9cE} z0+ynPJ86c4c={~Q@qCQ*6geDDwx)ClI2Ud*%_uPP@7Lgl`!t!}i#F%KoZ)vrjlVr$ z8S~;$=aiZyZBj4*xf67*30xhxfTpmLX8ig%ASYs1Q1`1chubJLZv7cxV43r~vvI7a zclsPs4(3*uVY`BV04{l9Piy|v?Jv}QL|gS#YqRHyj3m3;l62lJDH(^z#h_HiP=9`R z-R{}J2M`cIH4@)hgX|&jYGWG*E?RKASndkp77nGYuM_^4aZ#xG^ys`7*y{-kLN+1u z_i2Ta)`a^hgwBP>4pCsEQ{C<2NTW>$#5G&~CMgg|AK9C!wjsMAbfR_l#?^Z?(2*mz z+(QVxOb{BgtkR%5v_{`ysaz`eP|OUG6mVE$q~spjsE4bCdcNb{jeIV`tgN3 z{YrJ4oJmE69MNZSHhj&GH=7Iq1WQ^&AN7XN>~N%!qmH9#qu(8H4;A-zlW=F!cmjl0 z{rR;T)D?>Ya?WhVUCNxTa~rp zVnIqPhgSN20_JguLKVFRycy8>2zzy9 zvdB{KEAP3o7d)#|loC_F0j_=N>4rjD@88!r!ZR*kpi`#@6APq$s>ub1DA`*xJ zi9Tf#Uj-deP5Wjqiq6RwR5Y8mPp+o5X`KRD%hA>Uwhu|Mt>?}-a0xCDgqHaqIn(n? zxvjc&$n<*Zqd>!=`KQhU_gX(?ZgBJc?MxU4U`vPG#l$}=^%U)4tBlNUdAD#j1tFoF zA3LV~B>$?(lc@=qyqWt~m!y>Xz+SnF?8*yxpvD&QoEXG`-#VNP`Viw4g}2x^R=XDI z_FX=b-3?0H7;TDnyYZy2+&f76FpC|(22|~UoanH`dfrDUu`$4&B^CH#!g@pBpex&6 zrRqU1xu2S2F3S=N2bY~FMIY%totaLbPO`ReCu|ZTI~^I5h&Ktj^7-?V>nn#U@M{&Q z=FDo&^JYxrM|H3xL(w{8gARB0exH(ox7h0<&R>maGqyWqrG&SH47igQJ!}X}V~;af z9p}Ie4_Ny`Z1<$#m4gT$kr6HQ4U(VnkzLPc#oM7$*W^$~Y)PM#5^AO9qVG65bZcsb zjvcBD)&22c)N7q;E&W^ki0*?jrB5k}r0(x*;s_kS@ppdi2Z99wvzwq460aW&ezdJ%FcmB-l1G4gOjG^eS6w+LW{IPaVFSa==ZBUL6pKn?M zLve?UR~#$OWJ)HtYoSzR62lfVfpFYnz9;uck z6HYQ?0#+LUbtS2z=Qv4zO_$RR$INj1U#T&h7@um|3D#xO^ z>2Vrc%xDAWG5t9pFiI+|k*vaZ{Z@0_@Iph$x-p);Roj>bc-$X%IxmPW_Z*u>n@U~| z$Hxc%rA%hfgn=tyK-0Cmep%X33BZ4BuUQp`JueFudVACIRrc~OZ+?#sfZW4@iL?cU zwsXWKRdB2{G)=P;bKTogh~$1*)Ft`Vk*Hw-Pdgryc!{(REvo|+*-wXRnn;j z7JYX;XGv_0Pjj8P-9?^itw0i>(jRmp{m4%lT~JLJ-Q($*FE9Qj5*EDp=;NxKLn~;e zWHR;dGTk7yeKT54g1i$`3+cYy|oOMGPP*9XfAgmWoC)6@O_pJ=4_Zy)Hp_+`=I? zqA|Bpv+vDNd~xxwtWgt?pR>sP?DYK~8-wqN#(vYZrr@X}|48na*hv*H3fm@u4p zQ45~8-rO_d{}tHz#C>V7ylqXI1@i)aj*gOA~Sb zL8?b1pxe#5m}PxBd#n+QTwbB?{~iq2t(p*;lHZ~sQFDAa0XFT@EJ1h`1xPXII(#+A z8JA?Gv){%Qj=7r5+S#2*GXLOq0DNb8>9j8&DUz}u^qm_7flIkSi4MUT|NcqQKD*XP z`kFQvCGYW-?KLC#`7Gw=C+^(0m3BBE{_QMeaGcsjN~Kq<`JCe6V=8WM&HbAU;AI7T z0kFvY;j5qga1b6ba=7k5P0h|!F z-qKOu45IKv5n|ZQ%6c)DhQ#(V926*fXX4X$l=ijuH4D3a)&OeFoDA?X zUw+`^dP2uC!@l7}`VW1D(;j5}rA)Bl{ctZrmgD{0yVRSu?|MN6`52>iiGBfc!Uq_0 zut9e|Gr(jrScmsjIGJG6BmdStO$j#8V-;&$a7w85662Uq(i;-+=pXp=FIwdCEAW zg5;D9M@9Je2CfQd6jUG*;4&E!9OYvmtJP4cM-$XG?J4<6N^&-{hT5}UEmN(ir8zmF zZ9>J#;hn5E2?^<(ayn~lp?D<_r|<;laDIOB=S=LSZ zt0lTVG;05w^Io{{^S?^E*Hl);jZPn9f0O-gTtd8p{m^gp*$MKV9-FlJ!e9X=1+Q+5 z8Xm%5=YO2>v!&+PK)p|u8?cgmi^us&TrGE;LkBtHxEgct~4%}|sn{ofjaJA|1q zeujxSv)q23`>8DvK}lGdXf(NS_nCIfKKPGBC*0g1D?noV-$w6~KDuOM@y;!)KkdI- zzI^kUq)fP;ENKCBpQLljA<-dL2A_Q6Epv}sjm^R9*JhocEv1)M0ip4}t#5qu5_K6! z-TA^7PmN0}wjAlUG~+p7d5C1c zHiP{F*Bq7rY70C5QRce;AzSFyr}FCEpXEI|RLmL1cg#f7BwL@q->C3iW+&8vU%}Dt zcypXq2|ftt5F(uz=pXKhvYPRzi_Ly8Lf&BLBg`GBZW!w@q+=$|&5Z|ih7a%I-H#4{ z9ML3j^?0Anp+yf+DB56F9$}Y0xsWfZhqBwD) z6Z3optqBI&i`WEBQS5m$oXsQr=W@ITZ?EF`-2tRzCA3W9cES(ZYLYi^Qgz@Ja>(gdb(|#T&jnVNAWiL;C zbe#VW1u69-kvn%&>erH)xGe((|F=V4E&vAVr>g%R)1!Oeic*Lt#;&+|Gtel8*!p*$ zQM41<%;1=dXPQD2Yhj-~xwOLE>eBrWH7T*;q8B0}Rmi*LTcdt|dbLEuJ*6}!|Bhrt zseRXc38+EQo~mNKgHz>>MOAzIBCBtjPA^?ar*WT?NRjtB zFS1fn-ISw5V{7M*Jg3{8y9GZMl5V8rslIMcvN}{)psr86J3TsLAKo!@KmQH_U#B(u z7Jm2q-$8f7_pzsT%&rH}h_!aO8D@)EgmLS?ikx0Xme>$Vw5FtCPP6g>LhN6#QO)l@ z#n~PH(|d4oPhmBr*e#}zL2!Uf$n1nh33>BfP01x?swac*xo%GGhjamPwk>sh#mJ?VQ=2jlbAX*^7?WkHRI=ii?h*i zZOrioG7d@^;>NP93;+H^=jeQb4#Qx4w8D>~JVnL>qwMqsy3>^SN=HjapO;?;}3cxApEL^&f^6U#-{5? zoC;z9QoG%k{~mNhK|{Nj$ra3P-<~bu7S)oWa(b=nF~DJFpDN^-p_QzMzNe!H1{1qM z7{I^;`=7ev0$>=vZ6M-T>JZ(C*gWvHapDqGWy7sZN3LVj4{A$;wJpMw@ltCZ481*94&7Yu*XpYq6FG#ldNzh7a&H9Yo{hR$8!_qM6yr2G zcEDv}k?(-R&fq*7Yur0uDT%jPJ*IHWw3aGbw7-0~B&LKAlu9ku_oPdp77t^F+<-pD zk`raH%kAYuBBP=gM&Z74ke^@>)FPk|&xZvk)!%7Dvfx@xo2SJrK*}M7E;dMU-YM9P zPBC@ySGSPsw0b}qhodBTeoP-<_NQCit+s!p-av5rP(8aYtrhxZv zQ-xj~mB^ERts7hIudZ_{J?vs9#(^*oA#>szUI6?-g9sP2c< z3B3(WLh6HmYJ>mya$+6wmR>%)De!Px)FSYfd14YBA76>z`H+;9pXxlie&N{hmQtL5UtsMs zUnOIu->BPo+NAhgV7Y!b?K|r3y_*4AS%z6jeHoPA{BlX@DL%J;dsCmT*NZ9hDN>z* zC#sI-<7y6Rdii+vreJb{>AfNlTqaKb(gFcf@v1bvd#)rpOkXf9xm#7h|dVw72Pg0p4w&{UTCw|5iCQKhqr@+#mdb zJfm7Se=FuQRjnb>r>=|5>1j|+ACLAo{Q-p1RFk#p{uWf4edg2M#Ej1v47n_Jp4y1$ zch7g=mYXh_5oI=@Wx^<;#QBQoBPY=lgrth{WhIi*H_naR8|NT`@_dHbLEx!!!@BKH{{=) z#&>6%q9v1F);mxQzzxyC-l|%eR!I8=S}p6^@(~#XzoRnb7Hgoqr^6P>PeK;ATcTq7 zcT4vl2wOm;GP^bkHYZ-A;I;He^;p)Pj6TC+LN({3S$=OLhuW+e({mH;a3R#Tf zFm2+GCf`h3L7r5C*1dZ2fog;gs^+t1oRH6e=f#RY3Lb$OmAy_=f1<;fc}L)l)9->C z8g3n|hOSP^XJAnX*0zizo)`!(ta74f%Z9j~=`MD@hRF;3H;$+0{!s-ljzHI}^ZY443z{(qJX_g$4x(T6lt_We_ztg<8f-{36^f%{ z>2vsiN;`ayZnGg$hh4Kkh-e7N;}p#N#n>2USYV@Av~F_^PyfL5h+`0U`6lCm%E8a= zi4Kj#tX^N3-W-MP_mQl=RyK8iKtAoL#h#L+$ zqFT{jfA%-WwZ-t1Rj0Dl&vk&3m&=~%kHDhEZ?|#|sw^5xvIfm}7QJ~C?F|^vfJ{7$ zGSJ4&P-l;k(gHQ{@nQH$URZ`L_q`9t_0w zGk)%%JK`j{*B1ndl(tr9kn2ANE%kqoEmGeK>Wy!q<|4XyC2iktQ+O>Wt80u{_;_Zmy?`>d?Sg`dK2=zR;W16xp<69@L~sE;n%3T z^y960)BSrYf=U!E1s{yH^Y=6MLcdI3W(yu`vZ|*!a`L>dsk>+Upvff8$nt6xW>#I|nkmI2CyQ?CvbUkcRw53{ zBx+?2)!G?QtC@XaOWFXtdDb#FF>r?QV1JQGzv9E)x2q?^R(rr z4=+{DQwFwoiR_rH8UF?E*wcBKZD!lJI?na=6jZ3F*GKB7Yr|VZ&A;;Y+@g^qPRe7j zBRJ0iQW9peFfg(W0NugFpC?F07bX`F6V$0tLgA<3rfXogvDzD62pA(qaGR)CvkLsG zuU)mD=d0#$f=n(mKRURuFCPmuFz{-t(%DXMw|x`($E=<+Zra@D$2_SJ>;f7d{-fMh z^z5-}EU0@pXY|&Id%RTrh{p%Un|g%D;fa`__3iWAKs05HG@0JLj1!g3Tucd~MBz&4 z`VFinBTsDNtWyBTYh)ZcI2_YW8g{Lj@b{zms4Gre@vl>)X#b<`<#EdE4(7XG?M% zc3%_)G^0NDJdss~1M=&D9V5;IE8RN)lZ(@>Z={pT@_yvUE@X-H=JkM^~YjSsO3)nP{Vl{yU}3?7XfIq3uP~9yJs8CXR`yQuk}MX(Rs>isY|3{zthqN zHFOoOg06*N^DT&ofOs&id?sg}fS5M=SFiIkZ)>@^4fUV`;eme=dbJ5+pt^8SS53YpDQ%Y}?k({l}J9V!$c#NvN>UOjOmGoB;h6utNsU^$6-K*Ij zmVF1vfm8Jaj1SQV67uk_>u%mnopp3di6euz)jgd*5ee%pw9Z-VoT7Qrl*JO7xgnXV+#WhHfj9B-Leh@1Zw8lme z7IxFadgu0<-lYR2(p*yay0|*$_a9e;CB`n6F$%BrZ6|q?Hq0L(8lb$H4?THl`cyb! zTn$C8eeBn5NR?o66fJOnbGQE>Tq^V;Xay*iiCoLj0qoN!>be&AKmPlQXEVI zhVI0eFanxb54dpNEqmsZV>2^RUU(Sk?vt9cGdF zq(Ss)2WPEXQCcpdZZ!9{Mxc!5*);)(D-LE|GmbofiU5E>RozH+u;*7@4=0ib`YHfw z>2-+cg+hXeNiovF%Qri4IzP3uCJ4{GvX+Y+A4Wlpc4yA{ zl50^$Bn}HR4H-Ol6;(KHd0J@xz~uMs|5$U@Pkb=2v;>!Xp{}w{i4E%OhwjE?lF% z-@0n1Za*elWy?&W%lzuR-%MSypgH~NleFK&x8PNvA5|;5{Tx$rXtq|SY|4+7Iqf{ju3zIxr>%49?SB|~Pi>(pFbH4Xq3S|+;dG&ujtv6>%>^LE! z+EDYwShMF$_cvMdyukzY6$*h5IW$J}x&$KFFY7CbOWBMFkF#-l;$R02*7y*#@qZj$ zcRW@9|0l9X+50A>vO@N_R7m1R!*)YfviH0pWZn?UE?F5jd%O0H%I4bKOI_=7uZ$b_ z-p}uRfA{Y@9*=Y1=XGAM=j%BtF?j+itN_movkT;Vsf?AW&d<}uHR$~GXJE8BLM})T z!kXny2fCdOPU@y2HA+KCFApgRI@*J<3GK?!gTo~IRmb-iG;Z=sw4WAA&W_&<@F)&O zRhnMsWO^s2oMr20Z%D&k2d%^*yTgvtyRwW#xcVicNvN_wzn>Sfq<@JiG1Yv1e7_^e zc4p_QRACv5xh8I|x#Z)M*OD%g>(0B@!46O6c1AwZg&*+(6oO{U;WW_6D@qYnn(Q^} zmdrmHIHzjfdhHJty0SFP82NoPDz+YP=ijKcaV>+~1M3S0oO3rxwdaP5k?aI&l_VgJ z6S=yIbB^ARdgi{78N3nK=s#5a#3!861{5o`=%2pPW56GTPK<=qZ6A07Mof=^;$mJE zHnCSE?9?eIHxF93O8f{vcsNT&PzRw5#|KL(C-VgU_{jUGLJ3)wJDH@EA#_dIoA6f( zf5xmk1v$h4lz=A%y0!}`v$a`Tu+e8Pi|;bwQ7q}T>h1rW-b+JsX33WQ+qo`zYHv#p zVK5_A_vd}XC%S-O!HvB9hqJG|T;IhT)9#yTq1oLkrRIy6Mp&31^-?fvyr0~YxS5hQ zo`>p$pFeq8UK2c>=~iv`^<}VFwpU_ zO|D9=-Q)JK;}0Xbx;w9gW1>3E9#m>L!yl2d&ds)rtY&n1B9)2k5aoNIa#@x89#ILEyncTaIxwWCCUJtptO zWc)Je;?dhkqadt~!qaJ2n#DBT-_qyCI=m0K$3juwq`JpLRLx0kv1*rBP#dCl^-zZh z(;t#3 z)}DXUNmXS~w9Ghy4*CdMzf}EmI_P9#e}mapRGzNK7*b6;i`0i|EqjI^B&!r^nP^7l z=FLoj_VCvIj+)5KZDX)D-XOX6 zwC~^N;N^frxu^^R8bCr4`|x5uyrC%@oCB3A|LjYVojo%aS}7j<2X`hE|2n&j-yG#s z*)UAW>eO1fU-s$9r`IPgoPR*{8G5Ma+NGD#3Q9&2D-S}X@?tq87|Yc+EeXFpFsuix z)K!pJkB~|;01`UfAhyQ+^#5etYG<<(T&W5&NK5DR)$u&*B<7O&Bu;2ZHm!hsf%y0- zDY06QGs_V}QU7U;dZ?Y6lr_xZtF!yhfC$D*uaBp$0eccLasVMAw<mEHRn--hIy=DhQYqrPAL@gMLL?Yz3BogEm+>_h2HSSr4y|oJ9QlwD@cK)ti8SmV2CJ zuG3*i84#T0mC<%pa8F(?A0g$kTAE&pQ`y{*_A&)_?a3$vtS|hi3PHU={h_OoDp8Ay zsXJ1YnNTS&mH3(t@f_IF*xvoKMlgf2kQ4x&+h<*d=xGoi(gU=B9?)f*zGiP^F)cnP zuMp&p$y+rz?D@gQ##S0Sn)C1eCVFa(V4J3M3NJ*E{MgaLn(CUdU=(a>4vs-eY$9e=7f;Iw4pl;QC&>`r~r3+%P;gM%$3uQIzB ztjOl7aZClgeoZ?RI5oJ+vN>BqDT8l~4;2%DLP3(wO=SCzW+7UYh)#Q<_WLJ{SYI}IV+W6-A zIcp!1maJAuO7QgRH}!ei(QT^A^&r2(V#%M0_DOMJQg45~z|0`ZHCR@5s>4l@2$;?( zR+3GpDhOk6LW(hAKT-C(_m7>-u2#O?kwpLarM7iG5j;JInNeD3HI)TT>>Lai#l;7L zm?Bjs0~1~^^0YP=8D83;rTxpGE`TaQv;qKd#5yXrsr#BR^a5Eb7CU#z;o$t5*2mv= zj)h+W3J#<6DtkcNbXd!@BX(U;c^rf=Z7gy+cfyw>a83`&xyRBi`c6I!SHFGlr9o|K znenmPFbtrhyn>K!&}Z6>5Tr4=gM#$aD2+D4+CYA1$=KUFu0HaQZi&28(!{OyyoY0@ z$^54%ckEg}ta&bj@sZ@jaCSx!)?5&=b%3E(ZOEzhEsDO$71QD8zHoY(^4Z|A#Am}> zCGxkD-!iB#CGRS@5~F@Kz1h~4o%`(EpWj^<>SSnRcPz8itdg|tSaUO?_~(;iT7Xs4 zxvJF$$N!C&hltk($Xq|eMHMG&?f!eG4Bub|5JCp&_T zQ%DJO#wRjV5oesDdwVpS?*7xE;G9j~~1=4*1Z0FE?gMUz6d| z8~JLLb9Px))|@B|0Gbkj8+U7cl8S;DNp(ueuVn+Ps1-&h0E~JOCC4>zuK&FS=5xRp z>O7=-i)cAq{3aZf(B!4-Wn$jhM(j$J`;@FG;d?3b{&Sk0pLf#l^HT0@cLWt7E;#h5 z^?O$HeVllhSu@#?RNomIc`4YnM>uQn1l-IxEbzpmh<)OJsy6zUF-LtNFD4bzn|FOb zAsnP#t_?4`1ico!7WlV5M)WR1Ys-U0@g*8u2wIe&GVh+-17e|E1(-WH#X*i>R=Ylr zuNAWw4N8(fmf`Klda2kd^X66ja)?U++=e_&L=J#b)*5SZ0HcbZRBeDHAjpz7a>!(D zo!~F7e?~1v>sTmr%jq>0^dSNg;4MRy6>h`s_6RR$4BtoJcM|-3e&V#LC7G+fN4PrA zO(^L)s24C92Y4U7OFjwF@qm8p!kfu>oaUGcA9aVI2o6_Y7_qdm$%#<;&b*3H>F=Q|-&B6AWP*>kTJDF}MLp zGT;BgJ7eVm7{uCB$-U!EgnZM2RFb5-N8h$zjc*E{oKuQm zp5qJXyQGNE)H$2=*@~IX_O^*^?K>(~vl8wuEhcW6Ga6b4abK=@WYK$Vr^|pX$ z@y+>bsecILnD0j;_bj2F2{)uySaTlLRq>=1z&oLJU;*NbPT*5I4ciG(p2VGSHP`4duN9wKP`otlFMN-fdd9Tie&QhgC+RmnANW; zAi1A17I0PEwoNFG$~wOOLyPr@fW#YrwRxw?)O3JnA5a$&_XqN}q>yBu$5dA3b=J(D z>jWbdQ|i6jiB=@P(2>j9sX2h5qRzPxWp5&A#o%^|(}~S|-m<1bb~Seaued*Sp%D)+ zi#GfpGX%N*Ef2SMQgoffe6GE-*hlK!zcQ$TJJ1%Km8heMM>dMcHy!{)~#&^XTJdyYsAWTvb!H@+*kyS+oHRGI5xAH7M-om+Y|&l(4>ce30T$@uq!0K@)A zL%s|w%P7TNoCG&4V(&2^wAwwHvR(6BRcs{+##zq!JW0rq44tJ9j&I{ze*G1x=-7iS z(SWVD!U$&LZyi_?2h`4r2YnJ<1+Jdc0rp0(f=vaU8mw^F%fv5+Zh8KO@K8r#^-uAX z;*>7SbIr(`ZG_`4IhQ)yZJYQ%ABcwY3za1)zU-_QBp((|DqsGor}lXV*oqiH=Rre6 zR9G2FW@9ZDUjgc9Bb=tLcccy*-yChdac$kdVznVh+~ls+#CvO8F0vWAS6V|tnGoUq z#i`NUnR51nnydL*%{4ivH%`5uy09?0(D{NKj!#<$KuOWuM0|%%MG{$|(qZVZ?BV&KCEqQh&K6TYFjNTmkJSknuv*PrQ2 z=f2$W=Kb+%{TkD_j?8bl$0xLulCFyz-Ol|~7E=7WoC6ijWuT5MHuaqGh6^>Ej9+On z)LNely54tu^Qn|5z|y`mBSlaxX;A|p84Q0{R^TffRlD3Bhghzj_H+35q3hPyI7l-y0klluTsK=l|U>0EY!KR zAa;Bl-%931p74{hDs3SbPt&3WZh!GpI%?040N`r+jG&fGV*|)8&ig z12~hB5UiJ}?mV&hIOprVtgJCZL!-F|hvOtkh>B>FTi z^RW+sXHwwkA-pzB4Nr$<()K)ec{y$D>vNm)qC3pZ*gn+Sm9qJ!C_nZl-7!L`!7Nxc zekKe)3RyZGsvkm-LNF^?C5_Xy63fZq8p7#DK3%0$I;d!*ZmQMNuFdr81epM~du;pJ zhm6~KokRdK2Lw)7bc#ws)I{^r+p&Pded)t5cNX2^j=VJPE7^BCsPBJeehT^oP78nU z=*7v>)ZD2%OaU}CuG@gFW_)q_B$85mKWoq7I#I5$rF?$GR8DxT>s5q4PusY^48`_X zIK{Q?um+R9_>0#$S&~N9FP&F!kA}v13K@GqQnkgLBq{)IC2AYEWT()kH71hXwouSO zxwEN>xl>8bIKBQwln+)^<{V*CS*HpS`Fvl*+k)dR=c9;|n)+<{y%3k9qjqm&j`8dU zqnE!5P53NI>cYbV%#<@zFC>V>8om5F#TMdrqFxuOoA}xCJ)eLqr%3W}VQ>y@``O&j z2Acb?lnUJFcCFD&0tAlL)wQ(1$NTrtkMrA}(I03yMQO4O7V0w=;ChriKX*L)!97BK zI{t7;@JAIW@#S9m{!ci^H%f^viz%__be+9*P=OOlc8(otW(DNSe_#!DYFUSS&*^U5 z6nMvRe+X6-LgqnWq|kc+H}c{I(i&!*Q~T_RkWb1Bbf88Heu*tBB|nVOJGBjFKT`PN7k&AfoJQGeVr702)CXg-}#W_ za03ddtNf&)^v$-H%1?|U70G$$wu{Rnfv|kW?=BjFAjuX!LV<4yGclybgcF!~#(7W^@ z0gq9!$j21;H3H)xyX~Dhz*iB%|dUzp}?^d4~^BS^GID$WW(zRgDc@dyzuKG zS7^Q}|C@WiEvfOdA`=rrU|tt1#^o6s(J;8Y+H}kF^D6H5E8qy9^$=}1zjMw#tWj6S zG0gFNR8lbL<_gsTHs~YA#()=8fC3;X6Z`)ybZ) zBQP!*DfUekU#Gp$ZxeR!A?TvDU#5T<(}~JQ8H9xPx!CdFRun``RKX0wvfb!JJye?h z1|)C!g}c>jQ!li8&i*!f%99Vi3iI{>vXk^k|IzqufW=6OeSApP)iFUSQ_KDgeP`L9 zv;)SM4U;YKOYYhP1K1VtWwK~#D0pbGCmury3hES)a^Lt+KBecRA-J1 zK1`uDkc4QFt|SDjcZd7h#frZ5n3*d&I>tx5BypgVU?u{w#>5|eUvNnU*`S@N_)JhX017W|Iv`)-UpImqmSTal73?(x0S*-}4AgOC|C6sQ79&sl z*Aa9eTNuG|`mM=Ay&O;_j}ObNFyIEkbX1j4E!#=50cN+lDpL2XJU>8mwt1*_D);S| z$s9wmKo%tqCDMUIdxfXPqMm4up+u%x*b!nw8LPIJ2;BJml-D+Ao&wS002h+ub9eJ> zMbCtS&B5KayhY5l1nbf}PTxaIeO9kaf7(bs_gM##`F(7sgdqe3UY`&vYIwOt1E4v2 z+~a4`& zqWMxg;u6XH+=@B|YD#rqV~oB|f(>eZGMCs^(rB5n6xDCe;xLksy2}~9dvLdO>>-5f zgkA)W=#Jv!NENFX+mLyZGwWExyR#wmO=`vsr7hv)oVhS5YN#OSNGOOFy17 zNN%=Dw)&B`5?{7{;JaH8h!crGw~C0WO#JO>RF2j$TpvY0`tkcdtAE#XBK2zG48kp{ zVda+7Ewhc0uT1Ir7E*p${U-wFsxtEC~7)8dP6Uc~a@xuTk5;HO%%o(fSPXGZ-H z(;0)%*$(xncaYH4X?LEqP4oy`{{XDbx;0(Ij~N~hE$_~Yu^5Iw7b~x*k8ls5F_yft zKQg9Bvc!E{^;2DTib}W59lp7Td!|wQuGIMIcjcb|{i=e}{M^FXTH3zrwV~h9!D_4b zGj;O9*ih?I8nCz+|82JnclJ#jjaBibq31~4{f8c$DJZHr6L@Um{8QT{#Ir1PskcWm zY4eR;*rMF9(JAVq7(n)K7Br_GhvcPyaw!MmYU--|c$?EY_%khfFFw*bM;DWyG!J9MA<1K&6{!g3st8n8u*W4kTR9lB=g_Ej|gD39@cP4xE%! z1*OA+ zRH>Ctb?j_qSUi0=YvT6S<#0K@ViSg_brH(BQC-lQu5xZ7EL^4V{>w`xj%D1^5h6(i zAFN|(;YspxYTD!g!$rq2P>0ai;U9zLCLtMdFfMfz6k+qPbr{SU#Lm1~G^Z@p6WYhn z?rHXL?pFQ&TH`@_G+#MVtdv;(=RX>A69KkxJ2~Mla}gXVJRs{kO69l(zWz(=Bz3mg zhi}_KnUEV#FSF@!i$BSw%|$!x$GZUy8ddgaYmZeZ`)Z zYVM7{r9CZq%HM+|97U+STaJF@`bI-u-_u!89gMR_C(;`5u8Lszh!C#T-Io^L2>Gd2 zA3U-(>USCs(+5!MaR9Uj!8O?|HFfr$IY=b&*li!SaVeY|@024`28cdGryce^@zrbN zwH_1B-}yB%YLN?RNm7=SjG+j(zJtX?2a;{g!ppO#!;Q`%tkqvy8rkY}l4#)0(8t+s zW9&Cxg<0)!Ds?PVSDqO?F&CGIy^YH%uC=qKHI(F1jJ-cH9FE?!1WrCs_1!3iWS1`s z9w6Q>qkwfN@68z8vekp<1sipw0eT(H0?RF*II0erkCevsV;zxP#D+foinsN8pfsS9 zjJw)HO>leQ*F9cP#Am#SYG8cwFI`d{Jjf6MD=rIb9qi0$pG4n{sSl}wh z#-LKz3-LdD#EDUbStjLMs*2se{*(p(V@eXbFi^3oPFL$r^z{r7`Vhjsr=vTyWCqAq zTJh0{riA|!K7o?ziKW<_7_2FfRnxC^@TPUr{;QSk zXieH}DdXQ(``^Jsy&3|D>P*+06*S+*&1d{<42?gGYVw!9%HCo`hBy3Lc;CViUA*xm zEWz5r3L)5C|(MD~g#JN2{E23Vaj^^3#=c<140f3lfPBFPA6XUzu)>~*c4he|! z$We`=%BPEAyk>7IWF+tq0TQYo#u=$lNvaqwx-#9Rf?0Z@WEv83>z;mkK~dNSFL{wV z34j8H{vd%!(J+6?QnswY#xg~7`YT=({*33wlw}TX6SW6O3FvnypOBuv!gQ~a zpUxb^nL<@}9Cd~f)d!iU78d@IZCQ0^ZHr3RI;#pEgoZDFOhU1UbKydB~;RxZIG@Y7%-t5?j(@Z z2drQEVihfNmiQ-E+LbQR2%eq&DHQPk)frcCw(0bVX8$@w<4XD(F0Y=cPncQOvRsq+ zE1bjg)8KN^@9z@VK^}{tyK@P_&oRQBW6J40*bho?ZW%mR$7NB&pQy3b#1AvjqM995 z{MT#t#x;rYn|TS%7*6&f8Ka9U>+K!%|Iz$lV)AD?lD%X(=}~>VN~qUrw1hh=W-Zn7 z=PKU{08|a>N=gScx0&AjH6lQ3>|w39W&QEVe>816G7BX=p?AIH870|pV#{ddfouDL z!`;~(qN!+$ac-YL4n_%eb!zkY?NoSMBad|P2kOVKwV{G>yxM=W7UQmjjOjtKsBL(7 zn??OEi?S0ne)IPEN@kXB4qpH=)#)kO8Tt}}a_GwI?Y|{v`yyJSO6@t`ZScdvc2Uvs zmu-Vj!<|}I$GdGOL$8KHM4ofnP#=NUo1+;CVkzf$x1+TQ6-nAU5x_%c(wWGS>*ZVP z=jbOO{31_r)W_nBTOB*hxR@^xCPpg7JkJj={-Bxi=M5o5=Pn z8|qg?#617fQAJlihx(j&lG4^W->T(-h9Qg4;nu56War3ClW=byX7MC%SGk*p)!c6M z45Hzdi65WOluQ{_y&jHOC6bRKxrjNRJbmg&-ddlSdzvF)9|-zaHbdx@s_B+^&;Ff@ zMvrwQ;vESo09fCnMz$suSCUpohxQ_s%j|aqr;fJXyWYs;qV+>2&}YQuk%f|%YzUxK zg}_2Htu!^;X@q1;o8fo&6@ls-WPQZ4&pZOVT3h}SplAfA1n?KSX!b>1dXtG(TE&*Wl?(N?$jsuG}g>Fug^*?VZ8@T@2 zpZLdlJ1;y&WU}o^P%vD}-f-vad1xsrn!}oVSm+L^)96uIkST}i--!_Ac`jS(MQ&YR zvsr}r1k9y4uKN5AGp@j^R^02NL(eXSu?(6)HZ}qFJ7sc9g6!hJ{63&e@o@=k}g=7f) z*n8e?p$=T}QO$$cBT=U_ohL&9rKFtOH^gcy?t3Ae>^2qh+Exp2Kcc=vo~kUlYn~2* z*=sJ?29Yw#?mg&S`hZtqny$Z`DgFVjH(9I~kUSvFkUdr)+lI) z_U8qJ?ici5piN@D5Ir@yyc(%U$v$GYxgj=!O6s~-k7QLI9P#3&2^;k91a>y)8T5`1 znMZAa4FDmxGbBSdPzPV6^j9?Mzio#gtC^3F2lhOC@#6?&5TNiYmN z8PxK>)j1>)v}6N#5q1S&yIq&=ryrh$w6&SM&?{Rt8d>7)lH5GHe1f3keQR=e`IEtq zyJsE%K*vh`C4oWjQLqP#5kr@Z-0Db+&!&&`i0_E*CygDq3)1NuQQ~wRgB7IeQ&+(4 z_YC74`(){~!A#9^v`2*Wk-&|~P1XjT^M@*+bU`gdTw>FGS$w1lkGE99oUn^ud#u1< zf?UJN*Hkj_dAx6w#}9oC zjp&2U&;zhmetd*8A@LzB9?GHcq7yjfhLbDfm&Z@EWxGQ-?p1_eM+HXBVr=NfwNFcc6$Zoy%ZoFn6n# zgK;H|Cnto$*be-&3c89E0HIp1KsGPf>ZnC~H*uXG9 z`PBSum&i?JX+PH@>!v(yAw)M~LCN8}ztgaKmnC!Q{wUpFi1gQFb1s+piyA@_o`I5z zZp?V!h9-(#{06t{@>x+%Qej<6#l^5+QVe5rR78PJs>AouXZQ}R<^kDo- z=S*`xy0zItLW!%s-|}^p0%zN$(p2<5Y5<(L#td@>Xn)&OVNysbS)CMEUGKd#kSFWm zS80k?HcNK6BP<|S@PYEzPPwwQ9?hbhQ(HV%k=O(w0Yl^PE+CJ>@DtXCU_ij*Bd=)_ z|7y&+wUI<%`C~!UXn1Vs_R}7DSf3IMIK+uax}K|%;iON*e2ggi?QQ#8FO@=Fr%nzY z&nZY;WVV)4lvKp8QT{PJO%yL1aL zvUxl2cw)!X*IK3bjvd#*0%Tnx3I$HEkt?q#TlNUi3{L(-N$$9{IJqdBs!NoRN&d0x zZ!6Ss$+i&(O#~6l04~K}j1+(o!p~-rfT#5d!z-?xn}Ep`RT&% z%pXl`G;J1^3_ZgH0O{=P1@ysOq0YS>@*g)ilXR7)@Xz|SK02u`+UT{jT;;r;{jJTs zL;N+(up%@cDNI${0{o@|>PSSYpsjmu>mK5^X_c|8ZS02lQ|HZ79D1&?^qE)ZN2daf zsOc=yKTq~tltRiS8`G0~UZPmpNf@UV_WbU9N0f#|dH4CrePTfoKPi7*i$bJN-*I0k zlW*(`O*Oya%zC>u+0GPL+sN$Q32 zY#ABlhR`3QxE&v0Nx!tT?$d9=`8N25#|DhcW@lAmMrHSUO#B zkUif5Um2Sk%4*d55wCkGw0c;GGJ^=Hd>Nio?ehYi)k?!;Ap@5eK>xl!AVOniEDOOU z)R#owZsw%y$(&p@BAXNKyPPrf|rYNWv4a$auxI+>%HTK{wx{(OJ0r&Yuv8Zx^*o z7$s6I8OvaOkC5)ji_O!aa=HQ}i$87`zu0U4+$q_-`L97tYq|zlI=~mE@45M~Q3pVb z`!dVAL5ih)_pmqynhmj4$%Vgmnw7vw4FKUG`K{ zO*#AN$w%PsT(1Ono{u@-%ADwMV{vfl)NdJ?b6p8n^6_J)(x;eE$~YwM~hWv!bY$0BgUkoa{4pclXTDD124ZrU%pn1 zH4^UWX-auHO2eXgsIQVa(A-`z*R1m&%@C-e7*9(;-_5s1-=;11P%RA*)^VM4O$~pO z@XTB5ofeuIqmT%2^n9lW)w(C+BBzEta=aOvKvSLb}}^x%)b3=dz#Di)-FD9aOcb>T9W%{QcRl}mOl_WSCd zn^d{Am{VH1hFC6|3rW6rJWxe%k;*qX=G9rO4_YieStht=ct@*{UrmWKag8SIS z*|{bZxJrw&Nxh0ts80Vk{NS52v^8OO<8(+N-XsWk>e;U)HsL;|m`Zp&x}6oy;LH0V zP%9w)IKL!k=<9gZ(LtXNNfv|;ASm~)3Xp8qWyarZVD>XOGb*-CF(h*d!4cU>UbkRr z**z2P8T4E@Cs~B<+-QKum(;qR+b~t9p-hA)M^Fcj|7v1 zH!6E?qMi`SntsRZ7T;1aRRAz;n3W`{_2edrJyIa@SLwYo?Zou^p3ggBEV!z~9$eH- zfIu^a2mFsx2snq%BA>U=hN61T#Y?rQ69O+%CPq zt`_w2QNQ>Tln#6g2vccA?tLUCo*a|(i5)*SqB_W;gwp|bqyCe_HNCY(39Igo0CCmB z*P}^1mG_WGKhkH9ic^E&Y>`j`zNcc{C%KqK_ZlhXj~+~Wi0b7k8(FL>UBco3<5wz8`Z4*d zbtog1tAp?HHg?N9E8&%)YCAki|N($Juk1ukF`8n-m6TE?<^V1J^vi=!uo*D4A}iV`5UDHODg^OhOlmr>75m+oV8DIv8br}oAXR?u@pj%}H>)M^8(*kn z;jKxLY9%X?wljut&J6XHg`5_eg<00%4;F+Lwj?t)kQqkKxz{zC!kJitWA4Z zOL~i2M-CUKG#=b+lqx={3nGI_(DM6}Mi(=GX?worc}F7>A-yB> z{ms9MfXQK9n_#1UzSt;do8gCW?SafN4P9hfctUFs_pXvY-B(+^lnc-O4pZGg37#ng z5nt3-nES&Yzx&}=H(`7nUGpd72{}dijxz!b+f5b=Jh@kv1Bg_pI5a zMye$r%jDQJr^o5z$9(hJe>C3wI~B9A4+x_cu3-V4CFWsjkOZP9~^+g?fZINsBNv6PAD-MOdN zS#*oRKk8y=T%>ImQRxnnMOy*35xP0N;_w>?Ru;fqM>STU+q^Gi7DGlugD5INY3d6$fjn=lnBk|vF;LpXN=Na0%N z2YjK;9KwbZwZD$BYNs!l5A|TXjU~qtwP9n8(!*;4gP*xe$)b}|PCZW`Vih%biP*z; zUeA3_oVlH;;bPf%8*oCT3MNWdPG-PHEDQ5XUhz#!earo;kk6GgPgC9q-v=vEU}b@Q z+n-X4Dh7*%RX91Lfewc?5_WF54Q1_u5SLJkD#^-xc_u5~6o)5wMMBsbw9VOnFI;_U zccUM@zJ`xKzqSi%J|J`d#iGeP!W(Ld%@okdXClwHP^9SuLU-~KK`q`n^S;-Sd+nN_ zBW>~@V{1C)MuMj0F~q<8mhNFX?hv63(C>aJVBKQ1JqYKv_uU%ingAKJ-o_Q?Pwsz7 ze2fHyVZ4b*P-);KH3~*BTzdoN&{d_bf;oCb0Ou*r6tW7B?~3Q5WS-Q{Lic{fbG~h_ z@^`up6_CcS>~JgSd()}J)Bb?~&rN=9ocjj(PkT!IJD=yP4iQ=7 z7#j;qN1Y@x+Qm_#TBLw&le6sFgM?+jV;uc6-*>rV`XJnD1y{*MV@Z&M7TU(prC8&| z;uCS_n4(!ay9-0m-y)dAsn6NVpJZMuXT(@HJb1xoCP1JaH!IG*hHu+ww;go2(l`;A z|I31u;lsi|92PK7yJH${7Ci|TmZgG1EeDZY+WG;UC-3unP$F-h>oN;4lAb)L-sx#1 zp*Em+yj`g4*p6a_b>XQzALw{rJfDN9Emgd) zcb$VZ{P$bw|M?;hARZS5Yi0gU8~<6n$c+W8NQMw%JBzhLE3<5)CBW`@Wg+gg^X+;jUsIV> zD~(l)lCcg#(9`yt)0um#Zj+5Uj@44|vz>8*CM&u^RN@Vjpm|(JCb5 z|LF2^)XAcoq;bre80n@D3+ccFz0W7-qyN#%`&vtzL3?Z1Rq@Y}a=mtYAm3BOyy=6H z7y9B%qe^$yMJz`gq{m}{i5tS^>37et5L?K66!Gy^Fr{VKFo*9ynkYKCmdVBlU7L1Jt^?iKinWnU|5TKe06&j3F%UEbH+wp z9k(OwS5@quvCseN#uxn1>H2|M&R~9qGUMd^7jk|Vn3yl?ULpKP>_r)i6)AgE%2=4Ng|ZeE+h1mJ<_3`BVz6 zw4+ilckt5{AAcA0%ZPKx)()J~-f6q;4d3;MR3{E!YcuQ>6c8B4*@Oob_+RZAane(* zW7>3{5u!%wGQ#=-RlaAU28x?d{Y^6$UT1pt2&FlF09XogU+ONO73>9V)Nex@!E~^f z@Ymp`wC1igrXDF$#327eS}#@8xz>pm-Cf%Ud=KG|m^NaKZWn2uzwuq}0GWGC_Gk9* zbD36bF)^OOadv8Z@llL^bgi`56MxE}FLfE4!{9m1CqC^@7aWt6yzi?{ZvHh+RarIL3Fb>ovIy9bzZ4x z$$&gP%!fj{FZ0Cosbe6`A$(^HAFDl1!(D4VI4a72rtwVt%+I{1qfc)shiSuJ7Ua1e zkeW&J9f%%42k}hZ`E*&S^t}16RbJXw6a!!0GWjc|90-%at?w*{E@6TzqADZ7u1YJ` z8cILPQgJjQf8>q713m>K9bi0Nl;_o@-Ebkh!8QgHkNZwq1!A1j$<){b?UZ@fmi7d# zw^D}2&KY+lssygY^)Vo&0q6!Y55zN06`iAytX_hz{14Z*h;;`tsUO83X*h(Lt#r%u zBVtoeZHhi4uJ6FF*OMC8DXmOm%4jviy4KU@#)iQucw-y#T)KkBP8ztLTYsN0>8ULuHeO zd%gJ{=$km09G+|Zb9t*-EK>)hQl#Q)!}(vUj3*XJQgXCiu!S7BJ48gfRCC9-Z_~&6 zB1Vu40YX1V)Q2~rtNT0m1$Lp?t6)lfMZ2*qSyn|sTvCoX*07mLZ-b-a=SB+?#m@>% zt1CvGf&$c%!6*p~;FEp)_I5}Rf98NhS@V0zw4t}>Kf`v9uVwX@mGpFnRGn875GS2e zfiSi$7!%SJ8jIK8{U6(gcf1!3Q#{TO(nz&Z2j}Ip}ZsL3tfKTRRGmPGu^#PYz^qE-m)e^AwGissnZW zd89IMFWW_z>sWgOXYw?Yx*(@hE$SOC2tI6#eu>8ju#c7QgPHi*Y6t_pK#% zToGY_o4suTuRb>hr$twD@E5FXMoKnbmxFK6^+Q>y*FzUDt%TwMxY%whhn~4h+4wD| z2;VNt&!mA97fKmbXxkSs+yOCCuY`seI<|XD*GE-TiFWV*qls}sHh1c1PD7p~jIOc@ z2hu(j*B77(?(MB*ExxuthaHOuRqzsV%mET2bY=*i)f9^dYVAK{S6V&YVT?IqI&)2% zR{Is!kJJzuO-YOIkmmk;dEP6 zp_yje-M2x^vZabOgV&Cwj7B*Ez6+|53LV#dgm#6*DzJt817cTZwH2J6`Y4n%hQ!Vk ztQ%huwp8Eu+#vpYQT1fgrl^OXuR^$SHCl9M!+1`$PySpG{!37UCU~PPO0j~ZIePX- zC&2U&(=H(1a)Gnn;?@9y0jVadvV_+)aJQe$%^vfW*@eF;Zn~JA-}jkRDSKICzEvW7 z7yd!4*all+T5;eW^uV~5b5bGE;Swc}dSj^~u16{II>EINo1kl_S^HTh<>CGHkK!)> zy3>txfXO=*xt@z;2tsOf31fZuLpAX+w@{KvVLsBJ{`>6PGX<_)KxK8^J@K=%wv!s< zP?P-D;v4Zi{rCvn4`1XqC!`nv&!UFzlQ%3Vujml(#BW?6{T;B-*zri zT(DbWHh*|`PtR%$ht?7o0vwK|KgEj}85if+fQMnpiwva|(0S7CAYpZ( zU`cCL>mMT}Z7^o$=vd_#0pLQU>yW{NIO@$VV%kB1w(!Q#pK4SL5(yVo5T27psX6*xI{9=hB!{8Ac=p`m(WL{3jTQTT~keV$24l@EyjsS{CBIO%dP;>~L z*aY~Z-))ApEgDt{jc%Yv^BqC@nE^u)1*BxpCt-)59@r|Mr4w3#I+Ez1n6Qc)h*lx2 zw$sIYTUse~Ba9hMbrky8P2OggKX)K9)Vh4x=Bu0<577Q3kw&wbX{MM=y+U@uC@h+s zcmYlT+997JAtd9k53KPQj~?5yrhRew?0opWBx5woTK77oG+Hb2-h>1pF)3O)6zEG9 z59j>tk?(s$e05KhR~!DLv65_xNVay0PTWhx1JcBc-reoFmL%x8f_+MaU32YPQdf=k z2Tc6ej9zJpXq}XBAkrJim~8C#KJWkgY|plP&pr2i3&Nug=kZtyDko+a zhXwHa-R0-JobpKE z?=Qh42+4@2h?xm`iZICu@AUw$*|!!iCOp-tkLl7-t%4X#c86MJN#@=e6-8^iPz+{I z3}Uc8+=F}#&ZID>$&+REcSA=@j*^p!4AvuDD*Cd7W;8Jm2r$kfWddaX@Gva;wE-to zX;va`_#~42C)1|0@#wYEQc3H*4|O>Ti$lirsJrkNs2C6nV2Z~}QN&L>cM-%8LH-H_ z*x%<0u35y`@eP~+^SJC<-}4GFL(hk^4ciL~INfhSX{{5MGU3Djj1H`BYNJudRUdxC zm|C9)rMM!7YL`t>2KO$!N>7UzeC1i?JcfDjBIz3q->uB)v?jfW7}}r=W#pYFMfd-s zk@a;90iD0<5Wep1T9g*wEOWprG~6^RLhrKec$(Ct)u_n6bGA9YR-QgiVE`84Yx+}g4u$92#HygK(gZ3a#(J(Kj zhCL5~5Dma;q!d397u+G(qEYhrM=-kBd@HCRYPbeHDid>>_gX;xitq*puvs`-k9wI;X00#FEV}yN@G!rSF8p9evEx(Qy%42vfXmlU91** z7SgB~pf`TIDxfH1Y=GD!jjv%?A5RAmus%T_tmuomd+PatChC<5D>uVCaqU_Qp|YUt z*1cOb_CHkZIiuKrPf(e8$=aYeut?)X3Jf&u+Kg{Wk%&w#PxMc$s1OUYyx=oJC8t6M z$wCxM2s3HC-xSp=*gv)00SWK;>bKP>pWL4V*TEJ45?t8e)g|1 z4MW-yujExEaX!%H*DG6s#pjhBXFdXl3GI^elKJzj%U81Aug7dpbu%O=LF>1S=Qq_4 z+FaoQkcRlQA_Du{qMuuBD$a}7mDBPHr4gg0QDVY0Sv?G2#Ii_XWHt)a0%C;kZd7=; za)%mQal_YPb12||<{6}!7$~(DFzToBgE`jiX@6nOUb5Jy2nX$;6yb;M3M>UNtZ6Ed zHgm`*zcPm%{?p7+-mFe8$C2-CS00!t_w4rQh1BX20NqbKm_^Nfo+=T(+qcRzRs735 zH+9O$@xpg&=^(LB7a;GE!T_HOe7Te7cpE5}6yX4Z5UJvE*G$avlLH1&P@;g#wsV0l z$WqzUn4XdF)9Y*(Z^^v- zkES!Q2^3?m@;vnR&5 zsrK4i>R1RTaJGO%DgJdYyJ>zxX^V+4M2LO;a# zYq)mdnUe=s)!s3$+~0t0o7G!ui9Y@Ct2dLS>rZiT2KOmwNZfd1uf$0tyO< z@(Vl}7a*z&#icU;>pZ$y60J@$cPZTrbDT^sPyyR+AAA_M1DG;9c@eOZ_@(I(Kzem%$_lL z&v$viFSw!3k^g5&87NOzum4n3tAy-@G^THLrtNRsQF;$eNLTZ`te1He+f6+Ggj)Zg zf#laSEc+FX!ty70!^DP*`@ar{lr7)QG2HA;Q|I!#FW|QkZ8ZKt{Cx4EncdI+tg7C?RhbUqX0_kBaI4uJf5$TsFn}cw93#Eev#s z@`AWs+x>;^&&}YNC3wL@NN%Y&~;1e-;6z2*r}`<=C{GS5PmuZ~bxp_Tau_$O4xP%n<#(^(0mn(sOG_Q zxDz52DME1agQA?~bD-67H__5!cd1Zd@8+2QNcxY4%KGN~s~&y3sv~R?)eyDoq&jr5 z|0`?9;}(b%svWLF-IBn^@g@W8WQEA=Icdm7U$@hFQK!C}d%(Ju+YH4Fu9+8bReh*7 zjB z?E~xNkAK}4>)-7ecqMQ=P{Cs!p?u2??Yfm=BR=Wl>K4Y}Gc#us9E1cgGO0{nm|-z6 z%O4=6*g&d>@$#8*3bw^vtW=Rp#9ge3`dZ_RKk0dbq=C+SemlF)+%RJMVx|piPTFUY z@PhF`@K*DO_?D;?)KvMd$^rW&w(@`ZP;1~I;DGl&HsIcF5ke)RTu=g@XQr|Zzh1r? z&-_YfeJSyVPw-(69lk3SnhtDj>74zJb&?Hk09CiOFI%+CnJ%}=G-DnNRp?Hiqu(f6wcl>i(dPU893W5;#aQ6DG02`A>ou z#fCTex%%bu81I|Xj4(2P`rQ(D)%@Wot{prQHUMD+Izi`%rvy;{gzz8k8&@*O#%-@t zB6XOKcayc{H9?39 zDTu5|8WDU-iYKc>b>_r_n&OJrWz7b?Q$965Fxj4&``WP=WTvo#II`8aeY;FqI9k)q z(g@5xk~?RPRG^^==RPRD{4xrtAj3-06>-*dVeRM2`frT}L8 zmxIlraJW+$Z{ZNEo=4$eVpLx5*-l~h4T?6-;ug=T#AvpMi=Ho9L?lYq@QEPYT^IR# zMUJI1I#eV~-%BRaRh;iGJdoatJb{m=2!{dXb&XVrc~biqnE*`Ht=@D#qC>ca*8vo0 zRN5+rjhQZcOtgISsp`+Ph}x@!7K+dteA&Sgp<4j9?5xqyP4j_!pn$6-TPaF(zw~za zVGF)w$MDbH`hVBpyf86>Vv^pK(00UIiWL^b>|DXpu-$TO|DC+`|&;i@833lrNziqK$gNTI=VmnDHAcTLAeX#)tep_9XZ710gMemiYPpGrK zxN|{L+JgbCi839xy!co~q6D&JydIXEj~)UoY+s{@6~ z`}~&X*FVJ?_Po$z=fYrF#zoxZwn#gn?|$RX4l)M zGnOJhMt{vwylk#~xg+tR1FiPpE5*G{vPZbfx=}68iu(x#oZ-jo+5T)=yubsx8_DC5 zVRHFF-SAbVHineb+N=|xq{|Z?_7$kb_php0-;X`?&XNid&3zfFZLsmX&UKC|0=ao* zMvwQahw7VwY@xW#oj_C565O)d>Ks?qVbCFa8li z1=@@LM#HyrL~lx{6Xu6%c^yd|gJ*FiSfhA&79;rhhtVwYPf=&f{d#=G9fiaiPdc1| z#ccNw2rnfm7Bltjd3R@OG&-R56$rm=nkvQrc^B)Lz9Yo?31|7P-|zQ?#ATf5hb;kI zO;FPLD5)G+{^-XdnUt4As|5QB7eza6V_K z_IaV23Dg!F#r5o&p23wn^tGk;7?ktgZ<5_yf3bl%$%bTYU|U$D+$WOkb?g9oOdH<0 zcCxCrFlbBD>X(kMpyc20C)jS2^Axx{F!QE72d;4lQOa{dS~5Y#53~zZnatgGJri2A zT(Ov=rcm@@Ti;ijhZ-rYQ}hfW5%K##YfRUGXUho!H1{!sViKevmv7lE-Q$HWv>TM} zmjmf3E_4}eYzzWbkBj9eS7hWpKc2ICAO$)dYCUpY!e1R)HsND`L%VLT8-MZS=tp#I z3=PS#AF3*!Jo;X1{L_Fx{MEoxc<$U2y^snOK24#GH7~B{Kxmf4X!Gvrb3e+7d?*U)v(nw3ojGQ+N zD8Lr75s$mNCYhNd5En`{YD`i)@>7hZlM?So3FcM!OzZ?<<_AW*E`~HrZ*-X1k=mvd zgjp|7*!^1<`&_XUD7(AH9^PV1Ff97z@hCp?HU4{mr15#-zvC&ClmRydN@6CPhDTZu z__k26;&f2-260%FO9qVQ!onI^5@L1IW zYzlwi-qkrNuh6xvyCT}HDzIH^`>?>Oy3W7><4gC%$w`0z%$oPzYYWg=@8R`k@2C8& zO23g7z9utu;nUW(RmR5UQTlP6*Sa>Y<73M+DIwcaU8Y_Yv3KE@KzIl^8n}0!cL8R7 zqKa0@0C)A7mk-tfe*JZKa9wQvW3~?;U2(sJsFiR4IuPY10&0Y4IQ0jL<3OE$MxE>= zOy%r)nVI8s$12E6+%MFw_&vPgYAywUtYY3#>5Z}A=ru+dc$@e`ikMtskocv&_Nrh# zVGD6s%(B%L0ig(65Qa|_FTy4v4VL9$moxhBw-CzG*)ScW1!_%gJqMb%ywRcyXY)aG zntCIXjfm~sTf+kX5VtL!dJ2xu(rmbHH3chl*hSMk`@}TXn(}Voy7h_vy;9TC7DmH` z^$;(z6BqiyY?I)_3G=2nv%JJ7fq=faL76u5HQ?d4MGQEvg)zcrZK#Sl>*xe^R!<+c zQ!@B|b9;-OdunqWn*_^ZYW$Ukf&tpWDD_&aVh?-E!mr^u_ovhlY-mBU(_FF29WNeN zj#Zc8x6CP9(!BrtaFE4O;vG^KCKi6I$B@+<6FhRg>ze>*FDs5d-j4z9S6+xSh?Q3d|6aX0*!=D-i-JyYrP7jMz?nn+*l;Sl>&L9oqy&OA+j z*Z&nqD?Wdf@Pk%OlXkp0^M<6wh)%(n4o7$`q;skyJFt)IkzT=v|7f(Uo^mup_lo5D&)OjXM4MLIYCaCU$=)13M7hH*TZJ8DK z*gNo1kjPjKG5ho8-p`0SQz%B@{Cls~Agqi!g`|OjsMFmS^LkL6!6%W=cknx$4tJzh z>O@2Jk`^8^NR-n~p^&I$z~%D+S&^cSp9RF32JFy)yn6)ss>rRMAr4un+)%VfHIAA7 z-nzw`1Fx}x*`Eg~yc0{{rE+4zc_CCfima=-mmh|oAJPFOhcr&{kF__p3N?N>{^*jG zw~^?B`#6^HI89{*u}#c}J)2tZny;z)yI)t)nzdphkS9XfzzH5gwuIM_i6|ks+hM}0 zD8aTLF6#8h`T9@aYdPlGt9A$b>k%Ai3CV{Hi7jQ;_2uH&u4!yMg=e1FMCyG;WKR&& z)5+RiA4~ryqZ75j^Y6jAgf--uv%Y9`t$IGm)dpheT59QX&`ZZ1_ zg#Uaqd4S{~KNDOKtAxa%8pA03{f;^0JEo)?Wq+u`wvRwd;w@$!@1;{BPMIcaMciB_ z{DBNk7!7r7t+8c)8n=sJps2S`QB0~0g(f0{s=Vfi{)@LQHF?u1!!*>rd;9y4b~r6+ zeYN%?$ywOx|5BcoN)qmIUuQ0V?9YWo*{~;ylJvF$L!mO+xuDktn&)3& z`p^)9`P|v#_Oim-)$i!x>Cf3aM9hazl>cZ{flFgB`@$#=mCOeW;^a7?np1R108W?m zJTp#`opdUgqlf6^iJU)G1mYiF0L_8U%l&dFAIWeX9KZ88B8SiB*}kc?8ktzuGR70<|z1AW#Cmk+Ew#`JeFXOm27WD}5j$Hy{6e(QA z>$Q~Yey@{@JW)-S6));`+EXqIgog;QmB2?I>d;aNd$L=pVc5gh;PsDSrUO0w^&3FR z<)zNspLeJe3vWEhGkiiLg%ky)H|f98qha4*kA_NM5lif7Fxl)X5!Rx!v55%_*WVM zZyKGsqVsQ}ha#rzr-A-jC)FIWJVQD`DWRa8E-oc4R{@DK_(T)j*oaZ}*jQf9)+>FpuL{(T9tR`rIYI)HRN z$WD?E&Hqi|CWU?3W0?$(eVk$NN68HB+;*`W7zIQ>S+w&)vcmMk!yZP<{xEQOSzzay zqNBy4qD%skJMd2`L5;8@)?iHVlVdn`^MO_ z%ME&v4j6HQ1{L2zI1HFcEf4VS16FLFV#0I#3#pl9vmYb%d?tUMrOcn&Vy1Fn!aq0t zJ~Vy0d;D{sf%mw4Ujj%eR5>rE$cA8m5YIn&^*^bx1%+IQ#zk#hpuq*S_`aUdye8(u zV}!bTMK-_sd&y#e$ODLJkwZT49@~Ihzts;?EM4C$w?uWvq3%GHaqMi+Ta#R;79G*s zR-=-v)cR}sA40`Wj==j4WMPWw`3JoR@&zs4OX#;-f!^xL!Pjo&NHhIMvl8$NW_=8f z?R2XI^7eGQ434lXZ~DI~TL=8=4#d{h~qUxFwve5h(`yu0-pX0U^#4+;M}y8E$7 zk#WqlsUhPBePnrycW}*?jTrk>w_Z3iE?7*Rz`GWGg7z|g<7 z{j%NapjhI&Q5cgZ;V6Y?HAb3d-c>45PfT`X$AS-q!ea)BOY!l~-I}J|+yWRr7@a

Ro6l8audUgpUD{Ssei{}FF<)VP+ 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

-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 XI(!Htjx-zr@9KT%qKf8@$9ezR9xzf? literal 0 HcmV?d00001 diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/index.html b/obrand/obrand-admin-server/O-BrandServer/wwwroot/index.html new file mode 100644 index 0000000..814ea7d --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/wwwroot/index.html @@ -0,0 +1,15 @@ + + + + + + obrand-ko + + + + + +

+ + + diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/robots.txt b/obrand/obrand-admin-server/O-BrandServer/wwwroot/robots.txt new file mode 100644 index 0000000..f591645 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/wwwroot/robots.txt @@ -0,0 +1,3 @@ +# http://www.robotstxt.org +User-agent: * +Disallow: diff --git a/obrand/obrand-admin-server/O-BrandServer/wwwroot/scripts.js b/obrand/obrand-admin-server/O-BrandServer/wwwroot/scripts.js new file mode 100644 index 0000000..4368418 --- /dev/null +++ b/obrand/obrand-admin-server/O-BrandServer/wwwroot/scripts.js @@ -0,0 +1,18583 @@ + +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.1.22 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, setTimeout, opera */ + +var requirejs, require, define; +(function (global) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.1.22', + commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + ap = Array.prototype, + isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + function getOwn(obj, prop) { + return hasProp(obj, prop) && obj[prop]; + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (hasProp(obj, prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value === 'object' && value && + !isArray(value) && !isFunction(value) && + !(value instanceof RegExp)) { + + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + function defaultOnError(err) { + throw err; + } + + //Allow getting a global that is expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttp://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite an existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + //Defaults. Do not set a default for map + //config to speed up normalize(), which + //will run faster if there is no default. + waitSeconds: 7, + baseUrl: './', + paths: {}, + bundles: {}, + pkgs: {}, + shim: {}, + config: {} + }, + registry = {}, + //registry of just enabled modules, to speed + //cycle breaking code when lots of modules + //are registered, but not activated. + enabledRegistry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + bundlesMap = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; i < ary.length; i++) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + // If at the start, or previous value is still .., + // keep them so that when converted to a path it may + // still work when converted to a path, even though + // as an ID it is less than ideal. In larger point + // releases, may be better to just kick out an error. + if (i === 0 || (i === 1 && ary[2] === '..') || ary[i - 1] === '..') { + continue; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex, + foundMap, foundI, foundStarMap, starI, normalizedBaseParts, + baseParts = (baseName && baseName.split('/')), + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name) { + name = name.split('/'); + lastIndex = name.length - 1; + + // If wanting node ID compatibility, strip .js from end + // of IDs. Have to do this here, and not in nameToUrl + // because node allows either .js or non .js to map + // to same file. + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + // Starts with a '.' so need the baseName + if (name[0].charAt(0) === '.' && baseParts) { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + name = normalizedBaseParts.concat(name); + } + + trimDots(name); + name = name.join('/'); + } + + //Apply map config if available. + if (applyMap && map && (baseParts || starMap)) { + nameParts = name.split('/'); + + outerLoop: for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = getOwn(map, baseParts.slice(0, j).join('/')); + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = getOwn(mapValue, nameSegment); + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break outerLoop; + } + } + } + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { + foundStarMap = getOwn(starMap, nameSegment); + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + // If the name points to a package's name, use + // the package main instead. + pkgMain = getOwn(config.pkgs, name); + + return pkgMain ? pkgMain : name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = getOwn(config.paths, id); + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + + //Custom require that does not do map translation, since + //ID is "absolute", already mapped/resolved. + context.makeRequire(null, { + skipMap: true + })([id]); + + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = getOwn(defined, prefix); + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + // If nested plugin references, then do not try to + // normalize, as it will not normalize correctly. This + // places a restriction on resourceIds, and the longer + // term solution is not to normalize until plugins are + // loaded and all normalizations to allow for async + // loading of a loader plugin. But for now, fixes the + // common uses. Details in #1131 + normalizedName = name.indexOf('!') === -1 ? + normalize(name, parentName, applyMap) : + name; + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + mod = getModule(depMap); + if (mod.error && name === 'error') { + fn(mod.error); + } else { + mod.on(name, fn); + } + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = getOwn(registry, id); + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + each(globalDefQueue, function(queueItem) { + var id = queueItem[0]; + if (typeof id === 'string') { + context.defQueueMap[id] = true; + } + defQueue.push(queueItem); + }); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return (defined[mod.map.id] = mod.exports); + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + return getOwn(config.config, mod.map.id) || {}; + }, + exports: mod.exports || (mod.exports = {}) + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + delete enabledRegistry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = getOwn(registry, depId); + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (getOwn(traced, depId)) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(enabledRegistry, function (mod) { + var map = mod.map, + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = getOwn(undefEvents, map.id) || {}; + this.map = map; + this.shim = getOwn(config.shim, map.id); + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks if the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + // Only fetch if not already in the defQueue. + if (!hasProp(context.defQueueMap, id)) { + this.fetch(); + } + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + + // Favor return value over exports. If node/cjs in play, + // then will not have a return value anyway. Favor + // module.exports assignment over exports object. + if (this.map.isDefine && exports === undefined) { + cjsModule = this.module; + if (cjsModule) { + exports = cjsModule.exports; + } else if (this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + // If there is an error listener, favor passing + // to that instead of throwing an error. However, + // only do it for define()'d modules. require + // errbacks should not be called for failures in + // their callbacks (#699). However if a global + // onError is set, use that. + if ((this.events.error && this.map.isDefine) || + req.onError !== defaultOnError) { + err.requireMap = this.map; + err.requireModules = this.map.isDefine ? [this.map.id] : null; + err.requireType = this.map.isDefine ? 'define' : 'require'; + return onError((this.error = err)); + } else if (typeof console !== 'undefined' && + console.error) { + // Log the error for debugging. If promises could be + // used, this would be different, but making do. + console.error(err); + } else { + // Do not want to completely lose the error. While this + // will mess up processing and lead to similar results + // as bug 1440, it at least surfaces the error. + req.onError(err); + } + } + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + var resLoadMaps = []; + each(this.depMaps, function (depMap) { + resLoadMaps.push(depMap.normalizedMap || depMap); + }); + req.onResourceLoad(context, this.map, resLoadMaps); + } + } + + //Clean up + cleanRegistry(id); + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + bundleId = getOwn(bundlesMap, this.map.id), + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.map.normalizedMap = normalizedMap; + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = getOwn(registry, normalizedMap.id); + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + //If a paths config, then just load that file instead to + //resolve the plugin, as it is built into that paths layer. + if (bundleId) { + this.map.url = context.nameToUrl(bundleId); + this.load(); + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + //Transfer any config to this other module. + if (hasProp(config.config, id)) { + config.config[moduleName] = config.config[id]; + } + + try { + req.exec(text); + } catch (e) { + return onError(makeError('fromtexteval', + 'fromText eval for ' + id + + ' failed: ' + e, + e, + [id])); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + enabledRegistry[this.map.id] = this; + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = getOwn(handlers, depMap.id); + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + if (this.undefed) { + return; + } + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', bind(this, this.errback)); + } else if (this.events.error) { + // No direct errback on this module, but something + // else is listening for errors, so be sure to + // propagate the error correctly. + on(depMap, 'error', bind(this, function(err) { + this.emit('error', err); + })); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!hasProp(handlers, id) && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = getOwn(registry, pluginMap.id); + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + //Skip modules already defined. + if (!hasProp(defined, args[0])) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + context.defQueueMap = {}; + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + defQueueMap: {}, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + onError: onError, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + //Save off the paths since they require special processing, + //they are additive. + var shim = config.shim, + objs = { + paths: true, + bundles: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (!config[prop]) { + config[prop] = {}; + } + mixin(config[prop], value, true, true); + } else { + config[prop] = value; + } + }); + + //Reverse map the bundles + if (cfg.bundles) { + eachProp(cfg.bundles, function (value, prop) { + each(value, function (v) { + if (v !== prop) { + bundlesMap[v] = prop; + } + }); + }); + } + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if ((value.exports || value.init) && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location, name; + + pkgObj = typeof pkgObj === 'string' ? {name: pkgObj} : pkgObj; + + name = pkgObj.name; + location = pkgObj.location; + if (location) { + config.paths[name] = pkgObj.location; + } + + //Save pointer to main module ID for pkg name. + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, ''); + }); + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id, null, true); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || (value.exports && getGlobal(value.exports)); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && hasProp(handlers, deps)) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap, localRequire); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var ext, + index = moduleNamePlusExt.lastIndexOf('.'), + segment = moduleNamePlusExt.split('/')[0], + isRelative = segment === '.' || segment === '..'; + + //Have a file extension alias, and it is not the + //dots from a relative path. + if (index !== -1 && (!isRelative || index > 1)) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + return context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext, true); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = getOwn(registry, id); + + mod.undefed = true; + removeScript(id); + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + //Clean queued defines too. Go backwards + //in array so that the splices do not + //mess up the iteration. + eachReverse(defQueue, function(args, i) { + if (args[0] === id) { + defQueue.splice(i, 1); + } + }); + delete context.defQueueMap[id]; + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. A second arg, parent, the parent module, + * is passed in for context, when this method is overridden by + * the optimizer. Not shown here to keep code compact. + */ + enable: function (depMap) { + var mod = getOwn(registry, depMap.id); + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = getOwn(config.shim, moduleName) || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + context.defQueueMap = {}; + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = getOwn(registry, moduleName); + + if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext, skipExt) { + var paths, syms, i, parentModule, url, + parentPath, bundleId, + pkgMain = getOwn(config.pkgs, moduleName); + + if (pkgMain) { + moduleName = pkgMain; + } + + bundleId = getOwn(bundlesMap, moduleName); + + if (bundleId) { + return context.nameToUrl(bundleId, ext, skipExt); + } + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + + parentPath = getOwn(paths, parentModule); + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/^data\:|\?/.test(url) || skipExt ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs ? url + + ((url.indexOf('?') === -1 ? '?' : '&') + + config.urlArgs) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callback function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + var parents = []; + eachProp(registry, function(value, key) { + if (key.indexOf('_@r') !== 0) { + each(value.depMaps, function(depMap) { + if (depMap.id === data.id) { + parents.push(key); + } + return true; + }); + } + }); + return onError(makeError('scripterror', 'Script error for "' + data.id + + (parents.length ? + '", needed by: ' + parents.join(', ') : + '"'), evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = getOwn(contexts, contextName); + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = defaultOnError; + + /** + * Creates the node for the load command. Only used in browser envs. + */ + req.createNode = function (config, moduleName, url) { + var node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + return node; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = req.createNode(config, moduleName, url); + if (config.onNodeCreated) { + config.onNodeCreated(node, config, moduleName, url); + } + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/jrburke/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/jrburke/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEventListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + try { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation is that a build has been done so + //that only one script needs to be loaded anyway. This may need + //to be reevaluated if other use cases become common. + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } catch (e) { + context.onError(makeError('importscripts', + 'importScripts failed for ' + + moduleName + ' at ' + url, + e, + [moduleName])); + } + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser && !cfg.skipDataMain) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Preserve dataMain in case it is a path (i.e. contains '?') + mainScript = dataMain; + + //Set final baseUrl if there is not already an explicit one. + if (!cfg.baseUrl) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = mainScript.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + } + + //Strip off any trailing .js since mainScript is now + //like a module name. + mainScript = mainScript.replace(jsSuffixRegExp, ''); + + //If mainScript is still a path, fall back to dataMain + if (req.jsExtRegExp.test(mainScript)) { + mainScript = dataMain; + } + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = null; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps && isFunction(callback)) { + deps = []; + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, '') + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + if (context) { + context.defQueue.push([name, deps, callback]); + context.defQueueMap[name] = true; + } else { + globalDefQueue.push([name, deps, callback]); + } + }; + + define.amd = { + jQuery: true + }; + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this)); + +define("requireLib", function(){}); + +/*! + * jQuery JavaScript Library v2.2.3 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-04-05T19:26Z + */ + +(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 document = window.document; + +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 + version = "2.2.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. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + 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(); + }, + + // 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) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isPlainObject: function( obj ) { + var key; + + // 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; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + 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(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === 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 length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + 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 +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(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 + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // 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( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "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 m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + 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 = arr.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; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* 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( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.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 !document.getElementsByName || !document.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 ); + return m ? [ 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 ( typeof context.getElementsByClassName !== "undefined" && 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( document.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.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + 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 = document.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 self-exclusive + // 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 === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || 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 === document ? -1 : + b === document ? 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 document; +}; + +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 && + !compilerCache[ expr + " " ] && + ( !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, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + 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 + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && 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 ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // 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 ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ 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, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator 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 ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ 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 + uniqueCache[ 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 || outermost; + } + + // Add elements passing elementMatchers directly to results + // 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; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, 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 ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + 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 only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound 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, + !context || 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.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var 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; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +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 ) > -1 ) !== 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, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // 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 || root ).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 root.ready !== undefined ? + root.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.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.uniqueSort( 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.uniqueSort( + 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 dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( 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.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + 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" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + 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.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + 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() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } 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() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } 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 ); + window.removeEventListener( "load", completed ); + 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. + // Support: IE9-10 only + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + } + } + 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 = 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 ) { + 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; +}; +var 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() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + register: function( owner, initial ) { + var value = initial || {}; + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable, non-writable property + // configurability must be true to allow the property to be + // deleted with the delete operator + } else { + Object.defineProperty( owner, this.expando, { + value: value, + writable: true, + configurable: true + } ); + } + return owner[ this.expando ]; + }, + cache: function( owner ) { + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( !acceptData( owner ) ) { + return {}; + } + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + owner[ this.expando ] && owner[ this.expando ][ 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, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key === undefined ) { + this.register( owner ); + + } 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 ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <= 35-45+ + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = 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, "-$&" ).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 + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.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 = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.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 ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data, camelKey; + + // 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 = dataUser.get( elem, key ) || + + // Try to find dashed key if it exists (gh-2779) + // This is for 2.2.x only + dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); + + if ( data !== undefined ) { + return data; + } + + camelKey = jQuery.camelCase( key ); + + // Attempt to get data from the cache + // with the key camelized + data = dataUser.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... + camelKey = jQuery.camelCase( key ); + 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 = dataUser.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...* + dataUser.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 ) { + dataUser.set( this, key, value ); + } + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.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 dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.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 = dataPriv.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 rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +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 ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE9 + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + 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; + + +function getAll( context, tag ) { + + // Support: IE9-11+ + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + 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: Android<4.1, PhantomJS<2 + // 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 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android<4.1, PhantomJS<2 + // 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++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + 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; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0-4.3, 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 + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, 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 ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + 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 elem; + } + + 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 elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * 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 = dataPriv.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 !== "undefined" && 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 ); + } + } + } + + 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 = dataPriv.hasData( elem ) && dataPriv.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 data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + 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 = ( dataPriv.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.rnamespace || event.rnamespace.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; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( 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 ) > -1 : + 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 detail 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; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +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 = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +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 mouseenter/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; + } + }; +} ); + +jQuery.fn.extend( { + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, 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 ); + } ); + } +} ); + + +var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// 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; +} + +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 ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.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 ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// 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; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + 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 collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + 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: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ 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 || "" ) && + !dataPriv.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 collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + 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; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + 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 ); + } + } + } + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + 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 domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, 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 domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + 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 = jQuery.htmlPrefilter( value ); + + 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 ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +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 = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * 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 elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + 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( "