summaryrefslogtreecommitdiffstats
path: root/admin/survey/api
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/api')
-rw-r--r--admin/survey/api/api.php8
-rw-r--r--admin/survey/api/apidoc.json9
-rw-r--r--admin/survey/api/apidoc/api_data.js3248
-rw-r--r--admin/survey/api/apidoc/api_data.json3248
-rw-r--r--admin/survey/api/apidoc/api_project.js19
-rw-r--r--admin/survey/api/apidoc/api_project.json19
-rw-r--r--admin/survey/api/apidoc/css/style.css569
-rw-r--r--admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.eotbin0 -> 20127 bytes
-rw-r--r--admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.svg288
-rw-r--r--admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.ttfbin0 -> 45404 bytes
-rw-r--r--admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woffbin0 -> 23424 bytes
-rw-r--r--admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff2bin0 -> 18028 bytes
-rw-r--r--admin/survey/api/apidoc/img/favicon.icobin0 -> 894 bytes
-rw-r--r--admin/survey/api/apidoc/index.html669
-rw-r--r--admin/survey/api/apidoc/locales/ca.js25
-rw-r--r--admin/survey/api/apidoc/locales/cs.js25
-rw-r--r--admin/survey/api/apidoc/locales/de.js25
-rw-r--r--admin/survey/api/apidoc/locales/es.js25
-rw-r--r--admin/survey/api/apidoc/locales/fr.js25
-rw-r--r--admin/survey/api/apidoc/locales/it.js25
-rw-r--r--admin/survey/api/apidoc/locales/locale.js50
-rw-r--r--admin/survey/api/apidoc/locales/nl.js25
-rw-r--r--admin/survey/api/apidoc/locales/pl.js25
-rw-r--r--admin/survey/api/apidoc/locales/pt_br.js25
-rw-r--r--admin/survey/api/apidoc/locales/ro.js25
-rw-r--r--admin/survey/api/apidoc/locales/ru.js25
-rw-r--r--admin/survey/api/apidoc/locales/tr.js25
-rw-r--r--admin/survey/api/apidoc/locales/vi.js25
-rw-r--r--admin/survey/api/apidoc/locales/zh.js25
-rw-r--r--admin/survey/api/apidoc/locales/zh_cn.js25
-rw-r--r--admin/survey/api/apidoc/main.js827
-rw-r--r--admin/survey/api/apidoc/utils/handlebars_helper.js357
-rw-r--r--admin/survey/api/apidoc/utils/send_sample_request.js184
-rw-r--r--admin/survey/api/apidoc/vendor/bootstrap.min.css6
-rw-r--r--admin/survey/api/apidoc/vendor/bootstrap.min.js7
-rw-r--r--admin/survey/api/apidoc/vendor/diff_match_patch.min.js49
-rw-r--r--admin/survey/api/apidoc/vendor/handlebars.min.js29
-rw-r--r--admin/survey/api/apidoc/vendor/jquery.min.js4
-rw-r--r--admin/survey/api/apidoc/vendor/list.min.js2
-rw-r--r--admin/survey/api/apidoc/vendor/lodash.custom.min.js41
-rw-r--r--admin/survey/api/apidoc/vendor/path-to-regexp/LICENSE21
-rw-r--r--admin/survey/api/apidoc/vendor/path-to-regexp/index.js204
-rw-r--r--admin/survey/api/apidoc/vendor/polyfill.js96
-rw-r--r--admin/survey/api/apidoc/vendor/prettify.css51
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-Splus.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-aea.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-agc.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-apollo.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-basic.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-cbm.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-cl.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-clj.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-css.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-dart.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-el.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-erl.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-erlang.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-fs.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-go.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-hs.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-lasso.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-lassoscript.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-latex.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-lgt.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-lisp.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-ll.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-llvm.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-logtalk.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-ls.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-lsp.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-lua.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-matlab.js29
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-ml.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-mumps.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-n.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-nemerle.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-pascal.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-proto.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-r.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-rd.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-rkt.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-rust.js20
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-s.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-scala.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-scm.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-sql.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-ss.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-swift.js16
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-tcl.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-tex.js17
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-vb.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-vbs.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-vhd.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-vhdl.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-wiki.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-xq.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-xquery.js19
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-yaml.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/lang-yml.js18
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/prettify.css1
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/prettify.js46
-rw-r--r--admin/survey/api/apidoc/vendor/prettify/run_prettify.js63
-rw-r--r--admin/survey/api/apidoc/vendor/require.min.js37
-rw-r--r--admin/survey/api/apidoc/vendor/semver.min.js1
-rw-r--r--admin/survey/api/apidoc/vendor/webfontloader.js17
-rw-r--r--admin/survey/api/class.ApiController.php210
-rw-r--r--admin/survey/api/class.ApiSurvey.php4121
-rw-r--r--admin/survey/api/documentation/1ka_API.docxbin0 -> 68667 bytes
-rw-r--r--admin/survey/api/documentation/1ka_API_eng.docxbin0 -> 82210 bytes
109 files changed, 15881 insertions, 0 deletions
diff --git a/admin/survey/api/api.php b/admin/survey/api/api.php
new file mode 100644
index 0000000..070c2da
--- /dev/null
+++ b/admin/survey/api/api.php
@@ -0,0 +1,8 @@
+<?php
+
+include_once '../definition.php';
+include_once '../../../function.php';
+include_once '../../../vendor/autoload.php';
+
+$api = new ApiController();
+ \ No newline at end of file
diff --git a/admin/survey/api/apidoc.json b/admin/survey/api/apidoc.json
new file mode 100644
index 0000000..0acc4a3
--- /dev/null
+++ b/admin/survey/api/apidoc.json
@@ -0,0 +1,9 @@
+{
+ "name": "1KA API",
+ "version": "1.0.0",
+ "title": "1KA API",
+ "template": {
+ "withCompare": true,
+ "withGenerator": true
+ }
+} \ No newline at end of file
diff --git a/admin/survey/api/apidoc/api_data.js b/admin/survey/api/apidoc/api_data.js
new file mode 100644
index 0000000..f5156c3
--- /dev/null
+++ b/admin/survey/api/apidoc/api_data.js
@@ -0,0 +1,3248 @@
+define({ "api": [
+ {
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "optional": false,
+ "field": "varname1",
+ "description": "<p>No type.</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "varname2",
+ "description": "<p>With type.</p>"
+ }
+ ]
+ }
+ },
+ "type": "",
+ "url": "",
+ "version": "0.0.0",
+ "filename": "./apidoc/apidoc/main.js",
+ "group": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_apidoc_main_js",
+ "groupTitle": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_apidoc_main_js",
+ "name": ""
+ },
+ {
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "optional": false,
+ "field": "varname1",
+ "description": "<p>No type.</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "varname2",
+ "description": "<p>With type.</p>"
+ }
+ ]
+ }
+ },
+ "type": "",
+ "url": "",
+ "version": "0.0.0",
+ "filename": "./apidoc/main.js",
+ "group": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_main_js",
+ "groupTitle": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_main_js",
+ "name": ""
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyAnswerState/survey/:id",
+ "title": "getSurveyAnswerState",
+ "name": "getSurveyAnswerState",
+ "group": "Dashboard",
+ "description": "<p>Get response rate for survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "status",
+ "description": "<p>Basic status of answers (3ll-entered intro, 4ll-entered frist page, 5ll-started responding, 5-partially completed, 6-completed)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "usability",
+ "description": "<p>Unit usability (unit (bottom usable limit/top usable limit))</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "breakoffs",
+ "description": "<p>Data of responents breakoffs</p>"
+ }
+ ],
+ "Data Fields": [
+ {
+ "group": "Data Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "freq",
+ "description": "<p>Frequency</p>"
+ },
+ {
+ "group": "Data Fields",
+ "type": "String",
+ "optional": false,
+ "field": "state",
+ "description": "<p>Realtive frequency</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"status\": {\n\t\t\"3ll\": {\n\t\t\t\"freq\": 29,\n\t\t\t\"state\": \"100%\"\n\t\t},\n\t\t\"4ll\": {\n\t\t\t\"freq\": 27,\n\t\t\t\"state\": \"93%\"\n\t\t},\n\t\t\"5ll\": {\n\t\t\t\"freq\": 20,\n\t\t\t\"state\": \"69%\"\n\t\t},\n\t\t\"5\": {\n\t\t\t\"freq\": 18,\n\t\t\t\"state\": \"62%\"\n\t\t},\n\t\t\"6\": {\n\t\t\t\"freq\": 18,\n\t\t\t\"state\": \"62%\"\n\t\t}\n\t},\n\t\"usability\": {\n\t\t\"unit\": \"(50%\\/80%)\",\n\t\t\"usable\": {\n\t\t\t\"freq\": 1,\n\t\t\t\"state\": \"5%\"\n\t\t},\n\t\t\"partusable\": {\n\t\t\t\"freq\": 6,\n\t\t\t\"state\": \"30%\"\n\t\t},\n\t\t\"unusable\": {\n\t\t\t\"freq\": 13,\n\t\t\t\"state\": \"65%\"\n\t\t}\n\t},\n\t\"breakoffs\": {\n\t\t\"intro\": {\n\t\t\t\"freq\": 9,\n\t\t\t\"state\": \"31%\"\n\t\t},\n\t\t\"questionnaire\": {\n\t\t\t\"freq\": 0,\n\t\t\t\"state\": \"0% (neto 0%)\"\n\t\t},\n\t\t\"total\": {\n\t\t\t\"freq\": 9,\n\t\t\t\"state\": \"31%\"\n\t\t}\n\t}\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyDashboard/survey/:id",
+ "title": "getSurveyDashboard",
+ "name": "getSurveyDashboard",
+ "group": "Dashboard",
+ "description": "<p>Get all dashboard data of survey (if survey has no responses, only survey info is returned)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "info",
+ "description": "<p>Info of survey (basic dashboard info)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "statuses",
+ "description": "<p>Statuses of responses of survey (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "datetime",
+ "description": "<p>Object of nubers of all responses by date and hour in day (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "redirections",
+ "description": "<p>Redirections of survey (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "paradata",
+ "description": "<p>Paradata of responses of survey (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "responserate",
+ "description": "<p>Response rate of survey (optional)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"info\": [SEE OUTPUT OF FUNCTION getSurveyInfo],\n\t\"statuses\": [SEE OUTPUT OF FUNCTION getSurveyStatuses],\n\t\"datetime\": [SEE OUTPUT OF FUNCTION getSurveyDateTimeRange],\n\t\"redirections\": [SEE OUTPUT OF FUNCTION getSurveyDateTimeRange],\n\t\"paradata\": [SEE OUTPUT OF FUNCTION getSurveyParadata],\n\t\"responserate\": [SEE OUTPUT OF FUNCTION getSurveyAnswerState]\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyDateTimeRange/survey/:id",
+ "title": "getSurveyDateTimeRange",
+ "name": "getSurveyDateTimeRange",
+ "group": "Dashboard",
+ "description": "<p>Get object of nubers of all responses by date and hour in day (keys as date and hour in day, values as number of answers at that time)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"2017-10-02 09\": \"10\",\n\t\"2017-10-03 13\": \"1\",\n\t\"2017-11-10 11\": \"3\",\n\t\"2017-11-10 12\": \"7\",\n\t\"2017-11-10 13\": \"1\",\n\t\"2017-11-10 14\": \"7\",\n \"2017-11-10 17\": \"2\"\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyParadata/survey/:id",
+ "title": "getSurveyParadata",
+ "name": "getSurveyParadata",
+ "group": "Dashboard",
+ "description": "<p>Get paradata of responses of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "valid",
+ "description": "<p>Paradata of valid answers/respondents</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "all",
+ "description": "<p>Paradata of all (valid and nonvalid) answers/respondents</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"valid\": {\n\t\t\"unfilteredCount\": 3,\n\t\t\"allCount\": 2,\n\t\t\"pcCount\": \"2\",\n\t\t\"mobiCount\": 0,\n\t\t\"tabletCount\": 0,\n\t\t\"robotCount\": 0,\n\t\t\"jsActive\": 2,\n\t\t\"jsNonActive\": 0,\n\t\t\"jsUndefined\": 0,\n\t\t\"browser\": {\n\t\t\t\"Other\": \"2\"\n\t\t},\n\t\t\"os\": {\n\t\t\t\"Other\": \"2\"\n\t\t}\n\t},\n\t\"all\": {\n\t\t\"unfilteredCount\": 3,\n\t\t\"allCount\": 3,\n\t\t\"pcCount\": \"3\",\n\t\t\"mobiCount\": 0,\n\t\t\"tabletCount\": 0,\n\t\t\"robotCount\": 0,\n\t\t\"jsActive\": 3,\n\t\t\"jsNonActive\": 0,\n\t\t\"jsUndefined\": 0,\n\t\t\"browser\": {\n\t\t\t\"Other\": \"3\"\n\t\t},\n\t\t\"os\": {\n\t\t\t\"Other\": \"3\"\n\t\t}\n\t}\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyRedirections/survey/:id",
+ "title": "getSurveyRedirections",
+ "name": "getSurveyRedirections",
+ "group": "Dashboard",
+ "description": "<p>Get all redirections of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"3\": 0,\n\t\"4\": 0,\n\t\"5\": 0,\n\t\"6\": 0,\n\t\"valid\": {\n\t\t\"email\": 86,\n\t\t\"www.1ka.si\": 23,\n\t\t\"www.customsite.si\": 1\n\t},\n\t\"email\": 86,\n\t\"direct\": 4,\n\t\"cntAll\": 0\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyStatuses/survey/:id",
+ "title": "getSurveyStatuses",
+ "name": "getSurveyStatuses",
+ "group": "Dashboard",
+ "description": "<p>Get statuses of responses of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Object",
+ "optional": false,
+ "field": "valid",
+ "description": "<p>6-finished surveys, 5-partially finished surveys</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object",
+ "optional": false,
+ "field": "nonvalid",
+ "description": "<p>6l-lurkers, 5l-lurkers, 4-click on survey, 3-click on intro, -1-unknown status</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object",
+ "optional": false,
+ "field": "invitation",
+ "description": "<p>(non-surveyed units) 2-email sent (error), 1-email sent (non-response), 0-email not sent</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"valid\":{\"6\":50,\"5\":0},\n \"nonvalid\":{\"6l\":0,\"5l\":0,\"4\":0,\"3\":0,\"-1\":0},\n \"invitation\":{\"2\":0,\"1\":0,\"0\":0}}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/addLink/survey/:id",
+ "title": "addLink",
+ "name": "addLink",
+ "group": "Data_and_analysis",
+ "description": "<p>Add new public link (hash link of data or analysis). Example of hash (public) link: https://www.1ka.si/podatki/50/5BABEC6D/ ([SITE_ROOT]/podatki/[SURVEY_ID]/[HASH_CODE]/)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "a",
+ "description": "<p>Broad type of content of hash link (analysis, data) (if data, parameter m is not needed)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "m",
+ "description": "<p>Specific type of content of hash link (analysis_creport, descriptor, frequency, charts, sumarnik) (when parameter a is &quot;data&quot;, this parameter is not needed)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"a\":\"analysis\", \"m\":\"frequency\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Link added\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteLink/survey/:id",
+ "title": "deleteLink",
+ "name": "deleteLink",
+ "group": "Data_and_analysis",
+ "description": "<p>Delete specific public link (hash link of data or analysis)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "hash",
+ "description": "<p>Hash code of public link to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"hash\":\"5BABEC6D\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Link deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteSurveyUnit/survey/:id",
+ "title": "deleteSurveyUnit",
+ "name": "deleteSurveyUnit",
+ "group": "Data_and_analysis",
+ "description": "<p>Delete unit/response in survey data (whole response of a respondent)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "srv_unit_id",
+ "description": "<p>ID of unit/response to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"srv_unit_id\":\"12774\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey unit deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyFrequencies/survey/:id",
+ "title": "getSurveyFrequencies",
+ "name": "getSurveyFrequencies",
+ "group": "Data_and_analysis",
+ "description": "<p>Get frequencies for all radio, checkbox, dropdown and plain text questions in the survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Question Fields": [
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "besedilo_vprasanja",
+ "description": "<p>Text of question</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id_vprasanja",
+ "description": "<p>Id of question (left side of '_' is actual ID of question, right side is ID of sequence within question)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "vrsta_vprasanja",
+ "description": "<p>Code of question type: 0-single choice (radio, dropdown), 1-multiple choice (checkbox), 2-text</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "odgovori",
+ "description": "<p>Answers</p>"
+ }
+ ],
+ "Answer Fields": [
+ {
+ "group": "Answer Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "invalid",
+ "description": "<p>Invalid answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "invalidCnt",
+ "description": "<p>Count of all invalid answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "allCnt",
+ "description": "<p>Count of all answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "validCnt",
+ "description": "<p>Count of all valid answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "valid",
+ "description": "<p>Array of all valid asnwers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Text/name/title of answer/choice (not in single choice)</p>"
+ }
+ ],
+ "Valid answer Fields - single choice": [
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "String",
+ "optional": false,
+ "field": "text",
+ "description": "<p>Text/name/title of answer/choice</p>"
+ },
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "String",
+ "optional": false,
+ "field": "text_graf",
+ "description": "<p>Text of answer/choice in graph</p>"
+ },
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "String",
+ "optional": false,
+ "field": "cnt",
+ "description": "<p>Count of choices for this answer</p>"
+ },
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "Number",
+ "optional": false,
+ "field": "vrednost",
+ "description": "<p>Value of answer/choice</p>"
+ }
+ ],
+ "Valid answer Fields - multiple choice": [
+ {
+ "group": "Valid answer Fields - multiple choice",
+ "type": "String",
+ "optional": false,
+ "field": "text",
+ "description": "<p>0-not checked, 1-checked</p>"
+ }
+ ],
+ "Valid answer Fields - text": [
+ {
+ "group": "Valid answer Fields - text",
+ "type": "String",
+ "optional": false,
+ "field": "text",
+ "description": "<p>Actual text asnwer</p>"
+ },
+ {
+ "group": "Valid answer Fields - text",
+ "type": "Number",
+ "optional": false,
+ "field": "cnt",
+ "description": "<p>Count of same asnwer</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "[{\n \"besedilo_vprasanja\": \"Best counrty in Europe\",\n \"id_vprasanja\": \"118_0\",\n \"vrsta_vprasanja\": \"0\",\n \"odgovori\": {\n \"invalid\": {\n \"-1\": {\"text\": \"Unanswered question\",\"cnt\": \"1\"},\n \"-2\": {\"text\": \"Skipped question (IF logic)\",\"cnt\": 0},\n \"-3\": {\"text\": \"Drop-out\",\"cnt\": 0},\n \"-4\": {\"text\": \"Subsequent question\",\"cnt\": 0},\n \"-5\": {\"text\": \"Empty unit\",\"cnt\": 0},\n \"-97\": {\"text\": \"Invalid\",\"cnt\": 0},\n \"-98\": {\"text\": \"Refused\",\"cnt\": 0},\n \"-99\": {\"text\": \"Don&#39;t know\",\"cnt\": 0}\n },\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"validCnt\": 4,\n \"valid\": [{\n \"text\": \"Slovenia\",\n \"text_graf\": \"Slovenia\",\n \"cnt\": \"1\",\n \"vrednost\": 1\n }, {\n \"text\": \"Spain\",\n \"text_graf\": \"Spain\",\n \"cnt\": 0,\n \"vrednost\": 2\n }, {\n \"text\": \"Germany\",\n \"text_graf\": \"Germany\",\n \"cnt\": \"2\",\n \"vrednost\": 3\n }, {\n \"text\": \"Other:\",\n \"text_graf\": \"Other:\",\n \"cnt\": \"1\",\n \"vrednost\": 4\n }, {\n \"text\": \"estonia\",\n \"cnt\": 1,\n \"text_graf\": null,\n \"other\": \"Other:\",\n \"vrednost\": \"estonia\"\n }]\n }\n }, {\n \"besedilo_vprasanja\": \"Cities you visited\",\n \"id_vprasanja\": \"119_0\",\n \"vrsta_vprasanja\": \"1\",\n \"odgovori\": [{\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"1\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"3\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Ljubljana\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"3\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"1\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Berlin\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"2\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"2\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Madrid\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"3\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"1\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"London\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": 0\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"4\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Other:\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"validCnt\": 4,\n \"average\": null,\n \"valid\": [{\n \"text\": \"paris\",\n \"cnt\": 1,\n \"text_graf\": null,\n \"other\": \"Other:\"\n }, {\n \"text\": \"zagreb\",\n \"cnt\": 1,\n \"text_graf\": null,\n \"other\": \"Other:\"\n }, {\n \"text\": \"lisbon\",\n \"cnt\": 2,\n \"text_graf\": null,\n \"other\": \"Other:\"\n }],\n \"other\": \"Other:\"\n }]\n }, {\n \"besedilo_vprasanja\": \"Write a name\",\n \"id_vprasanja\": \"120_0\",\n \"vrsta_vprasanja\": \"2\",\n \"odgovori\": [{\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"validCnt\": 4,\n \"average\": null,\n \"valid\": [{\n \"text\": \"lucy\",\n \"cnt\": 1,\n \"text_graf\": null\n }, {\n \"text\": \"crish\",\n \"cnt\": 2,\n \"text_graf\": null\n }, {\n \"text\": \"marie\",\n \"cnt\": 1,\n \"text_graf\": null\n }]\n }]\n }]",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyHashes/survey/:id",
+ "title": "getSurveyHashes",
+ "name": "getSurveyHashes",
+ "group": "Data_and_analysis",
+ "description": "<p>Get all hash links of survey. Example of hash (public) link: https://www.1ka.si/podatki/50/5BABEC6D/ ([SITE_ROOT]/podatki/[SURVEY_ID]/[HASH_CODE]/)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "hash",
+ "description": "<p>Hash code for link</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "comment",
+ "description": "<p>Comment of hash link</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "refresh",
+ "description": "<p>0-refresh mode off, 1-auto refresh site every x seconds</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "access_password",
+ "description": "<p>If not NULL or &quot;&quot;, this password is needed to access public link</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page",
+ "description": "<p>Broad type of content of hash link (analysis, data)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "add_date",
+ "description": "<p>Date of creation</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "add_time",
+ "description": "<p>Time of creation</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "email",
+ "description": "<p>Email of author</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "properties",
+ "description": "<p>Properties of hash link</p>"
+ }
+ ],
+ "Hash link Fields": [
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "anketa",
+ "description": "<p>ID of survey that hash link belong to</p>"
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "a",
+ "description": "<p>Broad type of content of hash link (analysis, data)</p>"
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "m",
+ "description": "<p>Specific type of content of hash link (analysis_creport, descriptor, frequency, charts, sumarnik)</p>"
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "profile_id_status",
+ "description": ""
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "profile_id_variable",
+ "description": ""
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "profile_id_condition",
+ "description": ""
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "[{\n \"hash\": \"179A60BA\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"analysis\",\n \"m\": \"frequency\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"Frequencies\",\n \"refresh\": \"0\",\n \"access_password\": \"\",\n \"page\": \"analysis\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:38\",\n \"email\": \"admin\"\n }, {\n \"hash\": \"F3FB9720\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"analysis\",\n \"m\": \"charts\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"Charts\",\n \"refresh\": \"0\",\n \"access_password\": \"\",\n \"page\": \"analysis\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:37\",\n \"email\": \"admin\"\n }, {\n \"hash\": \"2D704440\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"data\",\n \"m\": \"\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"\",\n \"refresh\": \"0\",\n \"access_password\": null,\n \"page\": \"data\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:37\",\n \"email\": \"admin\"\n }, {\n \"hash\": \"7A96B2C7\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"analysis\",\n \"m\": \"sumarnik\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"Summary\",\n \"refresh\": \"0\",\n \"access_password\": \"\",\n \"page\": \"analysis\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:36\",\n \"email\": \"admin\"\n }]",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyResponseData/survey/:id?usr_id=333",
+ "title": "getSurveyResponseData",
+ "name": "getSurveyResponseData",
+ "group": "Data_and_analysis",
+ "description": "<p>Get basic info and all values/answers of response</p>",
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of survey</p>"
+ },
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "usr_id",
+ "description": "<p>ID of response to analyse</p>"
+ }
+ ]
+ }
+ },
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "relevance",
+ "description": "<p>Relevance of response (1-valid, 0-unvalid)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "status",
+ "description": "<p>Status code of response (6-Completed, 5-partially completed, 4-entered first page, 3-entered intro)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "recnum",
+ "description": "<p>Record number (sequence of response in survey)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "itime",
+ "description": "<p>Date of response</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": true,
+ "field": "ALL_OTHERS",
+ "description": "<p>Keys as names of values, values as answers</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n \"relevance (Relevance)\": \"1\",\n \"status (Status)\": \"6\",\n \"recnum (Record number)\": \"1\",\n \"itime (Date)\": \"20.05.2019\",\n \"Q1 (City)\": \"1\",\n \"Q1_4_text (Other:)\": \"-2\",\n \"Q2a (Slovenia)\": \"1\",\n \"Q2b (Germany)\": \"1\",\n \"Q2c (UK)\": \"0\",\n \"Q2d (Other:)\": \"0\",\n \"Q2d_text (Other:)\": \"-2\",\n \"Q3 (Vpi\\u0161ite besedilo)\": \"Manja\"\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/copyQuestion/survey/:id",
+ "title": "copyQuestion",
+ "name": "copyQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Make a copy of specific question and put it +1 in order to original question on same page</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of question to copy</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"que_id\":12240}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of new question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"id\":12831,\"note\":\"Question copied\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/createQuestion/survey/:id",
+ "title": "createQuestion",
+ "name": "createQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Add new question to survey, put it on last spot of given group/page in survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey to add new question to</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Text of question</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "group_id",
+ "description": "<p>Id of page/group to put question in (default is last page/group)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "type_code",
+ "description": "<p>Type of question (0-radio, 1-checkbox, 2-text)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "reminder",
+ "description": "<p>Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder) (default is 0)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "other",
+ "description": "<p>Text of option other to add (for cshoose type questions)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "taSize",
+ "description": "<p>Height size in lines of text field (for text question) (default is single line)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String[]",
+ "optional": true,
+ "field": "options",
+ "description": "<p>Array of options to add to question (for cshoose type questions)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (For choice-type): ",
+ "content": " {\n\t\"question\": {\n\t\t\t\"title\": \"This is text of choice type question\",\n\t\t\t\"type_code\": 1,\n \"group_id\": 2027,\n\t\t\t\"reminder\": 0,\n\t\t\t\"other\": \"Other:\",\n\t\t\t\"options\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n\t\t}\t\n }",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (For text-type): ",
+ "content": " {\n\t\"question\": {\n\t\t\t\"title\": \"This is text of text type question\",\n\t\t\t\"type_code\": 2,\n \"group_id\": 2027,\n\t\t\t\"reminder\": 1,\n\t\t\t\"taSize\": 3\n\t\t}\t\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of new question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"que_id\":5056,\"note\":\"Question created\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteOption/survey/:id",
+ "title": "deleteOption",
+ "name": "deleteOption",
+ "group": "Questions_and_variables",
+ "description": "<p>Delete option/value of question (for picking type of question - single or multiple choice)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "option_id",
+ "description": "<p>ID of option/value to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"option_id\":\"424\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Option deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteQuestion/survey/:id",
+ "title": "deleteQuestion",
+ "name": "deleteQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Delete question</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of question to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"que_id\":4240}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Question deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyQuestions/survey/:id",
+ "title": "getSurveyQuestions",
+ "name": "getSurveyQuestions",
+ "group": "Questions_and_variables",
+ "description": "<p>Get info of all questions of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of question</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "tip",
+ "description": "<p>Type of question (verbal)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of question</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "info",
+ "description": "<p>Additional information of question (e.g. &quot;Multiple answers are possible&quot;)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of question (question name)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "stran_id",
+ "description": "<p>Id of page</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "stran_naslov",
+ "description": "<p>Title of page</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "vrstni_red",
+ "description": "<p>Sequence number of the question</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "vrednosti",
+ "description": "<p>Values o questions (possible answers)</p>"
+ }
+ ],
+ "Value Fields": [
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of value in question (value name)</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "vrstni_red",
+ "description": "<p>Sequence number of value in the question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"1234\":{\n \"id\":\"1234\",\n \"tip\":\"One answer\",\n \"naslov\":\"Question tittle 1\",\n \"info\":\"\",\n \"variable\":\"Q1\",\n \"stran_id\":\"2890\",\n \"stran_naslov\":\"Page 1\",\n \"vrstni_red\":\"1\",\n \"vrednosti\":{\n \"48495\":{\n \"id\":\"48495\",\n \"naslov\":\"Write text 1\",\n \"variable\":\"1\",\n \"vrstni_red\":\"1\"},\n \"48496\":{\n \"id\":\"48496\",\n \"naslov\":\"Write text 2\",\n \"variable\":\"2\",\n \"vrstni_red\":\"2\"}\n }\n }},\n {\"1235\"...",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/updateOrCreateOption/survey/:id",
+ "title": "updateOrCreateOption",
+ "name": "updateOrCreateOption",
+ "group": "Questions_and_variables",
+ "description": "<p>Update or add a value/option to question (for picking type of question - single or multiple choice)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "option_text",
+ "description": "<p>Title/text of option/value</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "que_id",
+ "description": "<p>ID of question to add new option/value (needed only for adding)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "option_id",
+ "description": "<p>ID of option/value to update (needed only for updating)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (adding): ",
+ "content": "{\n \"option_text\":\"First option\",\n \"que_id\":\"3894\"\n}",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (updating): ",
+ "content": "{\n \"option_text\":\"First option\",\n \"option_id\":\"9618\"\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response (adding):",
+ "content": "{\"note\":\"Option added\",\"opt_id\":9619}",
+ "type": "json"
+ },
+ {
+ "title": "Success-Response (updating):",
+ "content": "{\"note\":\"Option updated\",\"opt_id\":\"9618\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/updateQuestion/survey/:id",
+ "title": "updateQuestion",
+ "name": "updateQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Update basic question properties</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "id_que",
+ "description": "<p>ID of question</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "title",
+ "description": "<p>Title/text of question</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "reminder",
+ "description": "<p>Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "other",
+ "description": "<p>Text of option &quot;Other&quot; (update or add)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": " {\n\t\"question\": {\n \"id_que\": \"8487\",\n \"title\": \"Which city you like most?\",\n \"reminder\": \"1\",\n \"other\": \"Other:\"\n\t}\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Question updated\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/BlockRepeatedIP/survey/:id",
+ "title": "BlockRepeatedIP",
+ "name": "BlockRepeatedIP",
+ "group": "Surveys",
+ "description": "<p>Block repeated IP (do not allow respondent to respond to survey again for the next x minutes)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "blockIP",
+ "description": "<p>In minutes - if this parameter is not set, blocking IP will be turned off (possible options are 10, 20, 30, 60, 720, 1440, 0-ip blocking off)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"blockIP\":1440}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"IP blocking changed\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/SurveyActivation/survey/:id",
+ "title": "SurveyActivation",
+ "name": "SurveyActivation",
+ "group": "Surveys",
+ "description": "<p>Activate (for 3 months from now) or deactivate survey (start it or stop it)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "active",
+ "description": "<p>If this parameter is not set, survey will be deactivated (0-deactivate survey, 1-activate survey)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"active\":1}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey activity changed\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "put",
+ "url": "https://www.1ka.si/api/copySurvey/survey/:id",
+ "title": "copySurvey",
+ "name": "copySurvey",
+ "group": "Surveys",
+ "description": "<p>Make a copy of specific survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey to copy</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of new survey</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"id\":5194,\"note\":\"Survey copied\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/createSurvey",
+ "title": "createSurvey",
+ "name": "createSurvey",
+ "group": "Surveys",
+ "description": "<p>Create survey with questions</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Survey fields": [
+ {
+ "group": "Survey fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov_vprasalnika",
+ "description": "<p>Title/name of survey</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Number",
+ "optional": false,
+ "field": "survey_type",
+ "description": "<p>Type of survey (0-voting, 2-survey)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Object",
+ "optional": false,
+ "field": "uvod",
+ "description": "<p>Introducrion data</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Number",
+ "optional": true,
+ "field": "hide_uvod",
+ "description": "<p>Do we hide introduction (0-show, 1-hide, default is 0)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Object",
+ "optional": false,
+ "field": "zakljucek",
+ "description": "<p>Conclusion data</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Number",
+ "optional": true,
+ "field": "hide_zakljucek",
+ "description": "<p>Do we hide conclusion (0-show, 1-hide, default is 0)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "String",
+ "optional": false,
+ "field": "besedilo",
+ "description": "<p>Text of introduction or conclusion (set it on &quot;&quot; for default text)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Object[]",
+ "optional": true,
+ "field": "vprasanja",
+ "description": "<p>Array of all questions to add to survey</p>"
+ }
+ ],
+ "Question fields": [
+ {
+ "group": "Question fields",
+ "type": "String",
+ "optional": false,
+ "field": "besedilo_vprasanja",
+ "description": "<p>Text of question</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": false,
+ "field": "mesto_vprasanja",
+ "description": "<p>Order of question sequence to place this question in page</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": false,
+ "field": "vrsta_vprasanja",
+ "description": "<p>Type of question (0-radio, 1-checkbox, 2-text)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": true,
+ "field": "reminder",
+ "description": "<p>Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder) (default is 0)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "String",
+ "optional": true,
+ "field": "other",
+ "description": "<p>Text of option other to add (for radio and checkbox)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": true,
+ "field": "velikost_polja",
+ "description": "<p>Height size in lines of text field (for text question) (default is single line)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "String[]",
+ "optional": true,
+ "field": "Odgovori",
+ "description": "<p>Array of options to add to question (for radio and checkbox)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (For survey): ",
+ "content": " {\n\t\"naslov_vprasalnika\": \"This is title of new survey\",\n\t\"survey_type\": 2,\n\t\"uvod\": {\n\t\t\"besedilo\": \"This is text of intruduction\",\n\t\t\"hide_uvod\": 0\n\t},\n\t\"zakljucek\": {\n\t\t\"besedilo\": \"\",\n\t\t\"hide_zakljucek\": 1\n\t},\n\t\"vprasanja\": [{\n\t\t\t\"besedilo_vprasanja\": \"This is text of question number 1\",\n\t\t\t\"mesto_vprasanja\": 1,\n\t\t\t\"vrsta_vprasanja\": 1,\n\t\t\t\"reminder\": 0,\n\t\t\t\"other\": \"Other:\",\n\t\t\t\"Odgovori\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n\t\t},\n\t\t{\n\t\t\t\"besedilo_vprasanja\": \"This is text of question number 2\",\n\t\t\t\"mesto_vprasanja\": 2,\n\t\t\t\"vrsta_vprasanja\": 2,\n\t\t\t\"velikost_polja\": 10,\n\t\t\t\"reminder\": 1\n\t\t},\n {\n\t\t\t\"besedilo_vprasanja\": \"This is text of question number 3\",\n\t\t\t\"mesto_vprasanja\": 3,\n\t\t\t\"vrsta_vprasanja\": 0,\n\t\t\t\"Odgovori\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n\t\t}\n\t]\n }",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (For voting): ",
+ "content": " {\n\t\"naslov_vprasalnika\": \"This is title of new survey\",\n\t\"survey_type\": 0,\n \"besedilo_vprasanja\": \"This is text of question number 1\",\n \"vrsta_vprasanja\": 0,\n \"other\": \"Other:\",\n \"Odgovori\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "url",
+ "description": "<p>Link to new survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of new survey</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"url\":\"http:\\/\\/141.255.212.38\\/1ka\\/a\\/56\",\"id\":56,\"note\":\"Survey created\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteSurvey/survey/:id",
+ "title": "deleteSurvey",
+ "name": "deleteSurvey",
+ "group": "Surveys",
+ "description": "<p>Delete survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey to delete</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurvey/survey/:id",
+ "title": "getSurvey",
+ "name": "getSurvey",
+ "group": "Surveys",
+ "description": "<p>Get info of survey and its questions</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "link",
+ "description": "<p>Link of survey</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "intro",
+ "description": "<p>Introduction text (&quot;&quot; means default)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "concl",
+ "description": "<p>Conclusion text (&quot;&quot; means default)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "show_intro",
+ "description": "<p>Hide or show introduction (0-hide, 1-show)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "show_concl",
+ "description": "<p>Hide or show conclusion (0-hide, 1-show)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page_id",
+ "description": "<p>ID of last page in survey</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "questions",
+ "description": "<p>Array of all questions in survey</p>"
+ }
+ ],
+ "Question Fields": [
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "type",
+ "description": "<p>Type in text of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "type_code",
+ "description": "<p>Type in code of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Title/text of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "info",
+ "description": "<p>Additional information of question (e.g. &quot;Multiple answers are possible&quot;)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of question in survey (question name)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page_id",
+ "description": "<p>ID of page that question is at</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page_title",
+ "description": "<p>Name/text of page that question is at</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "reminder",
+ "description": "<p>Reminder of question (0-no reminder, 1-soft reminder, 2-hard reminder)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "order",
+ "description": "<p>Sequence number of question in page</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "params",
+ "description": "<p>Additional params as string for question</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "options",
+ "description": "<p>Array of options/answers/values of question</p>"
+ }
+ ],
+ "Value Fields": [
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Title of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of value in question (value name)</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "other",
+ "description": "<p>Is this value other (0-basic, 1-other)</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "order",
+ "description": "<p>Sequence number of value in the question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n \"link\": \"http:\\/\\/192.168.0.101\\/1ka\\/a\\/109\",\n \"title\": \"A survey\",\n \"intro\": \"\",\n \"concl\": \"\",\n \"show_intro\": \"1\",\n \"show_concl\": \"1\",\n \"page_id\": \"135\",\n \"questions\": [{\n \"id\": \"487\",\n \"type\": \"Single answer\",\n \"type_code\": \"1\",\n \"title\": \"City\",\n \"info\": \"\",\n \"variable\": \"Q1\",\n \"page_id\": \"134\",\n \"page_title\": \"Stran 1\",\n \"reminder\": \"0\",\n \"orientation\": \"1\",\n \"order\": \"1\",\n \"params\": [],\n \"options\": [{\n \"id\": \"1438\",\n \"title\": \"Ljubljana\",\n \"variable\": \"1\",\n \"other\": \"0\",\n \"order\": \"1\"\n }, {\n \"id\": \"1439\",\n \"title\": \"Berlin\",\n \"variable\": \"2\",\n \"other\": \"0\",\n \"order\": \"2\"\n }, {\n \"id\": \"1440\",\n \"title\": \"London\",\n \"variable\": \"3\",\n \"other\": \"0\",\n \"order\": \"3\"\n }, {\n \"id\": \"1445\",\n \"title\": \"Other:\",\n \"variable\": \"4\",\n \"other\": \"1\",\n \"order\": \"4\"\n }]\n }, {\n \"id\": \"488\",\n \"type\": \"Multiple answer\",\n \"type_code\": \"2\",\n \"title\": \"Country\",\n \"info\": \"Multiple answers possible\",\n \"variable\": \"Q2\",\n \"page_id\": \"134\",\n \"page_title\": \"Stran 1\",\n \"reminder\": \"0\",\n \"orientation\": \"1\",\n \"order\": \"2\",\n \"params\": [],\n \"options\": [{\n \"id\": \"1441\",\n \"title\": \"Slovenia\",\n \"variable\": \"Q2a\",\n \"other\": \"0\",\n \"order\": \"1\"\n }, {\n \"id\": \"1442\",\n \"title\": \"Germany\",\n \"variable\": \"Q2b\",\n \"other\": \"0\",\n \"order\": \"2\"\n }, {\n \"id\": \"1443\",\n \"title\": \"UK\",\n \"variable\": \"Q2c\",\n \"other\": \"0\",\n \"order\": \"3\"\n }, {\n \"id\": \"1446\",\n \"title\": \"Other:\",\n \"variable\": \"Q2d\",\n \"other\": \"1\",\n \"order\": \"4\"\n }]\n }, {\n \"id\": \"489\",\n \"type\": \"Text input\",\n \"type_code\": \"21\",\n \"title\": \"Write a name\",\n \"info\": \"\",\n \"variable\": \"Q3\",\n \"page_id\": \"135\",\n \"page_title\": \"Page 2\",\n \"reminder\": \"0\",\n \"orientation\": \"1\",\n \"order\": \"1\",\n \"params\": {\n \"taWidth\": \"-1\",\n \"taSize\": \"1\",\n \"captcha\": \"0\",\n \"emailVerify\": \"0\",\n \"prevAnswers\": \"0\",\n \"disabled_vprasanje\": \"0\"\n },\n \"options\": [{\n \"id\": \"1444\",\n \"title\": \"Input text\",\n \"variable\": \"Q3a\",\n \"other\": \"0\",\n \"order\": \"1\"\n }]\n }]\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyInfo/survey/:id",
+ "title": "getSurveyInfo",
+ "name": "getSurveyInfo",
+ "group": "Surveys",
+ "description": "<p>Get info of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "count",
+ "description": "<p>Number of surveys in list</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "link",
+ "description": "<p>Access link of survey for respondents</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "surveys",
+ "description": "<p>Array of surveys</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "active",
+ "description": "<p>Current activity of survey (1 – survey is active, 0 – survey is not active)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "block_ip",
+ "description": "<p>Blocked IP in minutes – 0 off (1440 = 24h) - if on, respondent can not access to survey again for given minutes</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_name",
+ "description": "<p>Name of editor of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_name",
+ "description": "<p>Name of author of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_time",
+ "description": "<p>Last edited</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_time",
+ "description": "<p>Created</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_first",
+ "description": "<p>First entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_last",
+ "description": "<p>Last entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "answers",
+ "description": "<p>Number of units</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "variables",
+ "description": "<p>Number of questions</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastingfrom",
+ "description": "<p>Date of start survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastinguntill",
+ "description": "<p>Date of end survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "survey_type",
+ "description": "<p>Type of survey (2-survey, 0-voting, 1-form)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": " {\"count\":1,\n \"surveys\":[\n {\"id\":\"29\",\n \"folder\":\"1\",\n \"del\":\"1\",\n \"naslov\":\"Test 111\",\n \"active\":\"1\",\n \"mobile_created\":\"0\",\n \"block_ip\":\"0\",\n \"edit_uid\":\"1045\",\n \"e_name\":\"admin\",\n \"e_surname\":\"admin\",\n \"e_email\":\"admin\",\n \"insert_uid\":\"1045\",\n \"i_name\":\"admin\",\n \"i_surname\":\"admin\",\n \"i_email\":\"admin\",\n \"e_time\":\"08.11.18 11:36\",\n \"i_time\":\"27.07.18 11:36\",\n \"v_time_first\":\"27.07.18 14:31\",\n \"v_time_last\":\"20.08.18 9:33\",\n \"answers\":\"8\",\n \"approp\":\"7\",\n \"variables\":\"12\",\n \"trajanjeod\":\"08.11.18\",\n \"trajanjedo\":\"08.02.19\",\n \"survey_type\":\"2\"}\n ],\n \"link\":\"http:\\/\\/www.1ka.si\\/a\\/109\"\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyList?limit=3",
+ "title": "getSurveyList",
+ "name": "getSurveyList",
+ "group": "Surveys",
+ "description": "<p>Get list of info of all surveys</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "limit",
+ "description": "<p>Optional Limit of surveys to return, DESC order by time of new input (answer)</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "count",
+ "description": "<p>Number of surveys in list</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "surveys",
+ "description": "<p>Array of surveys</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "active",
+ "description": "<p>Current activity of survey (1 – survey is active, 0 – survey is not active)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "block_ip",
+ "description": "<p>Blocked IP in minutes – 0 off (1440 = 24h) - if on, respondent can not access to survey again for given minutes</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_name",
+ "description": "<p>Name of editor of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_name",
+ "description": "<p>Name of author of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_time",
+ "description": "<p>Last edited</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_time",
+ "description": "<p>Created</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_first",
+ "description": "<p>First entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_last",
+ "description": "<p>Last entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "answers",
+ "description": "<p>Number of units</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "variables",
+ "description": "<p>Number of questions</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastingfrom",
+ "description": "<p>Date of start survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastinguntill",
+ "description": "<p>Date of end survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "survey_type",
+ "description": "<p>Type of survey (2-survey, 0-voting, 1-form)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"count\":3,\n \"surveys\":[\n {\"id\":\"29\",\n \"folder\":\"1\",\n \"del\":\"1\",\n \"naslov\":\"Test 111\",\n \"active\":\"1\",\n \"mobile_created\":\"0\",\n \"block_ip\":\"0\",\n \"edit_uid\":\"1045\",\n \"e_name\":\"admin\",\n \"e_surname\":\"admin\",\n \"e_email\":\"admin\",\n \"insert_uid\":\"1045\",\n \"i_name\":\"admin\",\n \"i_surname\":\"admin\",\n \"i_email\":\"admin\",\n \"e_time\":\"08.11.18 11:36\",\n \"i_time\":\"27.07.18 11:36\",\n \"v_time_first\":\"27.07.18 14:31\",\n \"v_time_last\":\"20.08.18 9:33\",\n \"answers\":\"8\",\n \"approp\":\"7\",\n \"variables\":\"12\",\n \"trajanjeod\":\"08.11.18\",\n \"trajanjedo\":\"08.02.19\",\n \"survey_type\":\"2\"},...\n ]}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyResponses",
+ "title": "getSurveyResponses",
+ "name": "getSurveyResponses",
+ "group": "Surveys",
+ "description": "<p>Get list of numbers of all surveys responses (and info about activity) with keys as survey ID</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "answers",
+ "description": "<p>Number of all responses</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "active",
+ "description": "<p>Is survey active right now (1-active, 0-unactive)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"4401\": {\n\t\t\"answers\": \"1103\",\n\t\t\"active\": \"0\"\n\t},\n\t\"5012\": {\n\t\t\"answers\": \"190\",\n\t\t\"active\": \"1\"\n\t},\n\t\"5330\": {\n\t\t\"answers\": \"88\",\n\t\t\"active\": \"1\"\n\t}\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/updateSurvey/survey/:id",
+ "title": "updateSurvey",
+ "name": "updateSurvey",
+ "group": "Surveys",
+ "description": "<p>Update basic survey properties</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "title",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "que_title",
+ "description": "<p>Title/text of question (only voting)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "introduction",
+ "description": "<p>Introduction text of survey or form (&quot;&quot; stands for default text)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "conclusion",
+ "description": "<p>Conclusion text of survey or form (&quot;&quot; stands for default text)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "show_intro",
+ "description": "<p>Do we show introduction (0-hide, 1-show)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "show_concl",
+ "description": "<p>Do we show conclusion (0-hide, 1-show)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (survey or form): ",
+ "content": "{\n \"title\":\"A survey\",\n \"introduction\":\"\",\n \"conclusion\":\"Thank you!\",\n \"show_intro\":\"1\",\n \"show_concl\":\"1\"\n}",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (voting): ",
+ "content": "{\n \"title\":\"Weekly voting\",\n \"que_title\":\"What is your vote?\"\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey updated\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ }
+] });
diff --git a/admin/survey/api/apidoc/api_data.json b/admin/survey/api/apidoc/api_data.json
new file mode 100644
index 0000000..eee99b2
--- /dev/null
+++ b/admin/survey/api/apidoc/api_data.json
@@ -0,0 +1,3248 @@
+[
+ {
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "optional": false,
+ "field": "varname1",
+ "description": "<p>No type.</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "varname2",
+ "description": "<p>With type.</p>"
+ }
+ ]
+ }
+ },
+ "type": "",
+ "url": "",
+ "version": "0.0.0",
+ "filename": "./apidoc/apidoc/main.js",
+ "group": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_apidoc_main_js",
+ "groupTitle": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_apidoc_main_js",
+ "name": ""
+ },
+ {
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "optional": false,
+ "field": "varname1",
+ "description": "<p>No type.</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "varname2",
+ "description": "<p>With type.</p>"
+ }
+ ]
+ }
+ },
+ "type": "",
+ "url": "",
+ "version": "0.0.0",
+ "filename": "./apidoc/main.js",
+ "group": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_main_js",
+ "groupTitle": "D__xampp_htdocs_1ka_admin_survey_api_apidoc_main_js",
+ "name": ""
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyAnswerState/survey/:id",
+ "title": "getSurveyAnswerState",
+ "name": "getSurveyAnswerState",
+ "group": "Dashboard",
+ "description": "<p>Get response rate for survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "status",
+ "description": "<p>Basic status of answers (3ll-entered intro, 4ll-entered frist page, 5ll-started responding, 5-partially completed, 6-completed)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "usability",
+ "description": "<p>Unit usability (unit (bottom usable limit/top usable limit))</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "breakoffs",
+ "description": "<p>Data of responents breakoffs</p>"
+ }
+ ],
+ "Data Fields": [
+ {
+ "group": "Data Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "freq",
+ "description": "<p>Frequency</p>"
+ },
+ {
+ "group": "Data Fields",
+ "type": "String",
+ "optional": false,
+ "field": "state",
+ "description": "<p>Realtive frequency</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"status\": {\n\t\t\"3ll\": {\n\t\t\t\"freq\": 29,\n\t\t\t\"state\": \"100%\"\n\t\t},\n\t\t\"4ll\": {\n\t\t\t\"freq\": 27,\n\t\t\t\"state\": \"93%\"\n\t\t},\n\t\t\"5ll\": {\n\t\t\t\"freq\": 20,\n\t\t\t\"state\": \"69%\"\n\t\t},\n\t\t\"5\": {\n\t\t\t\"freq\": 18,\n\t\t\t\"state\": \"62%\"\n\t\t},\n\t\t\"6\": {\n\t\t\t\"freq\": 18,\n\t\t\t\"state\": \"62%\"\n\t\t}\n\t},\n\t\"usability\": {\n\t\t\"unit\": \"(50%\\/80%)\",\n\t\t\"usable\": {\n\t\t\t\"freq\": 1,\n\t\t\t\"state\": \"5%\"\n\t\t},\n\t\t\"partusable\": {\n\t\t\t\"freq\": 6,\n\t\t\t\"state\": \"30%\"\n\t\t},\n\t\t\"unusable\": {\n\t\t\t\"freq\": 13,\n\t\t\t\"state\": \"65%\"\n\t\t}\n\t},\n\t\"breakoffs\": {\n\t\t\"intro\": {\n\t\t\t\"freq\": 9,\n\t\t\t\"state\": \"31%\"\n\t\t},\n\t\t\"questionnaire\": {\n\t\t\t\"freq\": 0,\n\t\t\t\"state\": \"0% (neto 0%)\"\n\t\t},\n\t\t\"total\": {\n\t\t\t\"freq\": 9,\n\t\t\t\"state\": \"31%\"\n\t\t}\n\t}\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyDashboard/survey/:id",
+ "title": "getSurveyDashboard",
+ "name": "getSurveyDashboard",
+ "group": "Dashboard",
+ "description": "<p>Get all dashboard data of survey (if survey has no responses, only survey info is returned)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "info",
+ "description": "<p>Info of survey (basic dashboard info)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "statuses",
+ "description": "<p>Statuses of responses of survey (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "datetime",
+ "description": "<p>Object of nubers of all responses by date and hour in day (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "redirections",
+ "description": "<p>Redirections of survey (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "paradata",
+ "description": "<p>Paradata of responses of survey (optional)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": true,
+ "field": "responserate",
+ "description": "<p>Response rate of survey (optional)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"info\": [SEE OUTPUT OF FUNCTION getSurveyInfo],\n\t\"statuses\": [SEE OUTPUT OF FUNCTION getSurveyStatuses],\n\t\"datetime\": [SEE OUTPUT OF FUNCTION getSurveyDateTimeRange],\n\t\"redirections\": [SEE OUTPUT OF FUNCTION getSurveyDateTimeRange],\n\t\"paradata\": [SEE OUTPUT OF FUNCTION getSurveyParadata],\n\t\"responserate\": [SEE OUTPUT OF FUNCTION getSurveyAnswerState]\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyDateTimeRange/survey/:id",
+ "title": "getSurveyDateTimeRange",
+ "name": "getSurveyDateTimeRange",
+ "group": "Dashboard",
+ "description": "<p>Get object of nubers of all responses by date and hour in day (keys as date and hour in day, values as number of answers at that time)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"2017-10-02 09\": \"10\",\n\t\"2017-10-03 13\": \"1\",\n\t\"2017-11-10 11\": \"3\",\n\t\"2017-11-10 12\": \"7\",\n\t\"2017-11-10 13\": \"1\",\n\t\"2017-11-10 14\": \"7\",\n \"2017-11-10 17\": \"2\"\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyParadata/survey/:id",
+ "title": "getSurveyParadata",
+ "name": "getSurveyParadata",
+ "group": "Dashboard",
+ "description": "<p>Get paradata of responses of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "valid",
+ "description": "<p>Paradata of valid answers/respondents</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "all",
+ "description": "<p>Paradata of all (valid and nonvalid) answers/respondents</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"valid\": {\n\t\t\"unfilteredCount\": 3,\n\t\t\"allCount\": 2,\n\t\t\"pcCount\": \"2\",\n\t\t\"mobiCount\": 0,\n\t\t\"tabletCount\": 0,\n\t\t\"robotCount\": 0,\n\t\t\"jsActive\": 2,\n\t\t\"jsNonActive\": 0,\n\t\t\"jsUndefined\": 0,\n\t\t\"browser\": {\n\t\t\t\"Other\": \"2\"\n\t\t},\n\t\t\"os\": {\n\t\t\t\"Other\": \"2\"\n\t\t}\n\t},\n\t\"all\": {\n\t\t\"unfilteredCount\": 3,\n\t\t\"allCount\": 3,\n\t\t\"pcCount\": \"3\",\n\t\t\"mobiCount\": 0,\n\t\t\"tabletCount\": 0,\n\t\t\"robotCount\": 0,\n\t\t\"jsActive\": 3,\n\t\t\"jsNonActive\": 0,\n\t\t\"jsUndefined\": 0,\n\t\t\"browser\": {\n\t\t\t\"Other\": \"3\"\n\t\t},\n\t\t\"os\": {\n\t\t\t\"Other\": \"3\"\n\t\t}\n\t}\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyRedirections/survey/:id",
+ "title": "getSurveyRedirections",
+ "name": "getSurveyRedirections",
+ "group": "Dashboard",
+ "description": "<p>Get all redirections of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"3\": 0,\n\t\"4\": 0,\n\t\"5\": 0,\n\t\"6\": 0,\n\t\"valid\": {\n\t\t\"email\": 86,\n\t\t\"www.1ka.si\": 23,\n\t\t\"www.customsite.si\": 1\n\t},\n\t\"email\": 86,\n\t\"direct\": 4,\n\t\"cntAll\": 0\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyStatuses/survey/:id",
+ "title": "getSurveyStatuses",
+ "name": "getSurveyStatuses",
+ "group": "Dashboard",
+ "description": "<p>Get statuses of responses of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Object",
+ "optional": false,
+ "field": "valid",
+ "description": "<p>6-finished surveys, 5-partially finished surveys</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object",
+ "optional": false,
+ "field": "nonvalid",
+ "description": "<p>6l-lurkers, 5l-lurkers, 4-click on survey, 3-click on intro, -1-unknown status</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object",
+ "optional": false,
+ "field": "invitation",
+ "description": "<p>(non-surveyed units) 2-email sent (error), 1-email sent (non-response), 0-email not sent</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"valid\":{\"6\":50,\"5\":0},\n \"nonvalid\":{\"6l\":0,\"5l\":0,\"4\":0,\"3\":0,\"-1\":0},\n \"invitation\":{\"2\":0,\"1\":0,\"0\":0}}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Dashboard"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/addLink/survey/:id",
+ "title": "addLink",
+ "name": "addLink",
+ "group": "Data_and_analysis",
+ "description": "<p>Add new public link (hash link of data or analysis). Example of hash (public) link: https://www.1ka.si/podatki/50/5BABEC6D/ ([SITE_ROOT]/podatki/[SURVEY_ID]/[HASH_CODE]/)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "a",
+ "description": "<p>Broad type of content of hash link (analysis, data) (if data, parameter m is not needed)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "m",
+ "description": "<p>Specific type of content of hash link (analysis_creport, descriptor, frequency, charts, sumarnik) (when parameter a is &quot;data&quot;, this parameter is not needed)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"a\":\"analysis\", \"m\":\"frequency\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Link added\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteLink/survey/:id",
+ "title": "deleteLink",
+ "name": "deleteLink",
+ "group": "Data_and_analysis",
+ "description": "<p>Delete specific public link (hash link of data or analysis)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "hash",
+ "description": "<p>Hash code of public link to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"hash\":\"5BABEC6D\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Link deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteSurveyUnit/survey/:id",
+ "title": "deleteSurveyUnit",
+ "name": "deleteSurveyUnit",
+ "group": "Data_and_analysis",
+ "description": "<p>Delete unit/response in survey data (whole response of a respondent)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "srv_unit_id",
+ "description": "<p>ID of unit/response to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"srv_unit_id\":\"12774\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey unit deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyFrequencies/survey/:id",
+ "title": "getSurveyFrequencies",
+ "name": "getSurveyFrequencies",
+ "group": "Data_and_analysis",
+ "description": "<p>Get frequencies for all radio, checkbox, dropdown and plain text questions in the survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Question Fields": [
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "besedilo_vprasanja",
+ "description": "<p>Text of question</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id_vprasanja",
+ "description": "<p>Id of question (left side of '_' is actual ID of question, right side is ID of sequence within question)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "vrsta_vprasanja",
+ "description": "<p>Code of question type: 0-single choice (radio, dropdown), 1-multiple choice (checkbox), 2-text</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "odgovori",
+ "description": "<p>Answers</p>"
+ }
+ ],
+ "Answer Fields": [
+ {
+ "group": "Answer Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "invalid",
+ "description": "<p>Invalid answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "invalidCnt",
+ "description": "<p>Count of all invalid answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "allCnt",
+ "description": "<p>Count of all answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Number",
+ "optional": false,
+ "field": "validCnt",
+ "description": "<p>Count of all valid answers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "valid",
+ "description": "<p>Array of all valid asnwers</p>"
+ },
+ {
+ "group": "Answer Fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Text/name/title of answer/choice (not in single choice)</p>"
+ }
+ ],
+ "Valid answer Fields - single choice": [
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "String",
+ "optional": false,
+ "field": "text",
+ "description": "<p>Text/name/title of answer/choice</p>"
+ },
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "String",
+ "optional": false,
+ "field": "text_graf",
+ "description": "<p>Text of answer/choice in graph</p>"
+ },
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "String",
+ "optional": false,
+ "field": "cnt",
+ "description": "<p>Count of choices for this answer</p>"
+ },
+ {
+ "group": "Valid answer Fields - single choice",
+ "type": "Number",
+ "optional": false,
+ "field": "vrednost",
+ "description": "<p>Value of answer/choice</p>"
+ }
+ ],
+ "Valid answer Fields - multiple choice": [
+ {
+ "group": "Valid answer Fields - multiple choice",
+ "type": "String",
+ "optional": false,
+ "field": "text",
+ "description": "<p>0-not checked, 1-checked</p>"
+ }
+ ],
+ "Valid answer Fields - text": [
+ {
+ "group": "Valid answer Fields - text",
+ "type": "String",
+ "optional": false,
+ "field": "text",
+ "description": "<p>Actual text asnwer</p>"
+ },
+ {
+ "group": "Valid answer Fields - text",
+ "type": "Number",
+ "optional": false,
+ "field": "cnt",
+ "description": "<p>Count of same asnwer</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "[{\n \"besedilo_vprasanja\": \"Best counrty in Europe\",\n \"id_vprasanja\": \"118_0\",\n \"vrsta_vprasanja\": \"0\",\n \"odgovori\": {\n \"invalid\": {\n \"-1\": {\"text\": \"Unanswered question\",\"cnt\": \"1\"},\n \"-2\": {\"text\": \"Skipped question (IF logic)\",\"cnt\": 0},\n \"-3\": {\"text\": \"Drop-out\",\"cnt\": 0},\n \"-4\": {\"text\": \"Subsequent question\",\"cnt\": 0},\n \"-5\": {\"text\": \"Empty unit\",\"cnt\": 0},\n \"-97\": {\"text\": \"Invalid\",\"cnt\": 0},\n \"-98\": {\"text\": \"Refused\",\"cnt\": 0},\n \"-99\": {\"text\": \"Don&#39;t know\",\"cnt\": 0}\n },\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"validCnt\": 4,\n \"valid\": [{\n \"text\": \"Slovenia\",\n \"text_graf\": \"Slovenia\",\n \"cnt\": \"1\",\n \"vrednost\": 1\n }, {\n \"text\": \"Spain\",\n \"text_graf\": \"Spain\",\n \"cnt\": 0,\n \"vrednost\": 2\n }, {\n \"text\": \"Germany\",\n \"text_graf\": \"Germany\",\n \"cnt\": \"2\",\n \"vrednost\": 3\n }, {\n \"text\": \"Other:\",\n \"text_graf\": \"Other:\",\n \"cnt\": \"1\",\n \"vrednost\": 4\n }, {\n \"text\": \"estonia\",\n \"cnt\": 1,\n \"text_graf\": null,\n \"other\": \"Other:\",\n \"vrednost\": \"estonia\"\n }]\n }\n }, {\n \"besedilo_vprasanja\": \"Cities you visited\",\n \"id_vprasanja\": \"119_0\",\n \"vrsta_vprasanja\": \"1\",\n \"odgovori\": [{\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"1\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"3\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Ljubljana\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"3\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"1\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Berlin\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"2\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"2\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Madrid\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": \"3\"\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"1\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"London\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"valid\": [{\n \"text\": \"0\",\n \"text_graf\": null,\n \"cnt\": 0\n }, {\n \"text\": \"1\",\n \"text_graf\": null,\n \"cnt\": \"4\"\n }],\n \"validCnt\": 4,\n \"naslov\": \"Other:\"\n }, {\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"validCnt\": 4,\n \"average\": null,\n \"valid\": [{\n \"text\": \"paris\",\n \"cnt\": 1,\n \"text_graf\": null,\n \"other\": \"Other:\"\n }, {\n \"text\": \"zagreb\",\n \"cnt\": 1,\n \"text_graf\": null,\n \"other\": \"Other:\"\n }, {\n \"text\": \"lisbon\",\n \"cnt\": 2,\n \"text_graf\": null,\n \"other\": \"Other:\"\n }],\n \"other\": \"Other:\"\n }]\n }, {\n \"besedilo_vprasanja\": \"Write a name\",\n \"id_vprasanja\": \"120_0\",\n \"vrsta_vprasanja\": \"2\",\n \"odgovori\": [{\n \"invalid\": {[SEE FIRST QUESTION]},\n \"invalidCnt\": 1,\n \"allCnt\": 5,\n \"validCnt\": 4,\n \"average\": null,\n \"valid\": [{\n \"text\": \"lucy\",\n \"cnt\": 1,\n \"text_graf\": null\n }, {\n \"text\": \"crish\",\n \"cnt\": 2,\n \"text_graf\": null\n }, {\n \"text\": \"marie\",\n \"cnt\": 1,\n \"text_graf\": null\n }]\n }]\n }]",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyHashes/survey/:id",
+ "title": "getSurveyHashes",
+ "name": "getSurveyHashes",
+ "group": "Data_and_analysis",
+ "description": "<p>Get all hash links of survey. Example of hash (public) link: https://www.1ka.si/podatki/50/5BABEC6D/ ([SITE_ROOT]/podatki/[SURVEY_ID]/[HASH_CODE]/)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "hash",
+ "description": "<p>Hash code for link</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "comment",
+ "description": "<p>Comment of hash link</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "refresh",
+ "description": "<p>0-refresh mode off, 1-auto refresh site every x seconds</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "access_password",
+ "description": "<p>If not NULL or &quot;&quot;, this password is needed to access public link</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page",
+ "description": "<p>Broad type of content of hash link (analysis, data)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "add_date",
+ "description": "<p>Date of creation</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "add_time",
+ "description": "<p>Time of creation</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "email",
+ "description": "<p>Email of author</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "properties",
+ "description": "<p>Properties of hash link</p>"
+ }
+ ],
+ "Hash link Fields": [
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "anketa",
+ "description": "<p>ID of survey that hash link belong to</p>"
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "a",
+ "description": "<p>Broad type of content of hash link (analysis, data)</p>"
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "m",
+ "description": "<p>Specific type of content of hash link (analysis_creport, descriptor, frequency, charts, sumarnik)</p>"
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "profile_id_status",
+ "description": ""
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "profile_id_variable",
+ "description": ""
+ },
+ {
+ "group": "Hash link Fields",
+ "type": "String",
+ "optional": false,
+ "field": "profile_id_condition",
+ "description": ""
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "[{\n \"hash\": \"179A60BA\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"analysis\",\n \"m\": \"frequency\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"Frequencies\",\n \"refresh\": \"0\",\n \"access_password\": \"\",\n \"page\": \"analysis\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:38\",\n \"email\": \"admin\"\n }, {\n \"hash\": \"F3FB9720\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"analysis\",\n \"m\": \"charts\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"Charts\",\n \"refresh\": \"0\",\n \"access_password\": \"\",\n \"page\": \"analysis\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:37\",\n \"email\": \"admin\"\n }, {\n \"hash\": \"2D704440\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"data\",\n \"m\": \"\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"\",\n \"refresh\": \"0\",\n \"access_password\": null,\n \"page\": \"data\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:37\",\n \"email\": \"admin\"\n }, {\n \"hash\": \"7A96B2C7\",\n \"properties\": {\n \"anketa\": \"50\",\n \"a\": \"analysis\",\n \"m\": \"sumarnik\",\n \"profile_id_status\": 2,\n \"profile_id_variable\": 0,\n \"profile_id_condition\": 1\n },\n \"comment\": \"Summary\",\n \"refresh\": \"0\",\n \"access_password\": \"\",\n \"page\": \"analysis\",\n \"add_date\": \"17.05.2019\",\n \"add_time\": \"12:36\",\n \"email\": \"admin\"\n }]",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyResponseData/survey/:id?usr_id=333",
+ "title": "getSurveyResponseData",
+ "name": "getSurveyResponseData",
+ "group": "Data_and_analysis",
+ "description": "<p>Get basic info and all values/answers of response</p>",
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of survey</p>"
+ },
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "usr_id",
+ "description": "<p>ID of response to analyse</p>"
+ }
+ ]
+ }
+ },
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "relevance",
+ "description": "<p>Relevance of response (1-valid, 0-unvalid)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "status",
+ "description": "<p>Status code of response (6-Completed, 5-partially completed, 4-entered first page, 3-entered intro)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "recnum",
+ "description": "<p>Record number (sequence of response in survey)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "itime",
+ "description": "<p>Date of response</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": true,
+ "field": "ALL_OTHERS",
+ "description": "<p>Keys as names of values, values as answers</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n \"relevance (Relevance)\": \"1\",\n \"status (Status)\": \"6\",\n \"recnum (Record number)\": \"1\",\n \"itime (Date)\": \"20.05.2019\",\n \"Q1 (City)\": \"1\",\n \"Q1_4_text (Other:)\": \"-2\",\n \"Q2a (Slovenia)\": \"1\",\n \"Q2b (Germany)\": \"1\",\n \"Q2c (UK)\": \"0\",\n \"Q2d (Other:)\": \"0\",\n \"Q2d_text (Other:)\": \"-2\",\n \"Q3 (Vpi\\u0161ite besedilo)\": \"Manja\"\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Data_and_analysis"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/copyQuestion/survey/:id",
+ "title": "copyQuestion",
+ "name": "copyQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Make a copy of specific question and put it +1 in order to original question on same page</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of question to copy</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"que_id\":12240}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of new question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"id\":12831,\"note\":\"Question copied\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/createQuestion/survey/:id",
+ "title": "createQuestion",
+ "name": "createQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Add new question to survey, put it on last spot of given group/page in survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey to add new question to</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Text of question</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "group_id",
+ "description": "<p>Id of page/group to put question in (default is last page/group)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "type_code",
+ "description": "<p>Type of question (0-radio, 1-checkbox, 2-text)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "reminder",
+ "description": "<p>Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder) (default is 0)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "other",
+ "description": "<p>Text of option other to add (for cshoose type questions)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "taSize",
+ "description": "<p>Height size in lines of text field (for text question) (default is single line)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String[]",
+ "optional": true,
+ "field": "options",
+ "description": "<p>Array of options to add to question (for cshoose type questions)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (For choice-type): ",
+ "content": " {\n\t\"question\": {\n\t\t\t\"title\": \"This is text of choice type question\",\n\t\t\t\"type_code\": 1,\n \"group_id\": 2027,\n\t\t\t\"reminder\": 0,\n\t\t\t\"other\": \"Other:\",\n\t\t\t\"options\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n\t\t}\t\n }",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (For text-type): ",
+ "content": " {\n\t\"question\": {\n\t\t\t\"title\": \"This is text of text type question\",\n\t\t\t\"type_code\": 2,\n \"group_id\": 2027,\n\t\t\t\"reminder\": 1,\n\t\t\t\"taSize\": 3\n\t\t}\t\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of new question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"que_id\":5056,\"note\":\"Question created\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteOption/survey/:id",
+ "title": "deleteOption",
+ "name": "deleteOption",
+ "group": "Questions_and_variables",
+ "description": "<p>Delete option/value of question (for picking type of question - single or multiple choice)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "option_id",
+ "description": "<p>ID of option/value to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"option_id\":\"424\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Option deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteQuestion/survey/:id",
+ "title": "deleteQuestion",
+ "name": "deleteQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Delete question</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "que_id",
+ "description": "<p>ID of question to delete</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"que_id\":4240}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Question deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyQuestions/survey/:id",
+ "title": "getSurveyQuestions",
+ "name": "getSurveyQuestions",
+ "group": "Questions_and_variables",
+ "description": "<p>Get info of all questions of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of question</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "tip",
+ "description": "<p>Type of question (verbal)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of question</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "info",
+ "description": "<p>Additional information of question (e.g. &quot;Multiple answers are possible&quot;)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of question (question name)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "stran_id",
+ "description": "<p>Id of page</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "stran_naslov",
+ "description": "<p>Title of page</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "vrstni_red",
+ "description": "<p>Sequence number of the question</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object",
+ "optional": false,
+ "field": "vrednosti",
+ "description": "<p>Values o questions (possible answers)</p>"
+ }
+ ],
+ "Value Fields": [
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of value in question (value name)</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "vrstni_red",
+ "description": "<p>Sequence number of value in the question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"1234\":{\n \"id\":\"1234\",\n \"tip\":\"One answer\",\n \"naslov\":\"Question tittle 1\",\n \"info\":\"\",\n \"variable\":\"Q1\",\n \"stran_id\":\"2890\",\n \"stran_naslov\":\"Page 1\",\n \"vrstni_red\":\"1\",\n \"vrednosti\":{\n \"48495\":{\n \"id\":\"48495\",\n \"naslov\":\"Write text 1\",\n \"variable\":\"1\",\n \"vrstni_red\":\"1\"},\n \"48496\":{\n \"id\":\"48496\",\n \"naslov\":\"Write text 2\",\n \"variable\":\"2\",\n \"vrstni_red\":\"2\"}\n }\n }},\n {\"1235\"...",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/updateOrCreateOption/survey/:id",
+ "title": "updateOrCreateOption",
+ "name": "updateOrCreateOption",
+ "group": "Questions_and_variables",
+ "description": "<p>Update or add a value/option to question (for picking type of question - single or multiple choice)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "option_text",
+ "description": "<p>Title/text of option/value</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "que_id",
+ "description": "<p>ID of question to add new option/value (needed only for adding)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "option_id",
+ "description": "<p>ID of option/value to update (needed only for updating)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (adding): ",
+ "content": "{\n \"option_text\":\"First option\",\n \"que_id\":\"3894\"\n}",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (updating): ",
+ "content": "{\n \"option_text\":\"First option\",\n \"option_id\":\"9618\"\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response (adding):",
+ "content": "{\"note\":\"Option added\",\"opt_id\":9619}",
+ "type": "json"
+ },
+ {
+ "title": "Success-Response (updating):",
+ "content": "{\"note\":\"Option updated\",\"opt_id\":\"9618\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/updateQuestion/survey/:id",
+ "title": "updateQuestion",
+ "name": "updateQuestion",
+ "group": "Questions_and_variables",
+ "description": "<p>Update basic question properties</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": false,
+ "field": "id_que",
+ "description": "<p>ID of question</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "title",
+ "description": "<p>Title/text of question</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "reminder",
+ "description": "<p>Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "other",
+ "description": "<p>Text of option &quot;Other&quot; (update or add)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": " {\n\t\"question\": {\n \"id_que\": \"8487\",\n \"title\": \"Which city you like most?\",\n \"reminder\": \"1\",\n \"other\": \"Other:\"\n\t}\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Question updated\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Questions_and_variables"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/BlockRepeatedIP/survey/:id",
+ "title": "BlockRepeatedIP",
+ "name": "BlockRepeatedIP",
+ "group": "Surveys",
+ "description": "<p>Block repeated IP (do not allow respondent to respond to survey again for the next x minutes)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "blockIP",
+ "description": "<p>In minutes - if this parameter is not set, blocking IP will be turned off (possible options are 10, 20, 30, 60, 720, 1440, 0-ip blocking off)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"blockIP\":1440}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"IP blocking changed\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/SurveyActivation/survey/:id",
+ "title": "SurveyActivation",
+ "name": "SurveyActivation",
+ "group": "Surveys",
+ "description": "<p>Activate (for 3 months from now) or deactivate survey (start it or stop it)</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "Number",
+ "optional": true,
+ "field": "active",
+ "description": "<p>If this parameter is not set, survey will be deactivated (0-deactivate survey, 1-activate survey)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example: ",
+ "content": "{\"active\":1}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey activity changed\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "put",
+ "url": "https://www.1ka.si/api/copySurvey/survey/:id",
+ "title": "copySurvey",
+ "name": "copySurvey",
+ "group": "Surveys",
+ "description": "<p>Make a copy of specific survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey to copy</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of new survey</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"id\":5194,\"note\":\"Survey copied\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/createSurvey",
+ "title": "createSurvey",
+ "name": "createSurvey",
+ "group": "Surveys",
+ "description": "<p>Create survey with questions</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Survey fields": [
+ {
+ "group": "Survey fields",
+ "type": "String",
+ "optional": false,
+ "field": "naslov_vprasalnika",
+ "description": "<p>Title/name of survey</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Number",
+ "optional": false,
+ "field": "survey_type",
+ "description": "<p>Type of survey (0-voting, 2-survey)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Object",
+ "optional": false,
+ "field": "uvod",
+ "description": "<p>Introducrion data</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Number",
+ "optional": true,
+ "field": "hide_uvod",
+ "description": "<p>Do we hide introduction (0-show, 1-hide, default is 0)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Object",
+ "optional": false,
+ "field": "zakljucek",
+ "description": "<p>Conclusion data</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Number",
+ "optional": true,
+ "field": "hide_zakljucek",
+ "description": "<p>Do we hide conclusion (0-show, 1-hide, default is 0)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "String",
+ "optional": false,
+ "field": "besedilo",
+ "description": "<p>Text of introduction or conclusion (set it on &quot;&quot; for default text)</p>"
+ },
+ {
+ "group": "Survey fields",
+ "type": "Object[]",
+ "optional": true,
+ "field": "vprasanja",
+ "description": "<p>Array of all questions to add to survey</p>"
+ }
+ ],
+ "Question fields": [
+ {
+ "group": "Question fields",
+ "type": "String",
+ "optional": false,
+ "field": "besedilo_vprasanja",
+ "description": "<p>Text of question</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": false,
+ "field": "mesto_vprasanja",
+ "description": "<p>Order of question sequence to place this question in page</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": false,
+ "field": "vrsta_vprasanja",
+ "description": "<p>Type of question (0-radio, 1-checkbox, 2-text)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": true,
+ "field": "reminder",
+ "description": "<p>Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder) (default is 0)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "String",
+ "optional": true,
+ "field": "other",
+ "description": "<p>Text of option other to add (for radio and checkbox)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "Number",
+ "optional": true,
+ "field": "velikost_polja",
+ "description": "<p>Height size in lines of text field (for text question) (default is single line)</p>"
+ },
+ {
+ "group": "Question fields",
+ "type": "String[]",
+ "optional": true,
+ "field": "Odgovori",
+ "description": "<p>Array of options to add to question (for radio and checkbox)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (For survey): ",
+ "content": " {\n\t\"naslov_vprasalnika\": \"This is title of new survey\",\n\t\"survey_type\": 2,\n\t\"uvod\": {\n\t\t\"besedilo\": \"This is text of intruduction\",\n\t\t\"hide_uvod\": 0\n\t},\n\t\"zakljucek\": {\n\t\t\"besedilo\": \"\",\n\t\t\"hide_zakljucek\": 1\n\t},\n\t\"vprasanja\": [{\n\t\t\t\"besedilo_vprasanja\": \"This is text of question number 1\",\n\t\t\t\"mesto_vprasanja\": 1,\n\t\t\t\"vrsta_vprasanja\": 1,\n\t\t\t\"reminder\": 0,\n\t\t\t\"other\": \"Other:\",\n\t\t\t\"Odgovori\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n\t\t},\n\t\t{\n\t\t\t\"besedilo_vprasanja\": \"This is text of question number 2\",\n\t\t\t\"mesto_vprasanja\": 2,\n\t\t\t\"vrsta_vprasanja\": 2,\n\t\t\t\"velikost_polja\": 10,\n\t\t\t\"reminder\": 1\n\t\t},\n {\n\t\t\t\"besedilo_vprasanja\": \"This is text of question number 3\",\n\t\t\t\"mesto_vprasanja\": 3,\n\t\t\t\"vrsta_vprasanja\": 0,\n\t\t\t\"Odgovori\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n\t\t}\n\t]\n }",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (For voting): ",
+ "content": " {\n\t\"naslov_vprasalnika\": \"This is title of new survey\",\n\t\"survey_type\": 0,\n \"besedilo_vprasanja\": \"This is text of question number 1\",\n \"vrsta_vprasanja\": 0,\n \"other\": \"Other:\",\n \"Odgovori\": [\"Text of option 1\", \"Text of option 2\", \"Text of option 3\"]\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "url",
+ "description": "<p>Link to new survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of new survey</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"url\":\"http:\\/\\/141.255.212.38\\/1ka\\/a\\/56\",\"id\":56,\"note\":\"Survey created\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "delete",
+ "url": "https://www.1ka.si/api/deleteSurvey/survey/:id",
+ "title": "deleteSurvey",
+ "name": "deleteSurvey",
+ "group": "Surveys",
+ "description": "<p>Delete survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey to delete</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey deleted\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurvey/survey/:id",
+ "title": "getSurvey",
+ "name": "getSurvey",
+ "group": "Surveys",
+ "description": "<p>Get info of survey and its questions</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Main Fields": [
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "link",
+ "description": "<p>Link of survey</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "intro",
+ "description": "<p>Introduction text (&quot;&quot; means default)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "concl",
+ "description": "<p>Conclusion text (&quot;&quot; means default)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "show_intro",
+ "description": "<p>Hide or show introduction (0-hide, 1-show)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "show_concl",
+ "description": "<p>Hide or show conclusion (0-hide, 1-show)</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page_id",
+ "description": "<p>ID of last page in survey</p>"
+ },
+ {
+ "group": "Main Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "questions",
+ "description": "<p>Array of all questions in survey</p>"
+ }
+ ],
+ "Question Fields": [
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "type",
+ "description": "<p>Type in text of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "type_code",
+ "description": "<p>Type in code of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Title/text of question in survey</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "info",
+ "description": "<p>Additional information of question (e.g. &quot;Multiple answers are possible&quot;)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of question in survey (question name)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page_id",
+ "description": "<p>ID of page that question is at</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "page_title",
+ "description": "<p>Name/text of page that question is at</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "reminder",
+ "description": "<p>Reminder of question (0-no reminder, 1-soft reminder, 2-hard reminder)</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "order",
+ "description": "<p>Sequence number of question in page</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "String",
+ "optional": false,
+ "field": "params",
+ "description": "<p>Additional params as string for question</p>"
+ },
+ {
+ "group": "Question Fields",
+ "type": "Object[]",
+ "optional": false,
+ "field": "options",
+ "description": "<p>Array of options/answers/values of question</p>"
+ }
+ ],
+ "Value Fields": [
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "title",
+ "description": "<p>Title of value in question</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "variable",
+ "description": "<p>Short mark of value in question (value name)</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "other",
+ "description": "<p>Is this value other (0-basic, 1-other)</p>"
+ },
+ {
+ "group": "Value Fields",
+ "type": "String",
+ "optional": false,
+ "field": "order",
+ "description": "<p>Sequence number of value in the question</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n \"link\": \"http:\\/\\/192.168.0.101\\/1ka\\/a\\/109\",\n \"title\": \"A survey\",\n \"intro\": \"\",\n \"concl\": \"\",\n \"show_intro\": \"1\",\n \"show_concl\": \"1\",\n \"page_id\": \"135\",\n \"questions\": [{\n \"id\": \"487\",\n \"type\": \"Single answer\",\n \"type_code\": \"1\",\n \"title\": \"City\",\n \"info\": \"\",\n \"variable\": \"Q1\",\n \"page_id\": \"134\",\n \"page_title\": \"Stran 1\",\n \"reminder\": \"0\",\n \"orientation\": \"1\",\n \"order\": \"1\",\n \"params\": [],\n \"options\": [{\n \"id\": \"1438\",\n \"title\": \"Ljubljana\",\n \"variable\": \"1\",\n \"other\": \"0\",\n \"order\": \"1\"\n }, {\n \"id\": \"1439\",\n \"title\": \"Berlin\",\n \"variable\": \"2\",\n \"other\": \"0\",\n \"order\": \"2\"\n }, {\n \"id\": \"1440\",\n \"title\": \"London\",\n \"variable\": \"3\",\n \"other\": \"0\",\n \"order\": \"3\"\n }, {\n \"id\": \"1445\",\n \"title\": \"Other:\",\n \"variable\": \"4\",\n \"other\": \"1\",\n \"order\": \"4\"\n }]\n }, {\n \"id\": \"488\",\n \"type\": \"Multiple answer\",\n \"type_code\": \"2\",\n \"title\": \"Country\",\n \"info\": \"Multiple answers possible\",\n \"variable\": \"Q2\",\n \"page_id\": \"134\",\n \"page_title\": \"Stran 1\",\n \"reminder\": \"0\",\n \"orientation\": \"1\",\n \"order\": \"2\",\n \"params\": [],\n \"options\": [{\n \"id\": \"1441\",\n \"title\": \"Slovenia\",\n \"variable\": \"Q2a\",\n \"other\": \"0\",\n \"order\": \"1\"\n }, {\n \"id\": \"1442\",\n \"title\": \"Germany\",\n \"variable\": \"Q2b\",\n \"other\": \"0\",\n \"order\": \"2\"\n }, {\n \"id\": \"1443\",\n \"title\": \"UK\",\n \"variable\": \"Q2c\",\n \"other\": \"0\",\n \"order\": \"3\"\n }, {\n \"id\": \"1446\",\n \"title\": \"Other:\",\n \"variable\": \"Q2d\",\n \"other\": \"1\",\n \"order\": \"4\"\n }]\n }, {\n \"id\": \"489\",\n \"type\": \"Text input\",\n \"type_code\": \"21\",\n \"title\": \"Write a name\",\n \"info\": \"\",\n \"variable\": \"Q3\",\n \"page_id\": \"135\",\n \"page_title\": \"Page 2\",\n \"reminder\": \"0\",\n \"orientation\": \"1\",\n \"order\": \"1\",\n \"params\": {\n \"taWidth\": \"-1\",\n \"taSize\": \"1\",\n \"captcha\": \"0\",\n \"emailVerify\": \"0\",\n \"prevAnswers\": \"0\",\n \"disabled_vprasanje\": \"0\"\n },\n \"options\": [{\n \"id\": \"1444\",\n \"title\": \"Input text\",\n \"variable\": \"Q3a\",\n \"other\": \"0\",\n \"order\": \"1\"\n }]\n }]\n }",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyInfo/survey/:id",
+ "title": "getSurveyInfo",
+ "name": "getSurveyInfo",
+ "group": "Surveys",
+ "description": "<p>Get info of survey</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "count",
+ "description": "<p>Number of surveys in list</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "link",
+ "description": "<p>Access link of survey for respondents</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "surveys",
+ "description": "<p>Array of surveys</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "active",
+ "description": "<p>Current activity of survey (1 – survey is active, 0 – survey is not active)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "block_ip",
+ "description": "<p>Blocked IP in minutes – 0 off (1440 = 24h) - if on, respondent can not access to survey again for given minutes</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_name",
+ "description": "<p>Name of editor of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_name",
+ "description": "<p>Name of author of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_time",
+ "description": "<p>Last edited</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_time",
+ "description": "<p>Created</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_first",
+ "description": "<p>First entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_last",
+ "description": "<p>Last entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "answers",
+ "description": "<p>Number of units</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "variables",
+ "description": "<p>Number of questions</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastingfrom",
+ "description": "<p>Date of start survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastinguntill",
+ "description": "<p>Date of end survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "survey_type",
+ "description": "<p>Type of survey (2-survey, 0-voting, 1-form)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": " {\"count\":1,\n \"surveys\":[\n {\"id\":\"29\",\n \"folder\":\"1\",\n \"del\":\"1\",\n \"naslov\":\"Test 111\",\n \"active\":\"1\",\n \"mobile_created\":\"0\",\n \"block_ip\":\"0\",\n \"edit_uid\":\"1045\",\n \"e_name\":\"admin\",\n \"e_surname\":\"admin\",\n \"e_email\":\"admin\",\n \"insert_uid\":\"1045\",\n \"i_name\":\"admin\",\n \"i_surname\":\"admin\",\n \"i_email\":\"admin\",\n \"e_time\":\"08.11.18 11:36\",\n \"i_time\":\"27.07.18 11:36\",\n \"v_time_first\":\"27.07.18 14:31\",\n \"v_time_last\":\"20.08.18 9:33\",\n \"answers\":\"8\",\n \"approp\":\"7\",\n \"variables\":\"12\",\n \"trajanjeod\":\"08.11.18\",\n \"trajanjedo\":\"08.02.19\",\n \"survey_type\":\"2\"}\n ],\n \"link\":\"http:\\/\\/www.1ka.si\\/a\\/109\"\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyList?limit=3",
+ "title": "getSurveyList",
+ "name": "getSurveyList",
+ "group": "Surveys",
+ "description": "<p>Get list of info of all surveys</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "Parameter": [
+ {
+ "group": "Parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "limit",
+ "description": "<p>Optional Limit of surveys to return, DESC order by time of new input (answer)</p>"
+ }
+ ]
+ }
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "Number",
+ "optional": false,
+ "field": "count",
+ "description": "<p>Number of surveys in list</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "Object[]",
+ "optional": false,
+ "field": "surveys",
+ "description": "<p>Array of surveys</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "id",
+ "description": "<p>ID of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "naslov",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "active",
+ "description": "<p>Current activity of survey (1 – survey is active, 0 – survey is not active)</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "block_ip",
+ "description": "<p>Blocked IP in minutes – 0 off (1440 = 24h) - if on, respondent can not access to survey again for given minutes</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_name",
+ "description": "<p>Name of editor of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_name",
+ "description": "<p>Name of author of survey</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "e_time",
+ "description": "<p>Last edited</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "i_time",
+ "description": "<p>Created</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_first",
+ "description": "<p>First entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "v_time_last",
+ "description": "<p>Last entry</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "answers",
+ "description": "<p>Number of units</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "variables",
+ "description": "<p>Number of questions</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastingfrom",
+ "description": "<p>Date of start survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "lastinguntill",
+ "description": "<p>Date of end survey duration</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "survey_type",
+ "description": "<p>Type of survey (2-survey, 0-voting, 1-form)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"count\":3,\n \"surveys\":[\n {\"id\":\"29\",\n \"folder\":\"1\",\n \"del\":\"1\",\n \"naslov\":\"Test 111\",\n \"active\":\"1\",\n \"mobile_created\":\"0\",\n \"block_ip\":\"0\",\n \"edit_uid\":\"1045\",\n \"e_name\":\"admin\",\n \"e_surname\":\"admin\",\n \"e_email\":\"admin\",\n \"insert_uid\":\"1045\",\n \"i_name\":\"admin\",\n \"i_surname\":\"admin\",\n \"i_email\":\"admin\",\n \"e_time\":\"08.11.18 11:36\",\n \"i_time\":\"27.07.18 11:36\",\n \"v_time_first\":\"27.07.18 14:31\",\n \"v_time_last\":\"20.08.18 9:33\",\n \"answers\":\"8\",\n \"approp\":\"7\",\n \"variables\":\"12\",\n \"trajanjeod\":\"08.11.18\",\n \"trajanjedo\":\"08.02.19\",\n \"survey_type\":\"2\"},...\n ]}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "get",
+ "url": "https://www.1ka.si/api/getSurveyResponses",
+ "title": "getSurveyResponses",
+ "name": "getSurveyResponses",
+ "group": "Surveys",
+ "description": "<p>Get list of numbers of all surveys responses (and info about activity) with keys as survey ID</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "fields": {
+ "Success 200": [
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "answers",
+ "description": "<p>Number of all responses</p>"
+ },
+ {
+ "group": "Success 200",
+ "type": "String",
+ "optional": false,
+ "field": "active",
+ "description": "<p>Is survey active right now (1-active, 0-unactive)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\n\t\"4401\": {\n\t\t\"answers\": \"1103\",\n\t\t\"active\": \"0\"\n\t},\n\t\"5012\": {\n\t\t\"answers\": \"190\",\n\t\t\"active\": \"1\"\n\t},\n\t\"5330\": {\n\t\t\"answers\": \"88\",\n\t\t\"active\": \"1\"\n\t}\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ },
+ {
+ "type": "post",
+ "url": "https://www.1ka.si/api/updateSurvey/survey/:id",
+ "title": "updateSurvey",
+ "name": "updateSurvey",
+ "group": "Surveys",
+ "description": "<p>Update basic survey properties</p>",
+ "header": {
+ "fields": {
+ "Header": [
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "identifier",
+ "description": "<p>Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)</p>"
+ },
+ {
+ "group": "Header",
+ "type": "String",
+ "optional": false,
+ "field": "token",
+ "description": "<p>SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Request-Example:",
+ "content": "{ \"identifier\": \"abcdefgh01234567\",\n \"token\": \"bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh\" }",
+ "type": "json"
+ }
+ ]
+ },
+ "parameter": {
+ "fields": {
+ "GET parameter": [
+ {
+ "group": "GET parameter",
+ "type": "Number",
+ "optional": false,
+ "field": "id",
+ "description": "<p>Id of survey</p>"
+ }
+ ],
+ "POST parameter": [
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "title",
+ "description": "<p>Title of survey</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "que_title",
+ "description": "<p>Title/text of question (only voting)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "introduction",
+ "description": "<p>Introduction text of survey or form (&quot;&quot; stands for default text)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "conclusion",
+ "description": "<p>Conclusion text of survey or form (&quot;&quot; stands for default text)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "show_intro",
+ "description": "<p>Do we show introduction (0-hide, 1-show)</p>"
+ },
+ {
+ "group": "POST parameter",
+ "type": "String",
+ "optional": true,
+ "field": "show_concl",
+ "description": "<p>Do we show conclusion (0-hide, 1-show)</p>"
+ }
+ ]
+ },
+ "examples": [
+ {
+ "title": "Post-example (survey or form): ",
+ "content": "{\n \"title\":\"A survey\",\n \"introduction\":\"\",\n \"conclusion\":\"Thank you!\",\n \"show_intro\":\"1\",\n \"show_concl\":\"1\"\n}",
+ "type": "json"
+ },
+ {
+ "title": "Post-example (voting): ",
+ "content": "{\n \"title\":\"Weekly voting\",\n \"que_title\":\"What is your vote?\"\n}",
+ "type": "json"
+ }
+ ]
+ },
+ "success": {
+ "examples": [
+ {
+ "title": "Success-Response:",
+ "content": "{\"note\":\"Survey updated\"}",
+ "type": "json"
+ }
+ ]
+ },
+ "version": "1.0.0",
+ "filename": "./class.ApiSurvey.php",
+ "groupTitle": "Surveys"
+ }
+]
diff --git a/admin/survey/api/apidoc/api_project.js b/admin/survey/api/apidoc/api_project.js
new file mode 100644
index 0000000..f50a40b
--- /dev/null
+++ b/admin/survey/api/apidoc/api_project.js
@@ -0,0 +1,19 @@
+define({
+ "name": "1KA API",
+ "version": "1.0.0",
+ "description": "",
+ "title": "1KA API",
+ "template": {
+ "withCompare": true,
+ "withGenerator": true
+ },
+ "sampleUrl": false,
+ "defaultVersion": "0.0.0",
+ "apidoc": "0.3.0",
+ "generator": {
+ "name": "apidoc",
+ "time": "2019-09-13T10:02:30.341Z",
+ "url": "http://apidocjs.com",
+ "version": "0.17.6"
+ }
+});
diff --git a/admin/survey/api/apidoc/api_project.json b/admin/survey/api/apidoc/api_project.json
new file mode 100644
index 0000000..f0c00f4
--- /dev/null
+++ b/admin/survey/api/apidoc/api_project.json
@@ -0,0 +1,19 @@
+{
+ "name": "1KA API",
+ "version": "1.0.0",
+ "description": "",
+ "title": "1KA API",
+ "template": {
+ "withCompare": true,
+ "withGenerator": true
+ },
+ "sampleUrl": false,
+ "defaultVersion": "0.0.0",
+ "apidoc": "0.3.0",
+ "generator": {
+ "name": "apidoc",
+ "time": "2019-09-13T10:02:30.341Z",
+ "url": "http://apidocjs.com",
+ "version": "0.17.6"
+ }
+}
diff --git a/admin/survey/api/apidoc/css/style.css b/admin/survey/api/apidoc/css/style.css
new file mode 100644
index 0000000..e6768ad
--- /dev/null
+++ b/admin/survey/api/apidoc/css/style.css
@@ -0,0 +1,569 @@
+/* ------------------------------------------------------------------------------------------
+ * Content
+ * ------------------------------------------------------------------------------------------ */
+body {
+ min-width: 980px;
+ max-width: 1280px;
+}
+
+body, p, a, div, th, td {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 400;
+ font-size: 16px;
+}
+
+td.code {
+ font-size: 14px;
+ font-family: "Source Code Pro", monospace;
+ font-style: normal;
+ font-weight: 400;
+}
+
+#content {
+ padding-top: 16px;
+ z-Index: -1;
+ margin-left: 270px;
+}
+
+p {
+ color: #808080;
+}
+
+h1 {
+ font-family: "Source Sans Pro Semibold", sans-serif;
+ font-weight: normal;
+ font-size: 44px;
+ line-height: 50px;
+ margin: 0 0 10px 0;
+ padding: 0;
+}
+
+h2 {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: normal;
+ font-size: 24px;
+ line-height: 40px;
+ margin: 0 0 20px 0;
+ padding: 0;
+}
+
+section {
+ border-top: 1px solid #ebebeb;
+ padding: 30px 0;
+}
+
+section h1 {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 700;
+ font-size: 32px;
+ line-height: 40px;
+ padding-bottom: 14px;
+ margin: 0 0 20px 0;
+ padding: 0;
+}
+
+article {
+ padding: 14px 0 30px 0;
+}
+
+article h1 {
+ font-family: "Source Sans Pro Bold", sans-serif;
+ font-weight: 600;
+ font-size: 24px;
+ line-height: 26px;
+}
+
+article h2 {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 600;
+ font-size: 18px;
+ line-height: 24px;
+ margin: 0 0 10px 0;
+}
+
+article h3 {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 600;
+ font-size: 16px;
+ line-height: 18px;
+ margin: 0 0 10px 0;
+}
+
+article h4 {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 600;
+ font-size: 14px;
+ line-height: 16px;
+ margin: 0 0 8px 0;
+}
+
+table {
+ border-collapse: collapse;
+ width: 100%;
+ margin: 0 0 20px 0;
+}
+
+th {
+ background-color: #f5f5f5;
+ text-align: left;
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 700;
+ padding: 4px 8px;
+ border: #e0e0e0 1px solid;
+}
+
+td {
+ vertical-align: top;
+ padding: 10px 8px 0 8px;
+ border: #e0e0e0 1px solid;
+}
+
+#generator .content {
+ color: #b0b0b0;
+ border-top: 1px solid #ebebeb;
+ padding: 10px 0;
+}
+
+.label-optional {
+ float: right;
+ background-color: grey;
+ margin-top: 4px;
+}
+
+.open-left {
+ right: 0;
+ left: auto;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * apidoc - intro
+ * ------------------------------------------------------------------------------------------ */
+
+#apidoc .apidoc {
+ border-top: 1px solid #ebebeb;
+ padding: 30px 0;
+}
+
+#apidoc h1 {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 700;
+ font-size: 32px;
+ line-height: 40px;
+ padding-bottom: 14px;
+ margin: 0 0 20px 0;
+ padding: 0;
+}
+
+#apidoc h2 {
+ font-family: "Source Sans Pro Bold", sans-serif;
+ font-weight: 600;
+ font-size: 22px;
+ line-height: 26px;
+ padding-top: 14px;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * pre / code
+ * ------------------------------------------------------------------------------------------ */
+pre {
+ background-color: #292b36;
+ color: #ffffff;
+ padding: 10px;
+ border-radius: 6px;
+ position: relative;
+ margin: 10px 0 20px 0;
+ overflow-x: auto;
+}
+
+pre.prettyprint {
+ width: 100%;
+}
+
+code.language-text {
+ word-wrap: break-word;
+}
+
+pre.language-json {
+ overflow: auto;
+}
+
+pre.language-html {
+ margin: 0 0 20px 0;
+}
+
+.type {
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 600;
+ font-size: 15px;
+ display: inline-block;
+ margin: 0 0 5px 0;
+ padding: 4px 5px;
+ border-radius: 6px;
+ text-transform: uppercase;
+ background-color: #3387CC;
+ color: #ffffff;
+}
+
+.type__get {
+ background-color: green;
+}
+
+.type__put {
+ background-color: #e5c500;
+}
+
+.type__post {
+ background-color: #4070ec;
+}
+
+.type__delete {
+ background-color: #ed0039;
+}
+
+pre.language-api .str {
+ color: #ffffff;
+}
+
+pre.language-api .pln,
+pre.language-api .pun {
+ color: #65B042;
+}
+
+pre code {
+ display: block;
+ font-size: 14px;
+ font-family: "Source Code Pro", monospace;
+ font-style: normal;
+ font-weight: 400;
+ word-wrap: normal;
+ white-space: pre;
+}
+
+pre code.sample-request-response-json {
+ white-space: pre-wrap;
+ max-height: 500px;
+ overflow: auto;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * Sidenav
+ * ------------------------------------------------------------------------------------------ */
+.sidenav {
+ width: 228px;
+ margin: 0;
+ padding: 0 20px 20px 20px;
+ position: fixed;
+ top: 50px;
+ left: 0;
+ bottom: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ background-color: #f5f5f5;
+ z-index: 10;
+}
+
+.sidenav > li > a {
+ display: block;
+ width: 192px;
+ margin: 0;
+ padding: 2px 11px;
+ border: 0;
+ border-left: transparent 4px solid;
+ border-right: transparent 4px solid;
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 400;
+ font-size: 14px;
+}
+
+.sidenav > li.nav-header {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+.sidenav > li.nav-header > a {
+ padding: 5px 15px;
+ border: 1px solid #e5e5e5;
+ width: 190px;
+ font-family: "Source Sans Pro", sans-serif;
+ font-weight: 700;
+ font-size: 16px;
+ background-color: #ffffff;
+}
+
+.sidenav > li.active > a {
+ position: relative;
+ z-index: 2;
+ background-color: #0088cc;
+ color: #ffffff;
+}
+
+.sidenav > li.has-modifications a {
+ border-right: #60d060 4px solid;
+}
+
+.sidenav > li.is-new a {
+ border-left: #e5e5e5 4px solid;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * Side nav search
+ * ------------------------------------------------------------------------------------------ */
+.sidenav-search {
+ width: 228px;
+ left: 0px;
+ position: fixed;
+ padding: 16px 20px 10px 20px;
+ background-color: #F5F5F5;
+ z-index: 11;
+}
+
+.sidenav-search .search {
+ height: 26px;
+}
+
+.search-reset {
+ position: absolute;
+ display: block;
+ cursor: pointer;
+ width: 20px;
+ height: 20px;
+ text-align: center;
+ right: 28px;
+ top: 17px;
+ background-color: #fff;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * Compare
+ * ------------------------------------------------------------------------------------------ */
+
+ins {
+ background: #60d060;
+ text-decoration: none;
+ color: #000000;
+}
+
+del {
+ background: #f05050;
+ color: #000000;
+}
+
+.label-ins {
+ background-color: #60d060;
+}
+
+.label-del {
+ background-color: #f05050;
+ text-decoration: line-through;
+}
+
+pre.ins {
+ background-color: #60d060;
+}
+
+pre.del {
+ background-color: #f05050;
+ text-decoration: line-through;
+}
+
+table.ins th,
+table.ins td {
+ background-color: #60d060;
+}
+
+table.del th,
+table.del td {
+ background-color: #f05050;
+ text-decoration: line-through;
+}
+
+tr.ins td {
+ background-color: #60d060;
+}
+
+tr.del td {
+ background-color: #f05050;
+ text-decoration: line-through;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * Spinner
+ * ------------------------------------------------------------------------------------------ */
+
+#loader {
+ position: absolute;
+ width: 100%;
+}
+
+#loader p {
+ padding-top: 80px;
+ margin-left: -4px;
+}
+
+.spinner {
+ margin: 200px auto;
+ width: 60px;
+ height: 60px;
+ position: relative;
+}
+
+.container1 > div, .container2 > div, .container3 > div {
+ width: 14px;
+ height: 14px;
+ background-color: #0088cc;
+
+ border-radius: 100%;
+ position: absolute;
+ -webkit-animation: bouncedelay 1.2s infinite ease-in-out;
+ animation: bouncedelay 1.2s infinite ease-in-out;
+ /* Prevent first frame from flickering when animation starts */
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+}
+
+.spinner .spinner-container {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+
+.container2 {
+ -webkit-transform: rotateZ(45deg);
+ transform: rotateZ(45deg);
+}
+
+.container3 {
+ -webkit-transform: rotateZ(90deg);
+ transform: rotateZ(90deg);
+}
+
+.circle1 { top: 0; left: 0; }
+.circle2 { top: 0; right: 0; }
+.circle3 { right: 0; bottom: 0; }
+.circle4 { left: 0; bottom: 0; }
+
+.container2 .circle1 {
+ -webkit-animation-delay: -1.1s;
+ animation-delay: -1.1s;
+}
+
+.container3 .circle1 {
+ -webkit-animation-delay: -1.0s;
+ animation-delay: -1.0s;
+}
+
+.container1 .circle2 {
+ -webkit-animation-delay: -0.9s;
+ animation-delay: -0.9s;
+}
+
+.container2 .circle2 {
+ -webkit-animation-delay: -0.8s;
+ animation-delay: -0.8s;
+}
+
+.container3 .circle2 {
+ -webkit-animation-delay: -0.7s;
+ animation-delay: -0.7s;
+}
+
+.container1 .circle3 {
+ -webkit-animation-delay: -0.6s;
+ animation-delay: -0.6s;
+}
+
+.container2 .circle3 {
+ -webkit-animation-delay: -0.5s;
+ animation-delay: -0.5s;
+}
+
+.container3 .circle3 {
+ -webkit-animation-delay: -0.4s;
+ animation-delay: -0.4s;
+}
+
+.container1 .circle4 {
+ -webkit-animation-delay: -0.3s;
+ animation-delay: -0.3s;
+}
+
+.container2 .circle4 {
+ -webkit-animation-delay: -0.2s;
+ animation-delay: -0.2s;
+}
+
+.container3 .circle4 {
+ -webkit-animation-delay: -0.1s;
+ animation-delay: -0.1s;
+}
+
+@-webkit-keyframes bouncedelay {
+ 0%, 80%, 100% { -webkit-transform: scale(0.0) }
+ 40% { -webkit-transform: scale(1.0) }
+}
+
+@keyframes bouncedelay {
+ 0%, 80%, 100% {
+ transform: scale(0.0);
+ -webkit-transform: scale(0.0);
+ } 40% {
+ transform: scale(1.0);
+ -webkit-transform: scale(1.0);
+ }
+}
+
+/* ------------------------------------------------------------------------------------------
+ * Tabs
+ * ------------------------------------------------------------------------------------------ */
+ul.nav-tabs {
+ margin: 0;
+}
+
+p.deprecated span{
+ color: #ff0000;
+ font-weight: bold;
+ text-decoration: underline;
+}
+
+/* ------------------------------------------------------------------------------------------
+ * Print
+ * ------------------------------------------------------------------------------------------ */
+
+@media print {
+
+ #sidenav,
+ #version,
+ #versions,
+ section .version,
+ section .versions {
+ display: none;
+ }
+
+ #content {
+ margin-left: 0;
+ }
+
+ a {
+ text-decoration: none;
+ color: inherit;
+ }
+
+ a:after {
+ content: " [" attr(href) "] ";
+ }
+
+ p {
+ color: #000000
+ }
+
+ pre {
+ background-color: #ffffff;
+ color: #000000;
+ padding: 10px;
+ border: #808080 1px solid;
+ border-radius: 6px;
+ position: relative;
+ margin: 10px 0 20px 0;
+ }
+
+} /* /@media print */
diff --git a/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.eot b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..b93a495
--- /dev/null
+++ b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.svg b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..8376c0f
--- /dev/null
+++ b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode="&#x2000;" horiz-adv-x="650" />
+<glyph unicode="&#x2001;" horiz-adv-x="1300" />
+<glyph unicode="&#x2002;" horiz-adv-x="650" />
+<glyph unicode="&#x2003;" horiz-adv-x="1300" />
+<glyph unicode="&#x2004;" horiz-adv-x="433" />
+<glyph unicode="&#x2005;" horiz-adv-x="325" />
+<glyph unicode="&#x2006;" horiz-adv-x="216" />
+<glyph unicode="&#x2007;" horiz-adv-x="216" />
+<glyph unicode="&#x2008;" horiz-adv-x="162" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="325" />
+<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
+</font>
+</defs></svg> \ No newline at end of file
diff --git a/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.ttf b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..1413fc6
--- /dev/null
+++ b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..9e61285
--- /dev/null
+++ b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff2 b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff2
new file mode 100644
index 0000000..64539b5
--- /dev/null
+++ b/admin/survey/api/apidoc/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/admin/survey/api/apidoc/img/favicon.ico b/admin/survey/api/apidoc/img/favicon.ico
new file mode 100644
index 0000000..c307a04
--- /dev/null
+++ b/admin/survey/api/apidoc/img/favicon.ico
Binary files differ
diff --git a/admin/survey/api/apidoc/index.html b/admin/survey/api/apidoc/index.html
new file mode 100644
index 0000000..5f04ded
--- /dev/null
+++ b/admin/survey/api/apidoc/index.html
@@ -0,0 +1,669 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <title>Loading...</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <link href="vendor/bootstrap.min.css" rel="stylesheet" media="screen">
+ <link href="vendor/prettify.css" rel="stylesheet" media="screen">
+ <link href="css/style.css" rel="stylesheet" media="screen, print">
+ <link href="img/favicon.ico" rel="icon" type="image/x-icon">
+ <script src="vendor/polyfill.js"></script>
+</head>
+<body>
+
+<script id="template-sidenav" type="text/x-handlebars-template">
+<nav id="scrollingNav">
+ <div class="sidenav-search">
+ <input class="form-control search" type="text" placeholder="{{__ "Filter..."}}">
+ <span class="search-reset">x</span>
+ </div>
+ <ul class="sidenav nav nav-list list">
+ {{#each nav}}
+ {{#if title}}
+ {{#if isHeader}}
+ {{#if isFixed}}
+ <li class="nav-fixed nav-header navbar-btn nav-list-item" data-group="{{group}}"><a href="#api-{{group}}">{{underscoreToSpace title}}</a></li>
+ {{else}}
+ <li class="nav-header nav-list-item" data-group="{{group}}"><a href="#api-{{group}}">{{underscoreToSpace title}}</a></li>
+ {{/if}}
+ {{else}}
+ <li class="{{#if hidden}}hide {{/if}}" data-group="{{group}}" data-name="{{name}}" data-version="{{version}}">
+ <a href="#api-{{group}}-{{name}}" class="nav-list-item">{{title}}</a>
+ </li>
+ {{/if}}
+ {{/if}}
+ {{/each}}
+ </ul>
+</nav>
+</script>
+
+<script id="template-project" type="text/x-handlebars-template">
+ <div class="pull-left">
+ <h1>{{name}}</h1>
+ {{#if description}}<h2>{{{nl2br description}}}</h2>{{/if}}
+ </div>
+ {{#if template.withCompare}}
+ <div class="pull-right">
+ <div class="btn-group">
+ <button id="version" class="btn btn-lg btn-default dropdown-toggle" data-toggle="dropdown">
+ <strong>{{version}}</strong>&nbsp;<span class="caret"></span>
+ </button>
+ <ul id="versions" class="dropdown-menu open-left">
+ <li><a id="compareAllWithPredecessor" href="#">{{__ "Compare all with predecessor"}}</a></li>
+ <li class="divider"></li>
+ <li class="disabled"><a href="#">{{__ "show up to version:"}}</a></li>
+ {{#each versions}}
+ <li class="version"><a href="#">{{this}}</a></li>
+ {{/each}}
+ </ul>
+ </div>
+ </div>
+ {{/if}}
+ <div class="clearfix"></div>
+</script>
+
+<script id="template-header" type="text/x-handlebars-template">
+ {{#if content}}
+ <div id="api-_">{{{content}}}</div>
+ {{/if}}
+</script>
+
+<script id="template-footer" type="text/x-handlebars-template">
+ {{#if content}}
+ <div id="api-_footer">{{{content}}}</div>
+ {{/if}}
+</script>
+
+<script id="template-generator" type="text/x-handlebars-template">
+ {{#if template.withGenerator}}
+ {{#if generator}}
+ <div class="content">
+ {{__ "Generated with"}} <a href="{{{generator.url}}}">{{{generator.name}}}</a> {{{generator.version}}} - {{{generator.time}}}
+ </div>
+ {{/if}}
+ {{/if}}
+</script>
+
+<script id="template-sections" type="text/x-handlebars-template">
+ <section id="api-{{group}}">
+ <h1>{{underscoreToSpace title}}</h1>
+ {{#if description}}
+ <p>{{{nl2br description}}}</p>
+ {{/if}}
+ {{#each articles}}
+ <div id="api-{{group}}-{{name}}">
+ {{{article}}}
+ </div>
+ {{/each}}
+ </section>
+</script>
+
+<script id="template-article" type="text/x-handlebars-template">
+ <article id="api-{{article.group}}-{{article.name}}-{{article.version}}" {{#if hidden}}class="hide"{{/if}} data-group="{{article.group}}" data-name="{{article.name}}" data-version="{{article.version}}">
+ <div class="pull-left">
+ <h1>{{article.groupTitle}}{{#if article.title}} - {{article.title}}{{/if}}</h1>
+ </div>
+ {{#if template.withCompare}}
+ <div class="pull-right">
+ <div class="btn-group">
+ <button class="version btn btn-default dropdown-toggle" data-toggle="dropdown">
+ <strong>{{article.version}}</strong>&nbsp;<span class="caret"></span>
+ </button>
+ <ul class="versions dropdown-menu open-left">
+ <li class="disabled"><a href="#">{{__ "compare changes to:"}}</a></li>
+ {{#each versions}}
+ <li class="version"><a href="#">{{this}}</a></li>
+ {{/each}}
+ </ul>
+ </div>
+ </div>
+ {{/if}}
+ <div class="clearfix"></div>
+
+ {{#if article.deprecated}}
+ <p class="deprecated"><span>{{__ "DEPRECATED"}}</span>
+ {{{markdown article.deprecated.content}}}
+ </p>
+ {{/if}}
+
+ {{#if article.description}}
+ <p>{{{nl2br article.description}}}</p>
+ {{/if}}
+ <span class="type type__{{toLowerCase article.type}}">{{toLowerCase article.type}}</span>
+ <pre class="prettyprint language-html" data-type="{{toLowerCase article.type}}"><code>{{article.url}}</code></pre>
+
+ {{#if article.permission}}
+ <p>
+ {{__ "Permission:"}}
+ {{#each article.permission}}
+ {{name}}
+ {{#if title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{title}}" data-content="{{nl2br description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{/if}}
+ {{/each}}
+ </p>
+ {{/if}}
+
+ {{#if_gt article.examples.length compare=0}}
+ <ul class="nav nav-tabs nav-tabs-examples">
+ {{#each article.examples}}
+ <li{{#if_eq @index compare=0}} class="active"{{/if_eq}}>
+ <a href="#examples-{{../id}}-{{@index}}">{{title}}</a>
+ </li>
+ {{/each}}
+ </ul>
+
+ <div class="tab-content">
+ {{#each article.examples}}
+ <div class="tab-pane{{#if_eq @index compare=0}} active{{/if_eq}}" id="examples-{{../id}}-{{@index}}">
+ <pre class="prettyprint language-{{type}}" data-type="{{type}}"><code>{{content}}</code></pre>
+ </div>
+ {{/each}}
+ </div>
+ {{/if_gt}}
+
+ {{subTemplate "article-param-block" params=article.header _hasType=_hasTypeInHeaderFields section="header"}}
+ {{subTemplate "article-param-block" params=article.parameter _hasType=_hasTypeInParameterFields section="parameter"}}
+ {{subTemplate "article-param-block" params=article.success _hasType=_hasTypeInSuccessFields section="success"}}
+ {{subTemplate "article-param-block" params=article.error _col1="Name" _hasType=_hasTypeInErrorFields section="error"}}
+
+ {{subTemplate "article-sample-request" article=article id=id}}
+ </article>
+</script>
+
+<script id="template-article-param-block" type="text/x-handlebars-template">
+ {{#if params}}
+ {{#each params.fields}}
+ <h2>{{__ @key}}</h2>
+ <table>
+ <thead>
+ <tr>
+ <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
+ {{#if ../_hasType}}<th style="width: 10%">{{__ "Type"}}</th>{{/if}}
+ <th style="width: {{#if ../_hasType}}60%{{else}}70%{{/if}}">{{__ "Description"}}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{#each this}}
+ <tr>
+ <td class="code">{{{splitFill field "." "&nbsp;&nbsp;"}}}{{#if optional}} <span class="label label-optional">{{__ "optional"}}</span>{{/if}}</td>
+ {{#if ../../_hasType}}
+ <td>
+ {{{type}}}
+ </td>
+ {{/if}}
+ <td>
+ {{{nl2br description}}}
+ {{#if defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{defaultValue}}}</code></p>{{/if}}
+ {{#if size}}<p class="type-size">{{__ "Size range:"}} <code>{{{size}}}</code></p>{{/if}}
+ {{#if allowedValues}}<p class="type-size">{{__ "Allowed values:"}}
+ {{#each allowedValues}}
+ <code>{{{this}}}</code>{{#unless @last}}, {{/unless}}
+ {{/each}}
+ </p>
+ {{/if}}
+ </td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+ {{/each}}
+ {{#if_gt params.examples.length compare=0}}
+ <ul class="nav nav-tabs nav-tabs-examples">
+ {{#each params.examples}}
+ <li{{#if_eq @index compare=0}} class="active"{{/if_eq}}>
+ <a href="#{{../section}}-examples-{{../id}}-{{@index}}">{{title}}</a>
+ </li>
+ {{/each}}
+ </ul>
+
+ <div class="tab-content">
+ {{#each params.examples}}
+ <div class="tab-pane{{#if_eq @index compare=0}} active{{/if_eq}}" id="{{../section}}-examples-{{../id}}-{{@index}}">
+ <pre class="prettyprint language-{{type}}" data-type="{{type}}"><code>{{reformat content type}}</code></pre>
+ </div>
+ {{/each}}
+ </div>
+ {{/if_gt}}
+ {{/if}}
+</script>
+
+<script id="template-article-sample-request" type="text/x-handlebars-template">
+ {{#if article.sampleRequest}}
+ <h2>{{__ "Send a Sample Request"}}</h2>
+ <form class="form-horizontal">
+ <fieldset>
+ <div class="form-group">
+ <label class="col-md-3 control-label" for="{{../id}}-sample-request-url"></label>
+ <div class="input-group">
+ <input id="{{../id}}-sample-request-url" type="text" class="form-control sample-request-url" value="{{article.sampleRequest.0.url}}" />
+ <span class="input-group-addon">{{__ "url"}}</span>
+ </div>
+ </div>
+
+ {{#if article.header}}
+ {{#if article.header.fields}}
+ <h3>{{__ "Headers"}}</h3>
+ {{#each article.header.fields}}
+ <h4><input type="radio" data-sample-request-header-group-id="sample-request-header-{{@index}}" name="{{../id}}-sample-request-header" value="{{@index}}" class="sample-request-header sample-request-switch" {{#if_eq @index compare=0}} checked{{/if_eq}} />{{@key}}</h4>
+ <div class="{{../id}}-sample-request-header-fields{{#if_gt @index compare=0}} hide{{/if_gt}}">
+ {{#each this}}
+ <div class="form-group">
+ <label class="col-md-3 control-label" for="sample-request-header-field-{{field}}">{{field}}</label>
+ <div class="input-group">
+ <input type="text" placeholder="{{field}}" id="sample-request-header-field-{{field}}" class="form-control sample-request-header" data-sample-request-header-name="{{field}}" data-sample-request-header-group="sample-request-header-{{@../index}}">
+ <span class="input-group-addon">{{{type}}}</span>
+ </div>
+ </div>
+ {{/each}}
+ </div>
+ {{/each}}
+ {{/if}}
+ {{/if}}
+
+ {{#if article.parameter}}
+ {{#if article.parameter.fields}}
+ <h3>{{__ "Parameters"}}</h3>
+ {{#each article.parameter.fields}}
+ <h4><input type="radio" data-sample-request-param-group-id="sample-request-param-{{@index}}" name="{{../id}}-sample-request-param" value="{{@index}}" class="sample-request-param sample-request-switch" {{#if_eq @index compare=0}} checked{{/if_eq}} />{{@key}}</h4>
+ <div class="form-group {{../id}}-sample-request-param-fields{{#if_gt @index compare=0}} hide{{/if_gt}}">
+ {{#each this}}
+ <label class="col-md-3 control-label" for="sample-request-param-field-{{field}}">{{field}}</label>
+ <div class="input-group">
+ <input id="sample-request-param-field-{{field}}" type="text" placeholder="{{field}}" class="form-control sample-request-param" data-sample-request-param-name="{{field}}" data-sample-request-param-group="sample-request-param-{{@../index}}" {{#if optional}}data-sample-request-param-optional="true"{{/if}}>
+ <div class="input-group-addon">{{{type}}}</div>
+ </div>
+ {{/each}}
+ </div>
+ {{/each}}
+ {{/if}}
+ {{/if}}
+
+ <div class="form-group">
+ <div class="controls pull-right">
+ <button class="btn btn-primary sample-request-send" data-sample-request-type="{{article.type}}">{{__ "Send"}}</button>
+ </div>
+ </div>
+ <div class="form-group sample-request-response" style="display: none;">
+ <h3>
+ {{__ "Response"}}
+ <button class="btn btn-default btn-xs pull-right sample-request-clear">X</button>
+ </h3>
+ <pre class="prettyprint language-json" data-type="json"><code class="sample-request-response-json"></code></pre>
+ </div>
+ </fieldset>
+ </form>
+ {{/if}}
+</script>
+
+<script id="template-compare-article" type="text/x-handlebars-template">
+ <article id="api-{{article.group}}-{{article.name}}-{{article.version}}" {{#if hidden}}class="hide"{{/if}} data-group="{{article.group}}" data-name="{{article.name}}" data-version="{{article.version}}" data-compare-version="{{compare.version}}">
+ <div class="pull-left">
+ <h1>{{underscoreToSpace article.group}} - {{{showDiff article.title compare.title}}}</h1>
+ </div>
+
+ <div class="pull-right">
+ <div class="btn-group">
+ <button class="btn btn-success" disabled>
+ <strong>{{article.version}}</strong> {{__ "compared to"}}
+ </button>
+ <button class="version btn btn-danger dropdown-toggle" data-toggle="dropdown">
+ <strong>{{compare.version}}</strong>&nbsp;<span class="caret"></span>
+ </button>
+ <ul class="versions dropdown-menu open-left">
+ <li class="disabled"><a href="#">{{__ "compare changes to:"}}</a></li>
+ <li class="divider"></li>
+ {{#each versions}}
+ <li class="version"><a href="#">{{this}}</a></li>
+ {{/each}}
+ </ul>
+ </div>
+ </div>
+ <div class="clearfix"></div>
+
+ {{#if article.description}}
+ <p>{{{showDiff article.description compare.description "nl2br"}}}</p>
+ {{else}}
+ {{#if compare.description}}
+ <p>{{{showDiff "" compare.description "nl2br"}}}</p>
+ {{/if}}
+ {{/if}}
+
+ <pre class="prettyprint language-html" data-type="{{toLowerCase article.type}}"><code>{{{showDiff article.url compare.url}}}</code></pre>
+
+ {{subTemplate "article-compare-permission" article=article compare=compare}}
+
+ <ul class="nav nav-tabs nav-tabs-examples">
+ {{#each_compare_title article.examples compare.examples}}
+ {{#if typeSame}}
+ <li{{#if_eq index compare=0}} class="active"{{/if_eq}}>
+ <a href="#compare-examples-{{../../article.id}}-{{index}}">{{{showDiff source.title compare.title}}}</a>
+ </li>
+ {{/if}}
+
+ {{#if typeIns}}
+ <li{{#if_eq index compare=0}} class="active"{{/if_eq}}>
+ <a href="#compare-examples-{{../../article.id}}-{{index}}"><ins>{{{source.title}}}</ins></a>
+ </li>
+ {{/if}}
+
+ {{#if typeDel}}
+ <li{{#if_eq index compare=0}} class="active"{{/if_eq}}>
+ <a href="#compare-examples-{{../../article.id}}-{{index}}"><del>{{{compare.title}}}</del></a>
+ </li>
+ {{/if}}
+ {{/each_compare_title}}
+ </ul>
+
+ <div class="tab-content">
+ {{#each_compare_title article.examples compare.examples}}
+
+ {{#if typeSame}}
+ <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="compare-examples-{{../../article.id}}-{{index}}">
+ <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{showDiff source.content compare.content}}}</code></pre>
+ </div>
+ {{/if}}
+
+ {{#if typeIns}}
+ <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="compare-examples-{{../../article.id}}-{{index}}">
+ <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{source.content}}}</code></pre>
+ </div>
+ {{/if}}
+
+ {{#if typeDel}}
+ <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="compare-examples-{{../../article.id}}-{{index}}">
+ <pre class="prettyprint language-{{source.type}}" data-type="{{compare.type}}"><code>{{{compare.content}}}</code></pre>
+ </div>
+ {{/if}}
+
+ {{/each_compare_title}}
+ </div>
+
+ {{subTemplate "article-compare-param-block" source=article.parameter compare=compare.parameter _hasType=_hasTypeInParameterFields section="parameter"}}
+ {{subTemplate "article-compare-param-block" source=article.success compare=compare.success _hasType=_hasTypeInSuccessFields section="success"}}
+ {{subTemplate "article-compare-param-block" source=article.error compare=compare.error _col1="Name" _hasType=_hasTypeInErrorFields section="error"}}
+
+ {{subTemplate "article-sample-request" article=article id=id}}
+
+ </article>
+</script>
+
+<script id="template-article-compare-permission" type="text/x-handlebars-template">
+ <p>
+ {{__ "Permission:"}}
+ {{#each_compare_list_field article.permission compare.permission field="name"}}
+ {{#if source}}
+ {{#if typeSame}}
+ {{source.name}}
+ {{#if source.title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{source.title}}" data-content="{{nl2br source.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{#unless _last}}, {{/unless}}
+ {{/if}}
+ {{/if}}
+
+ {{#if typeIns}}
+ <ins>{{source.name}}</ins>
+ {{#if source.title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{source.title}}" data-content="{{nl2br source.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{#unless _last}}, {{/unless}}
+ {{/if}}
+ {{/if}}
+
+ {{#if typeDel}}
+ <del>{{source.name}}</del>
+ {{#if source.title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{source.title}}" data-content="{{nl2br source.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{#unless _last}}, {{/unless}}
+ {{/if}}
+ {{/if}}
+ {{else}}
+ {{#if typeSame}}
+ {{compare.name}}
+ {{#if compare.title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{compare.title}}" data-content="{{nl2br compare.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{#unless _last}}, {{/unless}}
+ {{/if}}
+ {{/if}}
+
+ {{#if typeIns}}
+ <ins>{{compare.name}}</ins>
+ {{#if compare.title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{compare.title}}" data-content="{{nl2br compare.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{#unless _last}}, {{/unless}}
+ {{/if}}
+ {{/if}}
+
+ {{#if typeDel}}
+ <del>{{compare.name}}</del>
+ {{#if compare.title}}
+ <button type="button" class="btn btn-info btn-xs" data-title="{{compare.title}}" data-content="{{nl2br compare.description}}" data-html="true" data-toggle="popover" data-placement="right" data-trigger="hover">
+ <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
+ </button>
+ {{#unless _last}}, {{/unless}}
+ {{/if}}
+ {{/if}}
+ {{/if}}
+ {{/each_compare_list_field}}
+ </p>
+</script>
+
+<script id="template-article-compare-param-block" type="text/x-handlebars-template">
+ {{#if source}}
+ {{#each_compare_keys source.fields compare.fields}}
+ {{#if typeSame}}
+ <h2>{{__ source.key}}</h2>
+ <table>
+ <thead>
+ <tr>
+ <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
+ {{#if ../_hasType}}<th style="width: 10%">{{__ "Type"}}</th>{{/if}}
+ <th style="width: {{#if ../_hasType}}60%{{else}}70%{{/if}}">{{__ "Description"}}</th>
+ </tr>
+ </thead>
+ {{subTemplate "article-compare-param-block-body" source=source.value compare=compare.value _hasType=../_hasType}}
+ </table>
+ {{/if}}
+
+ {{#if typeIns}}
+ <h2><ins>{{__ source.key}}</ins></h2>
+ <table class="ins">
+ <thead>
+ <tr>
+ <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
+ {{#if ../_hasType}}<th style="width: 10%">{{__ "Type"}}</th>{{/if}}
+ <th style="width: {{#if ../_hasType}}60%{{else}}70%{{/if}}">{{__ "Description"}}</th>
+ </tr>
+ </thead>
+ {{subTemplate "article-compare-param-block-body" source=source.value compare=source.value _hasType=../_hasType}}
+ </table>
+ {{/if}}
+
+ {{#if typeDel}}
+ <h2><del>{{__ compare.key}}</del></h2>
+ <table class="del">
+ <thead>
+ <tr>
+ <th style="width: 30%">{{#if ../_col1}}{{__ ../_col1}}{{else}}{{__ "Field"}}{{/if}}</th>
+ {{#if ../_hasType}}<th style="width: 10%">{{__ "Type"}}</th>{{/if}}
+ <th style="width: {{#if ../_hasType}}60%{{else}}70%{{/if}}">{{__ "Description"}}</th>
+ </tr>
+ </thead>
+ {{subTemplate "article-compare-param-block-body" source=compare.value compare=compare.value _hasType=../_hasType}}
+ </table>
+ {{/if}}
+ {{/each_compare_keys}}
+
+ {{#if source.examples}}
+ <ul class="nav nav-tabs nav-tabs-examples">
+ {{#each_compare_title source.examples compare.examples}}
+ {{#if typeSame}}
+ <li{{#if_eq index compare=0}} class="active"{{/if_eq}}>
+ <a href="#{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">{{{showDiff source.title compare.title}}}</a>
+ </li>
+ {{/if}}
+
+ {{#if typeIns}}
+ <li{{#if_eq index compare=0}} class="active"{{/if_eq}}>
+ <a href="#{{../../section}}-compare-examples-{{../../article.id}}-{{index}}"><ins>{{{source.title}}}</ins></a>
+ </li>
+ {{/if}}
+
+ {{#if typeDel}}
+ <li{{#if_eq index compare=0}} class="active"{{/if_eq}}>
+ <a href="#{{../../section}}-compare-examples-{{../../article.id}}-{{index}}"><del>{{{compare.title}}}</del></a>
+ </li>
+ {{/if}}
+ {{/each_compare_title}}
+ </ul>
+
+ <div class="tab-content">
+ {{#each_compare_title source.examples compare.examples}}
+
+ {{#if typeSame}}
+ <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">
+ <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{showDiff source.content compare.content}}}</code></pre>
+ </div>
+ {{/if}}
+
+ {{#if typeIns}}
+ <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">
+ <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{source.content}}}</code></pre>
+ </div>
+ {{/if}}
+
+ {{#if typeDel}}
+ <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">
+ <pre class="prettyprint language-{{source.type}}" data-type="{{compare.type}}"><code>{{{compare.content}}}</code></pre>
+ </div>
+ {{/if}}
+ {{/each_compare_title}}
+ </div>
+ {{/if}}
+ {{/if}}
+</script>
+
+<script id="template-article-compare-param-block-body" type="text/x-handlebars-template">
+ <tbody>
+ {{#each_compare_field source compare}}
+ {{#if typeSame}}
+ <tr>
+ <td class="code">
+ {{{splitFill source.field "." "&nbsp;&nbsp;"}}}
+ {{#if source.optional}}
+ {{#if compare.optional}} <span class="label label-optional">{{__ "optional"}}</span>
+ {{else}} <span class="label label-optional label-ins">{{__ "optional"}}</span>
+ {{/if}}
+ {{else}}
+ {{#if compare.optional}} <span class="label label-optional label-del">{{__ "optional"}}</span>{{/if}}
+ {{/if}}
+ </td>
+
+ {{#if source.type}}
+ {{#if compare.type}}
+ <td>{{{showDiff source.type compare.type}}}</td>
+ {{else}}
+ <td>{{{source.type}}}</td>
+ {{/if}}
+ {{else}}
+ {{#if compare.type}}
+ <td>{{{compare.type}}}</td>
+ {{else}}
+ {{#if ../../../../_hasType}}<td></td>{{/if}}
+ {{/if}}
+ {{/if}}
+ <td>
+ {{{showDiff source.description compare.description "nl2br"}}}
+ {{#if source.defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{showDiff source.defaultValue compare.defaultValue}}}</code><p>{{/if}}
+ </td>
+ </tr>
+ {{/if}}
+
+ {{#if typeIns}}
+ <tr class="ins">
+ <td class="code">
+ {{{splitFill source.field "." "&nbsp;&nbsp;"}}}
+ {{#if source.optional}} <span class="label label-optional label-ins">{{__ "optional"}}</span>{{/if}}
+ </td>
+
+ {{#if source.type}}
+ <td>{{{source.type}}}</td>
+ {{else}}
+ {{{typRowTd}}}
+ {{/if}}
+
+ <td>
+ {{{nl2br source.description}}}
+ {{#if source.defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{source.defaultValue}}}</code><p>{{/if}}
+ </td>
+ </tr>
+ {{/if}}
+
+ {{#if typeDel}}
+ <tr class="del">
+ <td class="code">
+ {{{splitFill compare.field "." "&nbsp;&nbsp;"}}}
+ {{#if compare.optional}} <span class="label label-optional label-del">{{__ "optional"}}</span>{{/if}}
+ </td>
+
+ {{#if compare.type}}
+ <td>{{{compare.type}}}</td>
+ {{else}}
+ {{{typRowTd}}}
+ {{/if}}
+
+ <td>
+ {{{nl2br compare.description}}}
+ {{#if compare.defaultValue}}<p class="default-value">{{__ "Default value:"}} <code>{{{compare.defaultValue}}}</code><p>{{/if}}
+ </td>
+ </tr>
+ {{/if}}
+
+ {{/each_compare_field}}
+ </tbody>
+</script>
+
+<div class="container-fluid">
+ <div class="row">
+ <div id="sidenav" class="span2"></div>
+ <div id="content">
+ <div id="project"></div>
+ <div id="header"></div>
+ <div id="sections"></div>
+ <div id="footer"></div>
+ <div id="generator"></div>
+ </div>
+ </div>
+</div>
+
+<div id="loader">
+ <div class="spinner">
+ <div class="spinner-container container1">
+ <div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div>
+ </div>
+ <div class="spinner-container container2">
+ <div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div>
+ </div>
+ <div class="spinner-container container3">
+ <div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div>
+ </div>
+ <p>Loading...</p>
+ </div>
+</div>
+
+<script data-main="main.js" src="vendor/require.min.js"></script>
+</body>
+</html>
diff --git a/admin/survey/api/apidoc/locales/ca.js b/admin/survey/api/apidoc/locales/ca.js
new file mode 100644
index 0000000..b0a80fe
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/ca.js
@@ -0,0 +1,25 @@
+define({
+ ca: {
+ 'Allowed values:' : 'Valors permesos:',
+ 'Compare all with predecessor': 'Comparar tot amb versió anterior',
+ 'compare changes to:' : 'comparar canvis amb:',
+ 'compared to' : 'comparat amb',
+ 'Default value:' : 'Valor per defecte:',
+ 'Description' : 'Descripció',
+ 'Field' : 'Camp',
+ 'General' : 'General',
+ 'Generated with' : 'Generat amb',
+ 'Name' : 'Nom',
+ 'No response values.' : 'Sense valors en la resposta.',
+ 'optional' : 'opcional',
+ 'Parameter' : 'Paràmetre',
+ 'Permission:' : 'Permisos:',
+ 'Response' : 'Resposta',
+ 'Send' : 'Enviar',
+ 'Send a Sample Request' : 'Enviar una petició d\'exemple',
+ 'show up to version:' : 'mostrar versió:',
+ 'Size range:' : 'Tamany de rang:',
+ 'Type' : 'Tipus',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/cs.js b/admin/survey/api/apidoc/locales/cs.js
new file mode 100644
index 0000000..1a05ff8
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/cs.js
@@ -0,0 +1,25 @@
+define({
+ cs: {
+ 'Allowed values:' : 'Povolené hodnoty:',
+ 'Compare all with predecessor': 'Porovnat vše s předchozími verzemi',
+ 'compare changes to:' : 'porovnat změny s:',
+ 'compared to' : 'porovnat s',
+ 'Default value:' : 'Výchozí hodnota:',
+ 'Description' : 'Popis',
+ 'Field' : 'Pole',
+ 'General' : 'Obecné',
+ 'Generated with' : 'Vygenerováno pomocí',
+ 'Name' : 'Název',
+ 'No response values.' : 'Nebyly vráceny žádné hodnoty.',
+ 'optional' : 'volitelné',
+ 'Parameter' : 'Parametr',
+ 'Permission:' : 'Oprávnění:',
+ 'Response' : 'Odpověď',
+ 'Send' : 'Odeslat',
+ 'Send a Sample Request' : 'Odeslat ukázkový požadavek',
+ 'show up to version:' : 'zobrazit po verzi:',
+ 'Size range:' : 'Rozsah velikosti:',
+ 'Type' : 'Typ',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/de.js b/admin/survey/api/apidoc/locales/de.js
new file mode 100644
index 0000000..e624aa9
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/de.js
@@ -0,0 +1,25 @@
+define({
+ de: {
+ 'Allowed values:' : 'Erlaubte Werte:',
+ 'Compare all with predecessor': 'Vergleiche alle mit ihren Vorgängern',
+ 'compare changes to:' : 'vergleiche Änderungen mit:',
+ 'compared to' : 'verglichen mit',
+ 'Default value:' : 'Standardwert:',
+ 'Description' : 'Beschreibung',
+ 'Field' : 'Feld',
+ 'General' : 'Allgemein',
+ 'Generated with' : 'Erstellt mit',
+ 'Name' : 'Name',
+ 'No response values.' : 'Keine Rückgabewerte.',
+ 'optional' : 'optional',
+ 'Parameter' : 'Parameter',
+ 'Permission:' : 'Berechtigung:',
+ 'Response' : 'Antwort',
+ 'Send' : 'Senden',
+ 'Send a Sample Request' : 'Eine Beispielanfrage senden',
+ 'show up to version:' : 'zeige bis zur Version:',
+ 'Size range:' : 'Größenbereich:',
+ 'Type' : 'Typ',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/es.js b/admin/survey/api/apidoc/locales/es.js
new file mode 100644
index 0000000..a54d1ca
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/es.js
@@ -0,0 +1,25 @@
+define({
+ es: {
+ 'Allowed values:' : 'Valores permitidos:',
+ 'Compare all with predecessor': 'Comparar todo con versión anterior',
+ 'compare changes to:' : 'comparar cambios con:',
+ 'compared to' : 'comparado con',
+ 'Default value:' : 'Valor por defecto:',
+ 'Description' : 'Descripción',
+ 'Field' : 'Campo',
+ 'General' : 'General',
+ 'Generated with' : 'Generado con',
+ 'Name' : 'Nombre',
+ 'No response values.' : 'Sin valores en la respuesta.',
+ 'optional' : 'opcional',
+ 'Parameter' : 'Parámetro',
+ 'Permission:' : 'Permisos:',
+ 'Response' : 'Respuesta',
+ 'Send' : 'Enviar',
+ 'Send a Sample Request' : 'Enviar una petición de ejemplo',
+ 'show up to version:' : 'mostrar a versión:',
+ 'Size range:' : 'Tamaño de rango:',
+ 'Type' : 'Tipo',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/fr.js b/admin/survey/api/apidoc/locales/fr.js
new file mode 100644
index 0000000..6e9bc54
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/fr.js
@@ -0,0 +1,25 @@
+define({
+ fr: {
+ 'Allowed values:' : 'Valeurs autorisées :',
+ 'Compare all with predecessor': 'Tout comparer avec ...',
+ 'compare changes to:' : 'comparer les changements à :',
+ 'compared to' : 'comparer à',
+ 'Default value:' : 'Valeur par défaut :',
+ 'Description' : 'Description',
+ 'Field' : 'Champ',
+ 'General' : 'Général',
+ 'Generated with' : 'Généré avec',
+ 'Name' : 'Nom',
+ 'No response values.' : 'Aucune valeur de réponse.',
+ 'optional' : 'optionnel',
+ 'Parameter' : 'Paramètre',
+ 'Permission:' : 'Permission :',
+ 'Response' : 'Réponse',
+ 'Send' : 'Envoyer',
+ 'Send a Sample Request' : 'Envoyer une requête représentative',
+ 'show up to version:' : 'Montrer à partir de la version :',
+ 'Size range:' : 'Ordre de grandeur :',
+ 'Type' : 'Type',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/it.js b/admin/survey/api/apidoc/locales/it.js
new file mode 100644
index 0000000..99af32b
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/it.js
@@ -0,0 +1,25 @@
+define({
+ it: {
+ 'Allowed values:' : 'Valori permessi:',
+ 'Compare all with predecessor': 'Confronta tutto con versioni precedenti',
+ 'compare changes to:' : 'confronta modifiche con:',
+ 'compared to' : 'confrontato con',
+ 'Default value:' : 'Valore predefinito:',
+ 'Description' : 'Descrizione',
+ 'Field' : 'Campo',
+ 'General' : 'Generale',
+ 'Generated with' : 'Creato con',
+ 'Name' : 'Nome',
+ 'No response values.' : 'Nessun valore di risposta.',
+ 'optional' : 'opzionale',
+ 'Parameter' : 'Parametro',
+ 'Permission:' : 'Permessi:',
+ 'Response' : 'Risposta',
+ 'Send' : 'Invia',
+ 'Send a Sample Request' : 'Invia una richiesta di esempio',
+ 'show up to version:' : 'mostra alla versione:',
+ 'Size range:' : 'Intervallo dimensione:',
+ 'Type' : 'Tipo',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/locale.js b/admin/survey/api/apidoc/locales/locale.js
new file mode 100644
index 0000000..bf3abc5
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/locale.js
@@ -0,0 +1,50 @@
+define([
+ './locales/ca.js',
+ './locales/de.js',
+ './locales/es.js',
+ './locales/fr.js',
+ './locales/it.js',
+ './locales/nl.js',
+ './locales/pl.js',
+ './locales/pt_br.js',
+ './locales/ro.js',
+ './locales/ru.js',
+ './locales/tr.js',
+ './locales/vi.js',
+ './locales/zh.js',
+ './locales/zh_cn.js'
+], function() {
+ var langId = (navigator.language || navigator.userLanguage).toLowerCase().replace('-', '_');
+ var language = langId.substr(0, 2);
+ var locales = {};
+
+ for (index in arguments) {
+ for (property in arguments[index])
+ locales[property] = arguments[index][property];
+ }
+ if ( ! locales['en'])
+ locales['en'] = {};
+
+ if ( ! locales[langId] && ! locales[language])
+ language = 'en';
+
+ var locale = (locales[langId] ? locales[langId] : locales[language]);
+
+ function __(text) {
+ var index = locale[text];
+ if (index === undefined)
+ return text;
+ return index;
+ };
+
+ function setLanguage(language) {
+ locale = locales[language];
+ }
+
+ return {
+ __ : __,
+ locales : locales,
+ locale : locale,
+ setLanguage: setLanguage
+ };
+});
diff --git a/admin/survey/api/apidoc/locales/nl.js b/admin/survey/api/apidoc/locales/nl.js
new file mode 100644
index 0000000..382d6fa
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/nl.js
@@ -0,0 +1,25 @@
+define({
+ nl: {
+ 'Allowed values:' : 'Toegestane waarden:',
+ 'Compare all with predecessor': 'Vergelijk alle met voorgaande versie',
+ 'compare changes to:' : 'vergelijk veranderingen met:',
+ 'compared to' : 'vergelijk met',
+ 'Default value:' : 'Standaard waarde:',
+ 'Description' : 'Omschrijving',
+ 'Field' : 'Veld',
+ 'General' : 'Algemeen',
+ 'Generated with' : 'Gegenereerd met',
+ 'Name' : 'Naam',
+ 'No response values.' : 'Geen response waardes.',
+ 'optional' : 'optioneel',
+ 'Parameter' : 'Parameter',
+ 'Permission:' : 'Permissie:',
+ 'Response' : 'Antwoorden',
+ 'Send' : 'Sturen',
+ 'Send a Sample Request' : 'Stuur een sample aanvragen',
+ 'show up to version:' : 'toon tot en met versie:',
+ 'Size range:' : 'Maatbereik:',
+ 'Type' : 'Type',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/pl.js b/admin/survey/api/apidoc/locales/pl.js
new file mode 100644
index 0000000..6ab1b06
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/pl.js
@@ -0,0 +1,25 @@
+define({
+ pl: {
+ 'Allowed values:' : 'Dozwolone wartości:',
+ 'Compare all with predecessor': 'Porównaj z poprzednimi wersjami',
+ 'compare changes to:' : 'porównaj zmiany do:',
+ 'compared to' : 'porównaj do:',
+ 'Default value:' : 'Wartość domyślna:',
+ 'Description' : 'Opis',
+ 'Field' : 'Pole',
+ 'General' : 'Generalnie',
+ 'Generated with' : 'Wygenerowano z',
+ 'Name' : 'Nazwa',
+ 'No response values.' : 'Brak odpowiedzi.',
+ 'optional' : 'opcjonalny',
+ 'Parameter' : 'Parametr',
+ 'Permission:' : 'Uprawnienia:',
+ 'Response' : 'Odpowiedź',
+ 'Send' : 'Wyślij',
+ 'Send a Sample Request' : 'Wyślij przykładowe żądanie',
+ 'show up to version:' : 'pokaż do wersji:',
+ 'Size range:' : 'Zakres rozmiaru:',
+ 'Type' : 'Typ',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/pt_br.js b/admin/survey/api/apidoc/locales/pt_br.js
new file mode 100644
index 0000000..7ba2738
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/pt_br.js
@@ -0,0 +1,25 @@
+define({
+ 'pt_br': {
+ 'Allowed values:' : 'Valores permitidos:',
+ 'Compare all with predecessor': 'Compare todos com antecessores',
+ 'compare changes to:' : 'comparar alterações com:',
+ 'compared to' : 'comparado com',
+ 'Default value:' : 'Valor padrão:',
+ 'Description' : 'Descrição',
+ 'Field' : 'Campo',
+ 'General' : 'Geral',
+ 'Generated with' : 'Gerado com',
+ 'Name' : 'Nome',
+ 'No response values.' : 'Sem valores de resposta.',
+ 'optional' : 'opcional',
+ 'Parameter' : 'Parâmetro',
+ 'Permission:' : 'Permissão:',
+ 'Response' : 'Resposta',
+ 'Send' : 'Enviar',
+ 'Send a Sample Request' : 'Enviar um Exemplo de Pedido',
+ 'show up to version:' : 'aparecer para a versão:',
+ 'Size range:' : 'Faixa de tamanho:',
+ 'Type' : 'Tipo',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/ro.js b/admin/survey/api/apidoc/locales/ro.js
new file mode 100644
index 0000000..2d85c69
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/ro.js
@@ -0,0 +1,25 @@
+define({
+ ro: {
+ 'Allowed values:' : 'Valori permise:',
+ 'Compare all with predecessor': 'Compară toate cu versiunea precedentă',
+ 'compare changes to:' : 'compară cu versiunea:',
+ 'compared to' : 'comparat cu',
+ 'Default value:' : 'Valoare implicită:',
+ 'Description' : 'Descriere',
+ 'Field' : 'Câmp',
+ 'General' : 'General',
+ 'Generated with' : 'Generat cu',
+ 'Name' : 'Nume',
+ 'No response values.' : 'Nici o valoare returnată.',
+ 'optional' : 'opțional',
+ 'Parameter' : 'Parametru',
+ 'Permission:' : 'Permisiune:',
+ 'Response' : 'Răspuns',
+ 'Send' : 'Trimite',
+ 'Send a Sample Request' : 'Trimite o cerere de probă',
+ 'show up to version:' : 'arată până la versiunea:',
+ 'Size range:' : 'Interval permis:',
+ 'Type' : 'Tip',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/ru.js b/admin/survey/api/apidoc/locales/ru.js
new file mode 100644
index 0000000..ff45c84
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/ru.js
@@ -0,0 +1,25 @@
+define({
+ ru: {
+ 'Allowed values:' : 'Допустимые значения:',
+ 'Compare all with predecessor': 'Сравнить с предыдущей версией',
+ 'compare changes to:' : 'сравнить с:',
+ 'compared to' : 'в сравнении с',
+ 'Default value:' : 'По умолчанию:',
+ 'Description' : 'Описание',
+ 'Field' : 'Название',
+ 'General' : 'Общая информация',
+ 'Generated with' : 'Сгенерировано с помощью',
+ 'Name' : 'Название',
+ 'No response values.' : 'Нет значений для ответа.',
+ 'optional' : 'необязательный',
+ 'Parameter' : 'Параметр',
+ 'Permission:' : 'Разрешено:',
+ 'Response' : 'Ответ',
+ 'Send' : 'Отправить',
+ 'Send a Sample Request' : 'Отправить тестовый запрос',
+ 'show up to version:' : 'показать версию:',
+ 'Size range:' : 'Ограничения:',
+ 'Type' : 'Тип',
+ 'url' : 'URL'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/tr.js b/admin/survey/api/apidoc/locales/tr.js
new file mode 100644
index 0000000..dbef5e5
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/tr.js
@@ -0,0 +1,25 @@
+define({
+ tr: {
+ 'Allowed values:' : 'İzin verilen değerler:',
+ 'Compare all with predecessor': 'Tümünü öncekiler ile karşılaştır',
+ 'compare changes to:' : 'değişiklikleri karşılaştır:',
+ 'compared to' : 'karşılaştır',
+ 'Default value:' : 'Varsayılan değer:',
+ 'Description' : 'Açıklama',
+ 'Field' : 'Alan',
+ 'General' : 'Genel',
+ 'Generated with' : 'Oluşturan',
+ 'Name' : 'İsim',
+ 'No response values.' : 'Dönüş verisi yok.',
+ 'optional' : 'opsiyonel',
+ 'Parameter' : 'Parametre',
+ 'Permission:' : 'İzin:',
+ 'Response' : 'Dönüş',
+ 'Send' : 'Gönder',
+ 'Send a Sample Request' : 'Örnek istek gönder',
+ 'show up to version:' : 'bu versiyona kadar göster:',
+ 'Size range:' : 'Boyut aralığı:',
+ 'Type' : 'Tip',
+ 'url' : 'url'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/vi.js b/admin/survey/api/apidoc/locales/vi.js
new file mode 100644
index 0000000..4c48569
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/vi.js
@@ -0,0 +1,25 @@
+define({
+ vi: {
+ 'Allowed values:' : 'Giá trị chấp nhận:',
+ 'Compare all with predecessor': 'So sánh với tất cả phiên bản trước',
+ 'compare changes to:' : 'so sánh sự thay đổi với:',
+ 'compared to' : 'so sánh với',
+ 'Default value:' : 'Giá trị mặc định:',
+ 'Description' : 'Chú thích',
+ 'Field' : 'Trường dữ liệu',
+ 'General' : 'Tổng quan',
+ 'Generated with' : 'Được tạo bởi',
+ 'Name' : 'Tên',
+ 'No response values.' : 'Không có kết quả trả về.',
+ 'optional' : 'Tùy chọn',
+ 'Parameter' : 'Tham số',
+ 'Permission:' : 'Quyền hạn:',
+ 'Response' : 'Kết quả',
+ 'Send' : 'Gửi',
+ 'Send a Sample Request' : 'Gửi một yêu cầu mẫu',
+ 'show up to version:' : 'hiển thị phiên bản:',
+ 'Size range:' : 'Kích cỡ:',
+ 'Type' : 'Kiểu',
+ 'url' : 'liên kết'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/zh.js b/admin/survey/api/apidoc/locales/zh.js
new file mode 100644
index 0000000..693b459
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/zh.js
@@ -0,0 +1,25 @@
+define({
+ zh: {
+ 'Allowed values​​:' : '允許值:',
+ 'Compare all with predecessor': '預先比較所有',
+ 'compare changes to:' : '比較變更:',
+ 'compared to' : '對比',
+ 'Default value:' : '默認值:',
+ 'Description' : '描述',
+ 'Field' : '字段',
+ 'General' : '概括',
+ 'Generated with' : '生成工具',
+ 'Name' : '名稱',
+ 'No response values​​.' : '無對應資料.',
+ 'optional' : '選項',
+ 'Parameter' : '參數',
+ 'Permission:' : '允許:',
+ 'Response' : '回應',
+ 'Send' : '發送',
+ 'Send a Sample Request' : '發送試用需求',
+ 'show up to version:' : '顯示到版本:',
+ 'Size range:' : '尺寸範圍:',
+ 'Type' : '類型',
+ 'url' : '網址'
+ }
+});
diff --git a/admin/survey/api/apidoc/locales/zh_cn.js b/admin/survey/api/apidoc/locales/zh_cn.js
new file mode 100644
index 0000000..223918a
--- /dev/null
+++ b/admin/survey/api/apidoc/locales/zh_cn.js
@@ -0,0 +1,25 @@
+define({
+ 'zh_cn': {
+ 'Allowed values:' : '允许值:',
+ 'Compare all with predecessor': '与所有较早的比较',
+ 'compare changes to:' : '将当前版本与指定版本比较:',
+ 'compared to' : '相比于',
+ 'Default value:' : '默认值:',
+ 'Description' : '描述',
+ 'Field' : '字段',
+ 'General' : '概要',
+ 'Generated with' : '基于',
+ 'Name' : '名称',
+ 'No response values.' : '无返回值.',
+ 'optional' : '可选',
+ 'Parameter' : '参数',
+ 'Permission:' : '权限:',
+ 'Response' : '返回',
+ 'Send' : '发送',
+ 'Send a Sample Request' : '发送示例请求',
+ 'show up to version:' : '显示到指定版本:',
+ 'Size range:' : '取值范围:',
+ 'Type' : '类型',
+ 'url' : '网址'
+ }
+});
diff --git a/admin/survey/api/apidoc/main.js b/admin/survey/api/apidoc/main.js
new file mode 100644
index 0000000..0e5fe92
--- /dev/null
+++ b/admin/survey/api/apidoc/main.js
@@ -0,0 +1,827 @@
+require.config({
+ paths: {
+ bootstrap: './vendor/bootstrap.min',
+ diffMatchPatch: './vendor/diff_match_patch.min',
+ handlebars: './vendor/handlebars.min',
+ handlebarsExtended: './utils/handlebars_helper',
+ jquery: './vendor/jquery.min',
+ locales: './locales/locale',
+ lodash: './vendor/lodash.custom.min',
+ pathToRegexp: './vendor/path-to-regexp/index',
+ prettify: './vendor/prettify/prettify',
+ semver: './vendor/semver.min',
+ utilsSampleRequest: './utils/send_sample_request',
+ webfontloader: './vendor/webfontloader',
+ list: './vendor/list.min'
+ },
+ shim: {
+ bootstrap: {
+ deps: ['jquery']
+ },
+ diffMatchPatch: {
+ exports: 'diff_match_patch'
+ },
+ handlebars: {
+ exports: 'Handlebars'
+ },
+ handlebarsExtended: {
+ deps: ['jquery', 'handlebars'],
+ exports: 'Handlebars'
+ },
+ prettify: {
+ exports: 'prettyPrint'
+ }
+ },
+ urlArgs: 'v=' + (new Date()).getTime(),
+ waitSeconds: 15
+});
+
+require([
+ 'jquery',
+ 'lodash',
+ 'locales',
+ 'handlebarsExtended',
+ './api_project.js',
+ './api_data.js',
+ 'prettify',
+ 'utilsSampleRequest',
+ 'semver',
+ 'webfontloader',
+ 'bootstrap',
+ 'pathToRegexp',
+ 'list'
+], function($, _, locale, Handlebars, apiProject, apiData, prettyPrint, sampleRequest, semver, WebFont) {
+
+ // load google web fonts
+ loadGoogleFontCss();
+
+ var api = apiData.api;
+
+ //
+ // Templates
+ //
+ var templateHeader = Handlebars.compile( $('#template-header').html() );
+ var templateFooter = Handlebars.compile( $('#template-footer').html() );
+ var templateArticle = Handlebars.compile( $('#template-article').html() );
+ var templateCompareArticle = Handlebars.compile( $('#template-compare-article').html() );
+ var templateGenerator = Handlebars.compile( $('#template-generator').html() );
+ var templateProject = Handlebars.compile( $('#template-project').html() );
+ var templateSections = Handlebars.compile( $('#template-sections').html() );
+ var templateSidenav = Handlebars.compile( $('#template-sidenav').html() );
+
+ //
+ // apiProject defaults
+ //
+ if ( ! apiProject.template)
+ apiProject.template = {};
+
+ if (apiProject.template.withCompare == null)
+ apiProject.template.withCompare = true;
+
+ if (apiProject.template.withGenerator == null)
+ apiProject.template.withGenerator = true;
+
+ if (apiProject.template.forceLanguage)
+ locale.setLanguage(apiProject.template.forceLanguage);
+
+ // Setup jQuery Ajax
+ $.ajaxSetup(apiProject.template.jQueryAjaxSetup);
+
+ //
+ // Data transform
+ //
+ // grouped by group
+ var apiByGroup = _.groupBy(api, function(entry) {
+ return entry.group;
+ });
+
+ // grouped by group and name
+ var apiByGroupAndName = {};
+ $.each(apiByGroup, function(index, entries) {
+ apiByGroupAndName[index] = _.groupBy(entries, function(entry) {
+ return entry.name;
+ });
+ });
+
+ //
+ // sort api within a group by title ASC and custom order
+ //
+ var newList = [];
+ var umlauts = { 'ä': 'ae', 'ü': 'ue', 'ö': 'oe', 'ß': 'ss' }; // TODO: remove in version 1.0
+ $.each (apiByGroupAndName, function(index, groupEntries) {
+ // get titles from the first entry of group[].name[] (name has versioning)
+ var titles = [];
+ $.each (groupEntries, function(titleName, entries) {
+ var title = entries[0].title;
+ if(title !== undefined) {
+ title.toLowerCase().replace(/[äöüß]/g, function($0) { return umlauts[$0]; });
+ titles.push(title + '#~#' + titleName); // '#~#' keep reference to titleName after sorting
+ }
+ });
+ // sort by name ASC
+ titles.sort();
+
+ // custom order
+ if (apiProject.order)
+ titles = sortByOrder(titles, apiProject.order, '#~#');
+
+ // add single elements to the new list
+ titles.forEach(function(name) {
+ var values = name.split('#~#');
+ var key = values[1];
+ groupEntries[key].forEach(function(entry) {
+ newList.push(entry);
+ });
+ });
+ });
+ // api overwrite with ordered list
+ api = newList;
+
+ //
+ // Group- and Versionlists
+ //
+ var apiGroups = {};
+ var apiGroupTitles = {};
+ var apiVersions = {};
+ apiVersions[apiProject.version] = 1;
+
+ $.each(api, function(index, entry) {
+ apiGroups[entry.group] = 1;
+ apiGroupTitles[entry.group] = entry.groupTitle || entry.group;
+ apiVersions[entry.version] = 1;
+ });
+
+ // sort groups
+ apiGroups = Object.keys(apiGroups);
+ apiGroups.sort();
+
+ // custom order
+ if (apiProject.order)
+ apiGroups = sortByOrder(apiGroups, apiProject.order);
+
+ // sort versions DESC
+ apiVersions = Object.keys(apiVersions);
+ apiVersions.sort(semver.compare);
+ apiVersions.reverse();
+
+ //
+ // create Navigationlist
+ //
+ var nav = [];
+ apiGroups.forEach(function(group) {
+ // Mainmenu entry
+ nav.push({
+ group: group,
+ isHeader: true,
+ title: apiGroupTitles[group]
+ });
+
+ // Submenu
+ var oldName = '';
+ api.forEach(function(entry) {
+ if (entry.group === group) {
+ if (oldName !== entry.name) {
+ nav.push({
+ title: entry.title,
+ group: group,
+ name: entry.name,
+ type: entry.type,
+ version: entry.version
+ });
+ } else {
+ nav.push({
+ title: entry.title,
+ group: group,
+ hidden: true,
+ name: entry.name,
+ type: entry.type,
+ version: entry.version
+ });
+ }
+ oldName = entry.name;
+ }
+ });
+ });
+
+ /**
+ * Add navigation items by analyzing the HTML content and searching for h1 and h2 tags
+ * @param nav Object the navigation array
+ * @param content string the compiled HTML content
+ * @param index where to insert items
+ * @return boolean true if any good-looking (i.e. with a group identifier) <h1> tag was found
+ */
+ function add_nav(nav, content, index) {
+ var found_level1 = false;
+ if ( ! content) {
+ return found_level1;
+ }
+ var topics = content.match(/<h(1|2).*?>(.+?)<\/h(1|2)>/gi);
+ if ( topics ) {
+ topics.forEach(function(entry) {
+ var level = entry.substring(2,3);
+ var title = entry.replace(/<.+?>/g, ''); // Remove all HTML tags for the title
+ var entry_tags = entry.match(/id="api-([^\-]+)(?:-(.+))?"/); // Find the group and name in the id property
+ var group = (entry_tags ? entry_tags[1] : null);
+ var name = (entry_tags ? entry_tags[2] : null);
+ if (level==1 && title && group) {
+ nav.splice(index, 0, {
+ group: group,
+ isHeader: true,
+ title: title,
+ isFixed: true
+ });
+ index++;
+ found_level1 = true;
+ }
+ if (level==2 && title && group && name) {
+ nav.splice(index, 0, {
+ group: group,
+ name: name,
+ isHeader: false,
+ title: title,
+ isFixed: false,
+ version: '1.0'
+ });
+ index++;
+ }
+ });
+ }
+ return found_level1;
+ }
+
+ // Mainmenu Header entry
+ if (apiProject.header) {
+ var found_level1 = add_nav(nav, apiProject.header.content, 0); // Add level 1 and 2 titles
+ if (!found_level1) { // If no Level 1 tags were found, make a title
+ nav.unshift({
+ group: '_',
+ isHeader: true,
+ title: (apiProject.header.title == null) ? locale.__('General') : apiProject.header.title,
+ isFixed: true
+ });
+ }
+ }
+
+ // Mainmenu Footer entry
+ if (apiProject.footer) {
+ var last_nav_index = nav.length;
+ var found_level1 = add_nav(nav, apiProject.footer.content, nav.length); // Add level 1 and 2 titles
+ if (!found_level1 && apiProject.footer.title != null) { // If no Level 1 tags were found, make a title
+ nav.splice(last_nav_index, 0, {
+ group: '_footer',
+ isHeader: true,
+ title: apiProject.footer.title,
+ isFixed: true
+ });
+ }
+ }
+
+ // render pagetitle
+ var title = apiProject.title ? apiProject.title : 'apiDoc: ' + apiProject.name + ' - ' + apiProject.version;
+ $(document).attr('title', title);
+
+ // remove loader
+ $('#loader').remove();
+
+ // render sidenav
+ var fields = {
+ nav: nav
+ };
+ $('#sidenav').append( templateSidenav(fields) );
+
+ // render Generator
+ $('#generator').append( templateGenerator(apiProject) );
+
+ // render Project
+ _.extend(apiProject, { versions: apiVersions});
+ $('#project').append( templateProject(apiProject) );
+
+ // render apiDoc, header/footer documentation
+ if (apiProject.header)
+ $('#header').append( templateHeader(apiProject.header) );
+
+ if (apiProject.footer)
+ $('#footer').append( templateFooter(apiProject.footer) );
+
+ //
+ // Render Sections and Articles
+ //
+ var articleVersions = {};
+ var content = '';
+ apiGroups.forEach(function(groupEntry) {
+ var articles = [];
+ var oldName = '';
+ var fields = {};
+ var title = groupEntry;
+ var description = '';
+ articleVersions[groupEntry] = {};
+
+ // render all articles of a group
+ api.forEach(function(entry) {
+ if(groupEntry === entry.group) {
+ if (oldName !== entry.name) {
+ // determine versions
+ api.forEach(function(versionEntry) {
+ if (groupEntry === versionEntry.group && entry.name === versionEntry.name) {
+ if ( ! articleVersions[entry.group].hasOwnProperty(entry.name) ) {
+ articleVersions[entry.group][entry.name] = [];
+ }
+ articleVersions[entry.group][entry.name].push(versionEntry.version);
+ }
+ });
+ fields = {
+ article: entry,
+ versions: articleVersions[entry.group][entry.name]
+ };
+ } else {
+ fields = {
+ article: entry,
+ hidden: true,
+ versions: articleVersions[entry.group][entry.name]
+ };
+ }
+
+ // add prefix URL for endpoint
+ if (apiProject.url)
+ fields.article.url = apiProject.url + fields.article.url;
+
+ addArticleSettings(fields, entry);
+
+ if (entry.groupTitle)
+ title = entry.groupTitle;
+
+ // TODO: make groupDescription compareable with older versions (not important for the moment)
+ if (entry.groupDescription)
+ description = entry.groupDescription;
+
+ articles.push({
+ article: templateArticle(fields),
+ group: entry.group,
+ name: entry.name
+ });
+ oldName = entry.name;
+ }
+ });
+
+ // render Section with Articles
+ var fields = {
+ group: groupEntry,
+ title: title,
+ description: description,
+ articles: articles
+ };
+ content += templateSections(fields);
+ });
+ $('#sections').append( content );
+
+ // Bootstrap Scrollspy
+ $(this).scrollspy({ target: '#scrollingNav', offset: 18 });
+
+ // Content-Scroll on Navigation click.
+ $('.sidenav').find('a').on('click', function(e) {
+ e.preventDefault();
+ var id = $(this).attr('href');
+ if ($(id).length > 0)
+ $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 400);
+ window.location.hash = $(this).attr('href');
+ });
+
+ // Quickjump on Pageload to hash position.
+ if(window.location.hash) {
+ var id = window.location.hash;
+ if ($(id).length > 0)
+ $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 0);
+ }
+
+ /**
+ * Check if Parameter (sub) List has a type Field.
+ * Example: @apiSuccess varname1 No type.
+ * @apiSuccess {String} varname2 With type.
+ *
+ * @param {Object} fields
+ */
+ function _hasTypeInFields(fields) {
+ var result = false;
+ $.each(fields, function(name) {
+ result = result || _.some(fields[name], function(item) { return item.type; });
+ });
+ return result;
+ }
+
+ /**
+ * On Template changes, recall plugins.
+ */
+ function initDynamic() {
+ // Bootstrap popover
+ $('button[data-toggle="popover"]').popover().click(function(e) {
+ e.preventDefault();
+ });
+
+ var version = $('#version strong').html();
+ $('#sidenav li').removeClass('is-new');
+ if (apiProject.template.withCompare) {
+ $('#sidenav li[data-version=\'' + version + '\']').each(function(){
+ var group = $(this).data('group');
+ var name = $(this).data('name');
+ var length = $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\']').length;
+ var index = $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\']').index($(this));
+ if (length === 1 || index === (length - 1))
+ $(this).addClass('is-new');
+ });
+ }
+
+ // tabs
+ $('.nav-tabs-examples a').click(function (e) {
+ e.preventDefault();
+ $(this).tab('show');
+ });
+ $('.nav-tabs-examples').find('a:first').tab('show');
+
+ // sample request switch
+ $('.sample-request-switch').click(function (e) {
+ var name = '.' + $(this).attr('name') + '-fields';
+ $(name).addClass('hide');
+ $(this).parent().next(name).removeClass('hide');
+ });
+
+ // call scrollspy refresh method
+ $(window).scrollspy('refresh');
+
+ // init modules
+ sampleRequest.initDynamic();
+ }
+ initDynamic();
+
+ // Pre- / Code-Format
+ prettyPrint();
+
+ //
+ // HTML-Template specific jQuery-Functions
+ //
+ // Change Main Version
+ $('#versions li.version a').on('click', function(e) {
+ e.preventDefault();
+
+ var selectedVersion = $(this).html();
+ $('#version strong').html(selectedVersion);
+
+ // hide all
+ $('article').addClass('hide');
+ $('#sidenav li:not(.nav-fixed)').addClass('hide');
+
+ // show 1st equal or lower Version of each entry
+ $('article[data-version]').each(function(index) {
+ var group = $(this).data('group');
+ var name = $(this).data('name');
+ var version = $(this).data('version');
+
+ if (semver.lte(version, selectedVersion)) {
+ if ($('article[data-group=\'' + group + '\'][data-name=\'' + name + '\']:visible').length === 0) {
+ // enable Article
+ $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('hide');
+ // enable Navigation
+ $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('hide');
+ $('#sidenav li.nav-header[data-group=\'' + group + '\']').removeClass('hide');
+ }
+ }
+ });
+
+ // show 1st equal or lower Version of each entry
+ $('article[data-version]').each(function(index) {
+ var group = $(this).data('group');
+ $('section#api-' + group).removeClass('hide');
+ if ($('section#api-' + group + ' article:visible').length === 0) {
+ $('section#api-' + group).addClass('hide');
+ } else {
+ $('section#api-' + group).removeClass('hide');
+ }
+ });
+
+ initDynamic();
+ return;
+ });
+
+ // compare all article with their predecessor
+ $('#compareAllWithPredecessor').on('click', changeAllVersionCompareTo);
+
+ // change version of an article
+ $('article .versions li.version a').on('click', changeVersionCompareTo);
+
+ // compare url-parameter
+ $.urlParam = function(name) {
+ var results = new RegExp('[\\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
+ return (results && results[1]) ? results[1] : null;
+ };
+
+ if ($.urlParam('compare')) {
+ // URL Paramter ?compare=1 is set
+ $('#compareAllWithPredecessor').trigger('click');
+
+ if (window.location.hash) {
+ var id = window.location.hash;
+ $('html,body').animate({ scrollTop: parseInt($(id).offset().top) - 18 }, 0);
+ }
+ }
+
+ /**
+ * Initialize search
+ */
+ var options = {
+ valueNames: [ 'nav-list-item' ]
+ };
+ var endpointsList = new List('scrollingNav', options);
+
+ /**
+ * Set initial focus to search input
+ */
+ $('#scrollingNav .sidenav-search input.search').focus();
+
+ /**
+ * Detect ESC key to reset search
+ */
+ $(document).keyup(function(e) {
+ if (e.keyCode === 27) $('span.search-reset').click();
+ });
+
+ /**
+ * Search reset
+ */
+ $('span.search-reset').on('click', function() {
+ $('#scrollingNav .sidenav-search input.search')
+ .val("")
+ .focus()
+ ;
+ endpointsList.search();
+ });
+
+ /**
+ * Change version of an article to compare it to an other version.
+ */
+ function changeVersionCompareTo(e) {
+ e.preventDefault();
+
+ var $root = $(this).parents('article');
+ var selectedVersion = $(this).html();
+ var $button = $root.find('.version');
+ var currentVersion = $button.find('strong').html();
+ $button.find('strong').html(selectedVersion);
+
+ var group = $root.data('group');
+ var name = $root.data('name');
+ var version = $root.data('version');
+
+ var compareVersion = $root.data('compare-version');
+
+ if (compareVersion === selectedVersion)
+ return;
+
+ if ( ! compareVersion && version == selectedVersion)
+ return;
+
+ if (compareVersion && articleVersions[group][name][0] === selectedVersion || version === selectedVersion) {
+ // the version of the entry is set to the highest version (reset)
+ resetArticle(group, name, version);
+ } else {
+ var $compareToArticle = $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + selectedVersion + '\']');
+
+ var sourceEntry = {};
+ var compareEntry = {};
+ $.each(apiByGroupAndName[group][name], function(index, entry) {
+ if (entry.version === version)
+ sourceEntry = entry;
+ if (entry.version === selectedVersion)
+ compareEntry = entry;
+ });
+
+ var fields = {
+ article: sourceEntry,
+ compare: compareEntry,
+ versions: articleVersions[group][name]
+ };
+
+ // add unique id
+ // TODO: replace all group-name-version in template with id.
+ fields.article.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version;
+ fields.article.id = fields.article.id.replace(/\./g, '_');
+
+ fields.compare.id = fields.compare.group + '-' + fields.compare.name + '-' + fields.compare.version;
+ fields.compare.id = fields.compare.id.replace(/\./g, '_');
+
+ var entry = sourceEntry;
+ if (entry.parameter && entry.parameter.fields)
+ fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields);
+
+ if (entry.error && entry.error.fields)
+ fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields);
+
+ if (entry.success && entry.success.fields)
+ fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields);
+
+ if (entry.info && entry.info.fields)
+ fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields);
+
+ var entry = compareEntry;
+ if (fields._hasTypeInParameterFields !== true && entry.parameter && entry.parameter.fields)
+ fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields);
+
+ if (fields._hasTypeInErrorFields !== true && entry.error && entry.error.fields)
+ fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields);
+
+ if (fields._hasTypeInSuccessFields !== true && entry.success && entry.success.fields)
+ fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields);
+
+ if (fields._hasTypeInInfoFields !== true && entry.info && entry.info.fields)
+ fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields);
+
+ var content = templateCompareArticle(fields);
+ $root.after(content);
+ var $content = $root.next();
+
+ // Event on.click re-assign
+ $content.find('.versions li.version a').on('click', changeVersionCompareTo);
+
+ // select navigation
+ $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + currentVersion + '\']').addClass('has-modifications');
+
+ $root.remove();
+ // TODO: on change main version or select the highest version re-render
+ }
+
+ initDynamic();
+ }
+
+ /**
+ * Compare all currently selected Versions with their predecessor.
+ */
+ function changeAllVersionCompareTo(e) {
+ e.preventDefault();
+ $('article:visible .versions').each(function(){
+ var $root = $(this).parents('article');
+ var currentVersion = $root.data('version');
+ var $foundElement = null;
+ $(this).find('li.version a').each(function() {
+ var selectVersion = $(this).html();
+ if (selectVersion < currentVersion && ! $foundElement)
+ $foundElement = $(this);
+ });
+
+ if($foundElement)
+ $foundElement.trigger('click');
+ });
+ initDynamic();
+ }
+
+ /**
+ * Sort the fields.
+ */
+ function sortFields(fields_object) {
+ $.each(fields_object, function (key, fields) {
+
+ var reversed = fields.slice().reverse()
+
+ var max_dot_count = Math.max.apply(null, reversed.map(function (item) {
+ return item.field.split(".").length - 1;
+ }))
+
+ for (var dot_count = 1; dot_count <= max_dot_count; dot_count++) {
+ reversed.forEach(function (item, index) {
+ var parts = item.field.split(".");
+ if (parts.length - 1 == dot_count) {
+ var fields_names = fields.map(function (item) { return item.field; });
+ if (parts.slice(1).length >= 1) {
+ var prefix = parts.slice(0, parts.length - 1).join(".");
+ var prefix_index = fields_names.indexOf(prefix);
+ if (prefix_index > -1) {
+ fields.splice(fields_names.indexOf(item.field), 1);
+ fields.splice(prefix_index + 1, 0, item);
+ }
+ }
+ }
+ });
+ }
+ });
+ }
+
+ /**
+ * Add article settings.
+ */
+ function addArticleSettings(fields, entry) {
+ // add unique id
+ // TODO: replace all group-name-version in template with id.
+ fields.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version;
+ fields.id = fields.id.replace(/\./g, '_');
+
+ if (entry.header && entry.header.fields) {
+ sortFields(entry.header.fields);
+ fields._hasTypeInHeaderFields = _hasTypeInFields(entry.header.fields);
+ }
+
+ if (entry.parameter && entry.parameter.fields) {
+ sortFields(entry.parameter.fields);
+ fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields);
+ }
+
+ if (entry.error && entry.error.fields) {
+ sortFields(entry.error.fields);
+ fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields);
+ }
+
+ if (entry.success && entry.success.fields) {
+ sortFields(entry.success.fields);
+ fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields);
+ }
+
+ if (entry.info && entry.info.fields) {
+ sortFields(entry.info.fields);
+ fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields);
+ }
+
+ // add template settings
+ fields.template = apiProject.template;
+ }
+
+ /**
+ * Render Article.
+ */
+ function renderArticle(group, name, version) {
+ var entry = {};
+ $.each(apiByGroupAndName[group][name], function(index, currentEntry) {
+ if (currentEntry.version === version)
+ entry = currentEntry;
+ });
+ var fields = {
+ article: entry,
+ versions: articleVersions[group][name]
+ };
+
+ addArticleSettings(fields, entry);
+
+ return templateArticle(fields);
+ }
+
+ /**
+ * Render original Article and remove the current visible Article.
+ */
+ function resetArticle(group, name, version) {
+ var $root = $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\']:visible');
+ var content = renderArticle(group, name, version);
+
+ $root.after(content);
+ var $content = $root.next();
+
+ // Event on.click muss neu zugewiesen werden (sollte eigentlich mit on automatisch funktionieren... sollte)
+ $content.find('.versions li.version a').on('click', changeVersionCompareTo);
+
+ $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('has-modifications');
+
+ $root.remove();
+ return;
+ }
+
+ /**
+ * Load google fonts.
+ */
+ function loadGoogleFontCss() {
+ WebFont.load({
+ active: function() {
+ // Update scrollspy
+ $(window).scrollspy('refresh')
+ },
+ google: {
+ families: ['Source Code Pro', 'Source Sans Pro:n4,n6,n7']
+ }
+ });
+ }
+
+ /**
+ * Return ordered entries by custom order and append not defined entries to the end.
+ * @param {String[]} elements
+ * @param {String[]} order
+ * @param {String} splitBy
+ * @return {String[]} Custom ordered list.
+ */
+ function sortByOrder(elements, order, splitBy) {
+ var results = [];
+ order.forEach (function(name) {
+ if (splitBy)
+ elements.forEach (function(element) {
+ var parts = element.split(splitBy);
+ var key = parts[1]; // reference keep for sorting
+ if (key == name)
+ results.push(element);
+ });
+ else
+ elements.forEach (function(key) {
+ if (key == name)
+ results.push(name);
+ });
+ });
+ // Append all other entries that ar not defined in order
+ elements.forEach(function(element) {
+ if (results.indexOf(element) === -1)
+ results.push(element);
+ });
+ return results;
+ }
+
+});
diff --git a/admin/survey/api/apidoc/utils/handlebars_helper.js b/admin/survey/api/apidoc/utils/handlebars_helper.js
new file mode 100644
index 0000000..b4298db
--- /dev/null
+++ b/admin/survey/api/apidoc/utils/handlebars_helper.js
@@ -0,0 +1,357 @@
+define([
+ 'locales',
+ 'handlebars',
+ 'diffMatchPatch'
+], function(locale, Handlebars, DiffMatchPatch) {
+
+ /**
+ * Return a text as markdown.
+ * Currently only a little helper to replace apidoc-inline Links (#Group:Name).
+ * Should be replaced with a full markdown lib.
+ * @param string text
+ */
+ Handlebars.registerHelper('markdown', function(text) {
+ if ( ! text ) {
+ return text;
+ }
+ text = text.replace(/((\[(.*?)\])?\(#)((.+?):(.+?))(\))/mg, function(match, p1, p2, p3, p4, p5, p6) {
+ var link = p3 || p5 + '/' + p6;
+ return '<a href="#api-' + p5 + '-' + p6 + '">' + link + '</a>';
+ });
+ return text;
+ });
+
+ /**
+ * start/stop timer for simple performance check.
+ */
+ var timer;
+ Handlebars.registerHelper('startTimer', function(text) {
+ timer = new Date();
+ return '';
+ });
+
+ Handlebars.registerHelper('stopTimer', function(text) {
+ console.log(new Date() - timer);
+ return '';
+ });
+
+ /**
+ * Return localized Text.
+ * @param string text
+ */
+ Handlebars.registerHelper('__', function(text) {
+ return locale.__(text);
+ });
+
+ /**
+ * Console log.
+ * @param mixed obj
+ */
+ Handlebars.registerHelper('cl', function(obj) {
+ console.log(obj);
+ return '';
+ });
+
+ /**
+ * Replace underscore with space.
+ * @param string text
+ */
+ Handlebars.registerHelper('underscoreToSpace', function(text) {
+ return text.replace(/(_+)/g, ' ');
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('assign', function(name) {
+ if(arguments.length > 0) {
+ var type = typeof(arguments[1]);
+ var arg = null;
+ if(type === 'string' || type === 'number' || type === 'boolean') arg = arguments[1];
+ Handlebars.registerHelper(name, function() { return arg; });
+ }
+ return '';
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('nl2br', function(text) {
+ return _handlebarsNewlineToBreak(text);
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('if_eq', function(context, options) {
+ var compare = context;
+ // Get length if context is an object
+ if (context instanceof Object && ! (options.hash.compare instanceof Object))
+ compare = Object.keys(context).length;
+
+ if (compare === options.hash.compare)
+ return options.fn(this);
+
+ return options.inverse(this);
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('if_gt', function(context, options) {
+ var compare = context;
+ // Get length if context is an object
+ if (context instanceof Object && ! (options.hash.compare instanceof Object))
+ compare = Object.keys(context).length;
+
+ if(compare > options.hash.compare)
+ return options.fn(this);
+
+ return options.inverse(this);
+ });
+
+ /**
+ *
+ */
+ var templateCache = {};
+ Handlebars.registerHelper('subTemplate', function(name, sourceContext) {
+ if ( ! templateCache[name])
+ templateCache[name] = Handlebars.compile($('#template-' + name).html());
+
+ var template = templateCache[name];
+ var templateContext = $.extend({}, this, sourceContext.hash);
+ return new Handlebars.SafeString( template(templateContext) );
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('toLowerCase', function(value) {
+ return (value && typeof value === 'string') ? value.toLowerCase() : '';
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('splitFill', function(value, splitChar, fillChar) {
+ var splits = value.split(splitChar);
+ return new Array(splits.length).join(fillChar) + splits[splits.length - 1];
+ });
+
+ /**
+ * Convert Newline to HTML-Break (nl2br).
+ *
+ * @param {String} text
+ * @returns {String}
+ */
+ function _handlebarsNewlineToBreak(text) {
+ return ('' + text).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + '<br>' + '$2');
+ }
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('each_compare_list_field', function(source, compare, options) {
+ var fieldName = options.hash.field;
+ var newSource = [];
+ if (source) {
+ source.forEach(function(entry) {
+ var values = entry;
+ values['key'] = entry[fieldName];
+ newSource.push(values);
+ });
+ }
+
+ var newCompare = [];
+ if (compare) {
+ compare.forEach(function(entry) {
+ var values = entry;
+ values['key'] = entry[fieldName];
+ newCompare.push(values);
+ });
+ }
+ return _handlebarsEachCompared('key', newSource, newCompare, options);
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('each_compare_keys', function(source, compare, options) {
+ var newSource = [];
+ if (source) {
+ var sourceFields = Object.keys(source);
+ sourceFields.forEach(function(name) {
+ var values = {};
+ values['value'] = source[name];
+ values['key'] = name;
+ newSource.push(values);
+ });
+ }
+
+ var newCompare = [];
+ if (compare) {
+ var compareFields = Object.keys(compare);
+ compareFields.forEach(function(name) {
+ var values = {};
+ values['value'] = compare[name];
+ values['key'] = name;
+ newCompare.push(values);
+ });
+ }
+ return _handlebarsEachCompared('key', newSource, newCompare, options);
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('each_compare_field', function(source, compare, options) {
+ return _handlebarsEachCompared('field', source, compare, options);
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('each_compare_title', function(source, compare, options) {
+ return _handlebarsEachCompared('title', source, compare, options);
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('reformat', function(source, type){
+ if (type == 'json')
+ try {
+ return JSON.stringify(JSON.parse(source.trim()),null, " ");
+ } catch(e) {
+
+ }
+ return source
+ });
+
+ /**
+ *
+ */
+ Handlebars.registerHelper('showDiff', function(source, compare, options) {
+ var ds = '';
+ if(source === compare) {
+ ds = source;
+ } else {
+ if( ! source)
+ return compare;
+
+ if( ! compare)
+ return source;
+
+ var d = diffMatchPatch.diff_main(compare, source);
+ diffMatchPatch.diff_cleanupSemantic(d);
+ ds = diffMatchPatch.diff_prettyHtml(d);
+ ds = ds.replace(/&para;/gm, '');
+ }
+ if(options === 'nl2br')
+ ds = _handlebarsNewlineToBreak(ds);
+
+ return ds;
+ });
+
+ /**
+ *
+ */
+ function _handlebarsEachCompared(fieldname, source, compare, options)
+ {
+ var dataList = [];
+ var index = 0;
+ if(source) {
+ source.forEach(function(sourceEntry) {
+ var found = false;
+ if (compare) {
+ compare.forEach(function(compareEntry) {
+ if(sourceEntry[fieldname] === compareEntry[fieldname]) {
+ var data = {
+ typeSame: true,
+ source: sourceEntry,
+ compare: compareEntry,
+ index: index
+ };
+ dataList.push(data);
+ found = true;
+ index++;
+ }
+ });
+ }
+ if ( ! found) {
+ var data = {
+ typeIns: true,
+ source: sourceEntry,
+ index: index
+ };
+ dataList.push(data);
+ index++;
+ }
+ });
+ }
+
+ if (compare) {
+ compare.forEach(function(compareEntry) {
+ var found = false;
+ if (source) {
+ source.forEach(function(sourceEntry) {
+ if(sourceEntry[fieldname] === compareEntry[fieldname])
+ found = true;
+ });
+ }
+ if ( ! found) {
+ var data = {
+ typeDel: true,
+ compare: compareEntry,
+ index: index
+ };
+ dataList.push(data);
+ index++;
+ }
+ });
+ }
+
+ var ret = '';
+ var length = dataList.length;
+ for (var index in dataList) {
+ if(index == (length - 1))
+ dataList[index]['_last'] = true;
+ ret = ret + options.fn(dataList[index]);
+ }
+ return ret;
+ }
+
+ var diffMatchPatch = new DiffMatchPatch();
+
+ /**
+ * Overwrite Colors
+ */
+ DiffMatchPatch.prototype.diff_prettyHtml = function(diffs) {
+ var html = [];
+ var pattern_amp = /&/g;
+ var pattern_lt = /</g;
+ var pattern_gt = />/g;
+ var pattern_para = /\n/g;
+ for (var x = 0; x < diffs.length; x++) {
+ var op = diffs[x][0]; // Operation (insert, delete, equal)
+ var data = diffs[x][1]; // Text of change.
+ var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')
+ .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');
+ switch (op) {
+ case DIFF_INSERT:
+ html[x] = '<ins>' + text + '</ins>';
+ break;
+ case DIFF_DELETE:
+ html[x] = '<del>' + text + '</del>';
+ break;
+ case DIFF_EQUAL:
+ html[x] = '<span>' + text + '</span>';
+ break;
+ }
+ }
+ return html.join('');
+ };
+
+ // Exports
+ return Handlebars;
+});
diff --git a/admin/survey/api/apidoc/utils/send_sample_request.js b/admin/survey/api/apidoc/utils/send_sample_request.js
new file mode 100644
index 0000000..f2396ea
--- /dev/null
+++ b/admin/survey/api/apidoc/utils/send_sample_request.js
@@ -0,0 +1,184 @@
+define([
+ 'jquery',
+ 'lodash'
+], function($, _) {
+
+ var initDynamic = function() {
+ // Button send
+ $(".sample-request-send").off("click");
+ $(".sample-request-send").on("click", function(e) {
+ e.preventDefault();
+ var $root = $(this).parents("article");
+ var group = $root.data("group");
+ var name = $root.data("name");
+ var version = $root.data("version");
+ sendSampleRequest(group, name, version, $(this).data("sample-request-type"));
+ });
+
+ // Button clear
+ $(".sample-request-clear").off("click");
+ $(".sample-request-clear").on("click", function(e) {
+ e.preventDefault();
+ var $root = $(this).parents("article");
+ var group = $root.data("group");
+ var name = $root.data("name");
+ var version = $root.data("version");
+ clearSampleRequest(group, name, version);
+ });
+ }; // initDynamic
+
+ function sendSampleRequest(group, name, version, type)
+ {
+ var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
+
+ // Optional header
+ var header = {};
+ $root.find(".sample-request-header:checked").each(function(i, element) {
+ var group = $(element).data("sample-request-header-group-id");
+ $root.find("[data-sample-request-header-group=\"" + group + "\"]").each(function(i, element) {
+ var key = $(element).data("sample-request-header-name");
+ var value = element.value;
+ if ( ! element.optional && element.defaultValue !== '') {
+ value = element.defaultValue;
+ }
+ header[key] = value;
+ });
+ });
+
+ // create JSON dictionary of parameters
+ var param = {};
+ var paramType = {};
+ $root.find(".sample-request-param:checked").each(function(i, element) {
+ var group = $(element).data("sample-request-param-group-id");
+ $root.find("[data-sample-request-param-group=\"" + group + "\"]").not(function(){
+ return $(this).val() == "" && $(this).is("[data-sample-request-param-optional='true']");
+ }).each(function(i, element) {
+ var key = $(element).data("sample-request-param-name");
+ var value = element.value;
+ if ( ! element.optional && element.defaultValue !== '') {
+ value = element.defaultValue;
+ }
+ param[key] = value;
+ paramType[key] = $(element).next().text();
+ });
+ });
+
+ // grab user-inputted URL
+ var url = $root.find(".sample-request-url").val();
+
+ // Insert url parameter
+ var pattern = pathToRegexp(url, null);
+ var matches = pattern.exec(url);
+ for (var i = 1; i < matches.length; i++) {
+ var key = matches[i].substr(1);
+ if (param[key] !== undefined) {
+ url = url.replace(matches[i], encodeURIComponent(param[key]));
+
+ // remove URL parameters from list
+ delete param[key];
+ }
+ } // for
+
+ $root.find(".sample-request-response").fadeTo(250, 1);
+ $root.find(".sample-request-response-json").html("Loading...");
+ refreshScrollSpy();
+
+ _.each( param, function( val, key ) {
+ var t = paramType[ key ].toLowerCase();
+ if ( t === 'object' || t === 'array' ) {
+ try {
+ param[ key ] = JSON.parse( val );
+ } catch (e) {
+ }
+ }
+ });
+
+ // send AJAX request, catch success or error callback
+ var ajaxRequest = {
+ url : url,
+ headers : header,
+ data : param,
+ type : type.toUpperCase(),
+ success : displaySuccess,
+ error : displayError
+ };
+
+ $.ajax(ajaxRequest);
+
+
+ function displaySuccess(data, status, jqXHR) {
+ var jsonResponse;
+ try {
+ jsonResponse = JSON.parse(jqXHR.responseText);
+ jsonResponse = JSON.stringify(jsonResponse, null, 4);
+ } catch (e) {
+ jsonResponse = data;
+ }
+ $root.find(".sample-request-response-json").html(jsonResponse);
+ refreshScrollSpy();
+ };
+
+ function displayError(jqXHR, textStatus, error) {
+ var message = "Error " + jqXHR.status + ": " + error;
+ var jsonResponse;
+ try {
+ jsonResponse = JSON.parse(jqXHR.responseText);
+ jsonResponse = JSON.stringify(jsonResponse, null, 4);
+ } catch (e) {
+ jsonResponse = escape(jqXHR.responseText);
+ }
+
+ if (jsonResponse)
+ message += "<br>" + jsonResponse;
+
+ // flicker on previous error to make clear that there is a new response
+ if($root.find(".sample-request-response").is(":visible"))
+ $root.find(".sample-request-response").fadeTo(1, 0.1);
+
+ $root.find(".sample-request-response").fadeTo(250, 1);
+ $root.find(".sample-request-response-json").html(message);
+ refreshScrollSpy();
+ };
+ }
+
+ function clearSampleRequest(group, name, version)
+ {
+ var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
+
+ // hide sample response
+ $root.find(".sample-request-response-json").html("");
+ $root.find(".sample-request-response").hide();
+
+ // reset value of parameters
+ $root.find(".sample-request-param").each(function(i, element) {
+ element.value = "";
+ });
+
+ // restore default URL
+ var $urlElement = $root.find(".sample-request-url");
+ $urlElement.val($urlElement.prop("defaultValue"));
+
+ refreshScrollSpy();
+ }
+
+ function refreshScrollSpy()
+ {
+ $('[data-spy="scroll"]').each(function () {
+ $(this).scrollspy("refresh");
+ });
+ }
+
+ function escapeHtml(str) {
+ var div = document.createElement("div");
+ div.appendChild(document.createTextNode(str));
+ return div.innerHTML;
+ }
+
+ /**
+ * Exports.
+ */
+ return {
+ initDynamic: initDynamic
+ };
+
+});
diff --git a/admin/survey/api/apidoc/vendor/bootstrap.min.css b/admin/survey/api/apidoc/vendor/bootstrap.min.css
new file mode 100644
index 0000000..c54ad99
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-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{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}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{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!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:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@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.woff2) format('woff2'),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:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.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"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-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}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.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;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.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,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,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,.h5,.h6,h4,h5,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:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.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 ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}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;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;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{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{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:auto}.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:auto}.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-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{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:auto}.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:auto}.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-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{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:auto}.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:auto}.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-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{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:auto}.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:auto}.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{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{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>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border: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;max-width:100%;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=checkbox],input[type=radio]{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=checkbox]:focus,input[type=radio]:focus{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,-webkit-box-shadow ease-in-out .15s;-o-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::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.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}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{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;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{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;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{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;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top: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 .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-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;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{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;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;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)}.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:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.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,.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-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-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:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left: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-left-radius:4px;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-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.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-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.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.3333333;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}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.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}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn: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=checkbox],.input-group-addon input[type=radio]{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-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-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:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-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:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{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{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.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:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-tabs.nav-justified>.active>a:hover{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:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.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{margin-bottom:5px;text-align:center}.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:focus,.nav-tabs-justified>.active>a:hover{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:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-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{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;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-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{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-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{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;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;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;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{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-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-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)}@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 .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;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-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{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:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{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:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{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:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@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:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.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{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.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;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.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:focus,.pager li>a:hover{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:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.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}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom: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}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left: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:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.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,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.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}}@-o-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{height:20px;margin-bottom:20px;overflow:hidden;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:#337ab7;-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;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.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:-o-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);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-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:-o-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:-o-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:-o-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:-o-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{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.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-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{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-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>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,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table-responsive:first-child>.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 th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table-responsive:first-child>.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 th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table-responsive:last-child>.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 th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table-responsive:last-child>.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 th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.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,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.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-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.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-heading .badge{color:#dff0d8;background-color:#3c763d}.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-heading .badge{color:#d9edf7;background-color:#31708f}.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-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.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-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.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;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@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:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;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{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-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;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;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);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;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{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";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{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.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;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.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%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;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-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left: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}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!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!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/bootstrap.min.js b/admin/survey/api/apidoc/vendor/bootstrap.min.js
new file mode 100644
index 0000000..e1cd129
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
+this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/diff_match_patch.min.js b/admin/survey/api/apidoc/vendor/diff_match_patch.min.js
new file mode 100644
index 0000000..b57edaa
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/diff_match_patch.min.js
@@ -0,0 +1,49 @@
+(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=0.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=0.5;this.Patch_Margin=4;this.Match_MaxBits=32}
+diff_match_patch.prototype.diff_main=function(a,b,c,d){"undefined"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error("Null input. (diff_main)");if(a==b)return a?[[0,a]]:[];"undefined"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);var f=this.diff_commonSuffix(a,b),g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,
+b,e,d);c&&a.unshift([0,c]);g&&a.push([0,g]);this.diff_cleanupMerge(a);return a};
+diff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[1,b]];if(!b)return[[-1,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[1,e.substring(0,g)],[0,f],[1,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=-1),c):1==f.length?[[-1,a],[1,b]]:(e=this.diff_halfMatch_(a,b))?(f=e[0],a=e[1],g=e[2],b=e[3],e=e[4],f=this.diff_main(f,g,c,d),c=this.diff_main(a,b,c,d),f.concat([[0,e]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,
+d):this.diff_bisect_(a,b,d)};
+diff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([0,""]);for(var e=d=b=0,f="",g="";b<a.length;){switch(a[b][0]){case 1:e++;g+=a[b][1];break;case -1:d++;f+=a[b][1];break;case 0:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=d.length}d=e=0;g=f=""}b++}a.pop();return a};
+diff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=f,h=2*f,j=Array(h),i=Array(h),k=0;k<h;k++)j[k]=-1,i[k]=-1;j[g+1]=0;i[g+1]=0;for(var k=d-e,q=0!=k%2,r=0,t=0,p=0,w=0,v=0;v<f&&!((new Date).getTime()>c);v++){for(var n=-v+r;n<=v-t;n+=2){var l=g+n,m;m=n==-v||n!=v&&j[l-1]<j[l+1]?j[l+1]:j[l-1]+1;for(var s=m-n;m<d&&s<e&&a.charAt(m)==b.charAt(s);)m++,s++;j[l]=m;if(m>d)t+=2;else if(s>e)r+=2;else if(q&&(l=g+k-n,0<=l&&l<h&&-1!=i[l])){var u=d-i[l];if(m>=
+u)return this.diff_bisectSplit_(a,b,m,s,c)}}for(n=-v+p;n<=v-w;n+=2){l=g+n;u=n==-v||n!=v&&i[l-1]<i[l+1]?i[l+1]:i[l-1]+1;for(m=u-n;u<d&&m<e&&a.charAt(d-u-1)==b.charAt(e-m-1);)u++,m++;i[l]=u;if(u>d)w+=2;else if(m>e)p+=2;else if(!q&&(l=g+k-n,0<=l&&(l<h&&-1!=j[l])&&(m=j[l],s=g+m-l,u=d-u,m>=u)))return this.diff_bisectSplit_(a,b,m,s,c)}}return[[-1,a],[1,b]]};
+diff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};
+diff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b="",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf("\n",c);-1==f&&(f=a.length-1);var r=a.substring(c,f+1),c=f+1;(e.hasOwnProperty?e.hasOwnProperty(r):void 0!==e[r])?b+=String.fromCharCode(e[r]):(b+=String.fromCharCode(g),e[r]=g,d[g++]=r)}return b}var d=[],e={};d[0]="";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};
+diff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join("")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};
+diff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};
+diff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;for(var d=0,e=1;;){var f=a.substring(c-e),f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};
+diff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g="",h,j,n,l;-1!=(e=b.indexOf(d,e+1));){var m=f.diff_commonPrefix(a.substring(c),b.substring(e)),s=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<s+m&&(g=b.substring(e-s,e)+b.substring(e,e+m),h=a.substring(0,c-s),j=a.substring(c+m),n=b.substring(0,e-s),l=b.substring(e+m))}return 2*g.length>=a.length?[h,j,n,l,g]:null}if(0>=this.Diff_Timeout)return null;
+var d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4)),d=c(d,e,Math.ceil(d.length/2)),h;if(!g&&!d)return null;h=d?g?g[4].length>d[4].length?g:d:d:g;var j;a.length>b.length?(g=h[0],d=h[1],e=h[2],j=h[3]):(e=h[0],j=h[1],g=h[2],d=h[3]);h=h[4];return[g,d,e,j,h]};
+diff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,j=0,i=0;f<a.length;)0==a[f][0]?(c[d++]=f,g=j,h=i,i=j=0,e=a[f][1]):(1==a[f][0]?j+=a[f][1].length:i+=a[f][1].length,e&&(e.length<=Math.max(g,h)&&e.length<=Math.max(j,i))&&(a.splice(c[d-1],0,[-1,e]),a[c[d-1]+1][0]=1,d--,d--,f=0<d?c[d-1]:-1,i=j=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(-1==a[f-1][0]&&1==a[f][0]){b=a[f-1][1];c=a[f][1];
+d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[0,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[0,b.substring(0,e)]),a[f-1][0]=1,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=-1,a[f+1][1]=b.substring(e),f++;f++}f++}};
+diff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_),c=g&&c.match(diff_match_patch.linebreakRegex_),d=h&&d.match(diff_match_patch.linebreakRegex_),i=c&&a.match(diff_match_patch.blanklineEndRegex_),j=d&&b.match(diff_match_patch.blanklineStartRegex_);
+return i||j?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(0==a[c-1][0]&&0==a[c+1][0]){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g)var h=e.substring(e.length-g),d=d.substring(0,d.length-g),e=h+e.substring(0,e.length-g),f=h+f;for(var g=d,h=e,j=f,i=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){var d=d+e.charAt(0),e=e.substring(1)+f.charAt(0),f=f.substring(1),k=b(d,e)+b(e,f);k>=i&&(i=k,g=d,h=e,j=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-1,1),c--),a[c][1]=
+h,j?a[c+1][1]=j:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\s/;diff_match_patch.linebreakRegex_=/[\r\n]/;diff_match_patch.blanklineEndRegex_=/\n\r?\n$/;diff_match_patch.blanklineStartRegex_=/^\r?\n\r?\n/;
+diff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,j=!1,i=!1;f<a.length;){if(0==a[f][0])a[f][1].length<this.Diff_EditCost&&(j||i)?(c[d++]=f,g=j,h=i,e=a[f][1]):(d=0,e=null),j=i=!1;else if(-1==a[f][0]?i=!0:j=!0,e&&(g&&h&&j&&i||e.length<this.Diff_EditCost/2&&3==g+h+j+i))a.splice(c[d-1],0,[-1,e]),a[c[d-1]+1][0]=1,d--,e=null,g&&h?(j=i=!0,d=0):(d--,f=0<d?c[d-1]:-1,j=i=!1),b=!0;f++}b&&this.diff_cleanupMerge(a)};
+diff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([0,""]);for(var b=0,c=0,d=0,e="",f="",g;b<a.length;)switch(a[b][0]){case 1:d++;f+=a[b][1];b++;break;case -1:c++;e+=a[b][1];b++;break;case 0:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&0==a[b-c-d-1][0]?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[0,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-g)+a[b][1],f=f.substring(0,f.length-
+g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[1,f]):0===d?a.splice(b-c,c+d,[-1,e]):a.splice(b-c-d,c+d,[-1,e],[1,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&0==a[b-1][0]?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=""}""===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)0==a[b-1][0]&&0==a[b+1][0]&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,a[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,
+a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};diff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){1!==a[g][0]&&(c+=a[g][1].length);-1!==a[g][0]&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&-1===a[g][0]?f:f+(b-e)};
+diff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\n/g,g=0;g<a.length;g++){var h=a[g][0],j=a[g][1],j=j.replace(c,"&amp;").replace(d,"&lt;").replace(e,"&gt;").replace(f,"&para;<br>");switch(h){case 1:b[g]='<ins style="background:#e6ffe6;">'+j+"</ins>";break;case -1:b[g]='<del style="background:#ffe6e6;">'+j+"</del>";break;case 0:b[g]="<span>"+j+"</span>"}}return b.join("")};
+diff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)1!==a[c][0]&&(b[c]=a[c][1]);return b.join("")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)-1!==a[c][0]&&(b[c]=a[c][1]);return b.join("")};diff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][0],g=a[e][1];switch(f){case 1:c+=g.length;break;case -1:d+=g.length;break;case 0:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};
+diff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case 1:b[c]="+"+encodeURI(a[c][1]);break;case -1:b[c]="-"+a[c][1].length;break;case 0:b[c]="="+a[c][1].length}return b.join("\t").replace(/%20/g," ")};
+diff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case "+":try{c[d++]=[1,decodeURI(h)]}catch(j){throw Error("Illegal escape in diff_fromDelta: "+h);}break;case "-":case "=":var i=parseInt(h,10);if(isNaN(i)||0>i)throw Error("Invalid number in diff_fromDelta: "+h);h=a.substring(e,e+=i);"="==f[g].charAt(0)?c[d++]=[0,h]:c[d++]=[-1,h];break;default:if(f[g])throw Error("Invalid diff operation in diff_fromDelta: "+
+f[g]);}}if(e!=a.length)throw Error("Delta length ("+e+") does not equal source text length ("+a.length+").");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error("Null input. (match_main)");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};
+diff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return!f.Match_Distance?g?1:e:e+g/f.Match_Distance}if(b.length>this.Match_MaxBits)throw Error("Pattern too long for this browser.");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));for(var j=1<<b.length-1,h=-1,i,k,q=b.length+a.length,r,t=0;t<b.length;t++){i=0;for(k=q;i<k;)d(t,c+
+k)<=g?i=k:q=k,k=Math.floor((q-i)/2+i);q=k;i=Math.max(1,c-k+1);var p=Math.min(c+k,a.length)+b.length;k=Array(p+2);for(k[p+1]=(1<<t)-1;p>=i;p--){var w=e[a.charAt(p-1)];k[p]=0===t?(k[p+1]<<1|1)&w:(k[p+1]<<1|1)&w|((r[p+1]|r[p])<<1|1)|r[p+1];if(k[p]&j&&(w=d(t,p-1),w<=g))if(g=w,h=p-1,h>c)i=Math.max(1,2*c-h);else break}if(d(t+1,c)>g)break;r=k}return h};
+diff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};
+diff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([0,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([0,d]);a.start1-=c.length;a.start2-=c.length;a.length1+=
+c.length+d.length;a.length2+=c.length+d.length}};
+diff_match_patch.prototype.patch_make=function(a,b,c){var d;if("string"==typeof a&&"string"==typeof b&&"undefined"==typeof c)d=a,b=this.diff_main(d,b,!0),2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b));else if(a&&"object"==typeof a&&"undefined"==typeof b&&"undefined"==typeof c)b=a,d=this.diff_text1(b);else if("string"==typeof a&&b&&"object"==typeof b&&"undefined"==typeof c)d=a;else if("string"==typeof a&&"string"==typeof b&&c&&"object"==typeof c)d=a,b=c;else throw Error("Unknown call format to patch_make.");
+if(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,j=0;j<b.length;j++){var i=b[j][0],k=b[j][1];!e&&0!==i&&(a.start1=f,a.start2=g);switch(i){case 1:a.diffs[e++]=b[j];a.length2+=k.length;d=d.substring(0,g)+k+d.substring(g);break;case -1:a.length1+=k.length;a.diffs[e++]=b[j];d=d.substring(0,g)+d.substring(g+k.length);break;case 0:k.length<=2*this.Patch_Margin&&e&&b.length!=j+1?(a.diffs[e++]=b[j],a.length1+=k.length,a.length2+=k.length):k.length>=2*this.Patch_Margin&&
+e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}1!==i&&(f+=k.length);-1!==i&&(g+=k.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};diff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};
+diff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),j,i=-1;if(h.length>this.Match_MaxBits){if(j=this.match_main(b,h.substring(0,this.Match_MaxBits),g),-1!=j&&(i=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==i||j>=i))j=-1}else j=this.match_main(b,h,g);
+if(-1==j)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=j-g,g=-1==i?b.substring(j,j+h.length):b.substring(j,i+this.Match_MaxBits),h==g)b=b.substring(0,j)+this.diff_text2(a[f].diffs)+b.substring(j+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);for(var h=0,k,i=0;i<a[f].diffs.length;i++){var q=a[f].diffs[i];0!==q[0]&&(k=this.diff_xIndex(g,h));1===q[0]?b=b.substring(0,
+j+k)+q[1]+b.substring(j+k):-1===q[0]&&(b=b.substring(0,j+k)+b.substring(j+this.diff_xIndex(g,h+q[1].length)));-1!==q[0]&&(h+=q[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};
+diff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c="",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;var d=a[0],e=d.diffs;if(0==e.length||0!=e[0][0])e.unshift([0,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||0!=e[e.length-1][0]?(e.push([0,
+c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};
+diff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g="";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,j=!0;h.start1=e-g.length;h.start2=f-g.length;""!==g&&(h.length1=h.length2=g.length,h.diffs.push([0,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){var g=d.diffs[0][0],i=d.diffs[0][1];1===g?(h.length2+=i.length,f+=i.length,h.diffs.push(d.diffs.shift()),
+j=!1):-1===g&&1==h.diffs.length&&0==h.diffs[0][0]&&i.length>2*b?(h.length1+=i.length,e+=i.length,j=!1,h.diffs.push([g,i]),d.diffs.shift()):(i=i.substring(0,b-h.length1-this.Patch_Margin),h.length1+=i.length,e+=i.length,0===g?(h.length2+=i.length,f+=i.length):j=!1,h.diffs.push([g,i]),i==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(i.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);i=this.diff_text1(d.diffs).substring(0,this.Patch_Margin);""!==i&&
+(h.length1+=i.length,h.length2+=i.length,0!==h.diffs.length&&0===h.diffs[h.diffs.length-1][0]?h.diffs[h.diffs.length-1][1]+=i:h.diffs.push([0,i]));j||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join("")};
+diff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split("\n");for(var c=0,d=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error("Invalid patch string: "+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);""===e[2]?(f.start1--,f.length1=1):"0"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);""===e[4]?(f.start2--,f.length2=1):"0"==e[4]?f.length2=0:(f.start2--,f.length2=
+parseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error("Illegal escape in patch_fromText: "+g);}if("-"==e)f.diffs.push([-1,g]);else if("+"==e)f.diffs.push([1,g]);else if(" "==e)f.diffs.push([0,g]);else if("@"==e)break;else if(""!==e)throw Error('Invalid patch mode "'+e+'" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};
+diff_match_patch.patch_obj.prototype.toString=function(){var a,b;a=0===this.length1?this.start1+",0":1==this.length1?this.start1+1:this.start1+1+","+this.length1;b=0===this.length2?this.start2+",0":1==this.length2?this.start2+1:this.start2+1+","+this.length2;a=["@@ -"+a+" +"+b+" @@\n"];var c;for(b=0;b<this.diffs.length;b++){switch(this.diffs[b][0]){case 1:c="+";break;case -1:c="-";break;case 0:c=" "}a[b+1]=c+encodeURI(this.diffs[b][1])+"\n"}return a.join("").replace(/%20/g," ")};
+this.diff_match_patch=diff_match_patch;this.DIFF_DELETE=-1;this.DIFF_INSERT=1;this.DIFF_EQUAL=0;})()
diff --git a/admin/survey/api/apidoc/vendor/handlebars.min.js b/admin/survey/api/apidoc/vendor/handlebars.min.js
new file mode 100644
index 0000000..3d4b2c5
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/handlebars.min.js
@@ -0,0 +1,29 @@
+/*!
+
+ handlebars v4.0.5
+
+Copyright (C) 2011-2015 by Yehuda Katz
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+@license
+*/
+!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.Handlebars=b():a.Handlebars=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){"use strict";function d(){var a=r();return a.compile=function(b,c){return k.compile(b,c,a)},a.precompile=function(b,c){return k.precompile(b,c,a)},a.AST=i["default"],a.Compiler=k.Compiler,a.JavaScriptCompiler=m["default"],a.Parser=j.parser,a.parse=j.parse,a}var e=c(1)["default"];b.__esModule=!0;var f=c(2),g=e(f),h=c(21),i=e(h),j=c(22),k=c(27),l=c(28),m=e(l),n=c(25),o=e(n),p=c(20),q=e(p),r=g["default"].create,s=d();s.create=d,q["default"](s),s.Visitor=o["default"],s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){return a&&a.__esModule?a:{"default":a}},b.__esModule=!0},function(a,b,c){"use strict";function d(){var a=new h.HandlebarsEnvironment;return n.extend(a,h),a.SafeString=j["default"],a.Exception=l["default"],a.Utils=n,a.escapeExpression=n.escapeExpression,a.VM=p,a.template=function(b){return p.template(b,a)},a}var e=c(3)["default"],f=c(1)["default"];b.__esModule=!0;var g=c(4),h=e(g),i=c(18),j=f(i),k=c(6),l=f(k),m=c(5),n=e(m),o=c(19),p=e(o),q=c(20),r=f(q),s=d();s.create=d,r["default"](s),s["default"]=s,b["default"]=s,a.exports=b["default"]},function(a,b){"use strict";b["default"]=function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b},b.__esModule=!0},function(a,b,c){"use strict";function d(a,b,c){this.helpers=a||{},this.partials=b||{},this.decorators=c||{},i.registerDefaultHelpers(this),j.registerDefaultDecorators(this)}var e=c(1)["default"];b.__esModule=!0,b.HandlebarsEnvironment=d;var f=c(5),g=c(6),h=e(g),i=c(7),j=c(15),k=c(17),l=e(k),m="4.0.5";b.VERSION=m;var n=7;b.COMPILER_REVISION=n;var o={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0"};b.REVISION_CHANGES=o;var p="[object Object]";d.prototype={constructor:d,logger:l["default"],log:l["default"].log,registerHelper:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){if(f.toString.call(a)===p)f.extend(this.partials,a);else{if("undefined"==typeof b)throw new h["default"]('Attempting to register a partial called "'+a+'" as undefined');this.partials[a]=b}},unregisterPartial:function(a){delete this.partials[a]},registerDecorator:function(a,b){if(f.toString.call(a)===p){if(b)throw new h["default"]("Arg not supported with multiple decorators");f.extend(this.decorators,a)}else this.decorators[a]=b},unregisterDecorator:function(a){delete this.decorators[a]}};var q=l["default"].log;b.log=q,b.createFrame=f.createFrame,b.logger=l["default"]},function(a,b){"use strict";function c(a){return k[a]}function d(a){for(var b=1;b<arguments.length;b++)for(var c in arguments[b])Object.prototype.hasOwnProperty.call(arguments[b],c)&&(a[c]=arguments[b][c]);return a}function e(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1}function f(a){if("string"!=typeof a){if(a&&a.toHTML)return a.toHTML();if(null==a)return"";if(!a)return a+"";a=""+a}return m.test(a)?a.replace(l,c):a}function g(a){return a||0===a?p(a)&&0===a.length?!0:!1:!0}function h(a){var b=d({},a);return b._parent=a,b}function i(a,b){return a.path=b,a}function j(a,b){return(a?a+".":"")+b}b.__esModule=!0,b.extend=d,b.indexOf=e,b.escapeExpression=f,b.isEmpty=g,b.createFrame=h,b.blockParams=i,b.appendContextPath=j;var k={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},l=/[&<>"'`=]/g,m=/[&<>"'`=]/,n=Object.prototype.toString;b.toString=n;var o=function(a){return"function"==typeof a};o(/x/)&&(b.isFunction=o=function(a){return"function"==typeof a&&"[object Function]"===n.call(a)}),b.isFunction=o;var p=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===n.call(a):!1};b.isArray=p},function(a,b){"use strict";function c(a,b){var e=b&&b.loc,f=void 0,g=void 0;e&&(f=e.start.line,g=e.start.column,a+=" - "+f+":"+g);for(var h=Error.prototype.constructor.call(this,a),i=0;i<d.length;i++)this[d[i]]=h[d[i]];Error.captureStackTrace&&Error.captureStackTrace(this,c),e&&(this.lineNumber=f,this.column=g)}b.__esModule=!0;var d=["description","fileName","lineNumber","message","name","number","stack"];c.prototype=new Error,b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a),i["default"](a),k["default"](a),m["default"](a),o["default"](a),q["default"](a),s["default"](a)}var e=c(1)["default"];b.__esModule=!0,b.registerDefaultHelpers=d;var f=c(8),g=e(f),h=c(9),i=e(h),j=c(10),k=e(j),l=c(11),m=e(l),n=c(12),o=e(n),p=c(13),q=e(p),r=c(14),s=e(r)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("blockHelperMissing",function(b,c){var e=c.inverse,f=c.fn;if(b===!0)return f(this);if(b===!1||null==b)return e(this);if(d.isArray(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):e(this);if(c.data&&c.ids){var g=d.createFrame(c.data);g.contextPath=d.appendContextPath(c.data.contextPath,c.name),c={data:g}}return f(b,c)})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(5),f=c(6),g=d(f);b["default"]=function(a){a.registerHelper("each",function(a,b){function c(b,c,f){j&&(j.key=b,j.index=c,j.first=0===c,j.last=!!f,k&&(j.contextPath=k+b)),i+=d(a[b],{data:j,blockParams:e.blockParams([a[b],b],[k+b,null])})}if(!b)throw new g["default"]("Must pass iterator to #each");var d=b.fn,f=b.inverse,h=0,i="",j=void 0,k=void 0;if(b.data&&b.ids&&(k=e.appendContextPath(b.data.contextPath,b.ids[0])+"."),e.isFunction(a)&&(a=a.call(this)),b.data&&(j=e.createFrame(b.data)),a&&"object"==typeof a)if(e.isArray(a))for(var l=a.length;l>h;h++)h in a&&c(h,h,h===a.length-1);else{var m=void 0;for(var n in a)a.hasOwnProperty(n)&&(void 0!==m&&c(m,h-1),m=n,h++);void 0!==m&&c(m,h-1,!0)}return 0===h&&(i=f(this)),i})},a.exports=b["default"]},function(a,b,c){"use strict";var d=c(1)["default"];b.__esModule=!0;var e=c(6),f=d(e);b["default"]=function(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new f["default"]('Missing helper: "'+arguments[arguments.length-1].name+'"')})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("if",function(a,b){return d.isFunction(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||d.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("log",function(){for(var b=[void 0],c=arguments[arguments.length-1],d=0;d<arguments.length-1;d++)b.push(arguments[d]);var e=1;null!=c.hash.level?e=c.hash.level:c.data&&null!=c.data.level&&(e=c.data.level),b[0]=e,a.log.apply(a,b)})},a.exports=b["default"]},function(a,b){"use strict";b.__esModule=!0,b["default"]=function(a){a.registerHelper("lookup",function(a,b){return a&&a[b]})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerHelper("with",function(a,b){d.isFunction(a)&&(a=a.call(this));var c=b.fn;if(d.isEmpty(a))return b.inverse(this);var e=b.data;return b.data&&b.ids&&(e=d.createFrame(b.data),e.contextPath=d.appendContextPath(b.data.contextPath,b.ids[0])),c(a,{data:e,blockParams:d.blockParams([a],[e&&e.contextPath])})})},a.exports=b["default"]},function(a,b,c){"use strict";function d(a){g["default"](a)}var e=c(1)["default"];b.__esModule=!0,b.registerDefaultDecorators=d;var f=c(16),g=e(f)},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5);b["default"]=function(a){a.registerDecorator("inline",function(a,b,c,e){var f=a;return b.partials||(b.partials={},f=function(e,f){var g=c.partials;c.partials=d.extend({},g,b.partials);var h=a(e,f);return c.partials=g,h}),b.partials[e.args[0]]=e.fn,f})},a.exports=b["default"]},function(a,b,c){"use strict";b.__esModule=!0;var d=c(5),e={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(a){if("string"==typeof a){var b=d.indexOf(e.methodMap,a.toLowerCase());a=b>=0?b:parseInt(a,10)}return a},log:function(a){if(a=e.lookupLevel(a),"undefined"!=typeof console&&e.lookupLevel(e.level)<=a){var b=e.methodMap[a];console[b]||(b="log");for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;c>f;f++)d[f-1]=arguments[f];console[b].apply(console,d)}}};b["default"]=e,a.exports=b["default"]},function(a,b){"use strict";function c(a){this.string=a}b.__esModule=!0,c.prototype.toString=c.prototype.toHTML=function(){return""+this.string},b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=r.COMPILER_REVISION;if(b!==c){if(c>b){var d=r.REVISION_CHANGES[c],e=r.REVISION_CHANGES[b];throw new q["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new q["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){function c(c,d,e){e.hash&&(d=o.extend({},d,e.hash),e.ids&&(e.ids[0]=!0)),c=b.VM.resolvePartial.call(this,c,d,e);var f=b.VM.invokePartial.call(this,c,d,e);if(null==f&&b.compile&&(e.partials[e.name]=b.compile(c,a.compilerOptions,b),f=e.partials[e.name](d,e)),null!=f){if(e.indent){for(var g=f.split("\n"),h=0,i=g.length;i>h&&(g[h]||h+1!==i);h++)g[h]=e.indent+g[h];f=g.join("\n")}return f}throw new q["default"]("The partial "+e.name+" could not be compiled when running in runtime-only mode")}function d(b){function c(b){return""+a.main(e,b,e.helpers,e.partials,g,i,h)}var f=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],g=f.data;d._setup(f),!f.partial&&a.useData&&(g=j(b,g));var h=void 0,i=a.useBlockParams?[]:void 0;return a.useDepths&&(h=f.depths?b!==f.depths[0]?[b].concat(f.depths):f.depths:[b]),(c=k(a.main,c,e,f.depths||[],g,i))(b,f)}if(!b)throw new q["default"]("No environment passed to template");if(!a||!a.main)throw new q["default"]("Unknown template object: "+typeof a);a.main.decorator=a.main_d,b.VM.checkRevision(a.compiler);var e={strict:function(a,b){if(!(b in a))throw new q["default"]('"'+b+'" not defined in '+a);return a[b]},lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:o.escapeExpression,invokePartial:c,fn:function(b){var c=a[b];return c.decorator=a[b+"_d"],c},programs:[],program:function(a,b,c,d,e){var g=this.programs[a],h=this.fn(a);return b||e||d||c?g=f(this,a,h,b,c,d,e):g||(g=this.programs[a]=f(this,a,h)),g},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=o.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler};return d.isTop=!0,d._setup=function(c){c.partial?(e.helpers=c.helpers,e.partials=c.partials,e.decorators=c.decorators):(e.helpers=e.merge(c.helpers,b.helpers),a.usePartial&&(e.partials=e.merge(c.partials,b.partials)),(a.usePartial||a.useDecorators)&&(e.decorators=e.merge(c.decorators,b.decorators)))},d._child=function(b,c,d,g){if(a.useBlockParams&&!d)throw new q["default"]("must pass block params");if(a.useDepths&&!g)throw new q["default"]("must pass parent depths");return f(e,b,a[b],c,0,d,g)},d}function f(a,b,c,d,e,f,g){function h(b){var e=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],h=g;return g&&b!==g[0]&&(h=[b].concat(g)),c(a,b,a.helpers,a.partials,e.data||d,f&&[e.blockParams].concat(f),h)}return h=k(c,h,a,g,d,f),h.program=b,h.depth=g?g.length:0,h.blockParams=e||0,h}function g(a,b,c){return a?a.call||c.name||(c.name=a,a=c.partials[a]):a="@partial-block"===c.name?c.data["partial-block"]:c.partials[c.name],a}function h(a,b,c){c.partial=!0,c.ids&&(c.data.contextPath=c.ids[0]||c.data.contextPath);var d=void 0;if(c.fn&&c.fn!==i&&(c.data=r.createFrame(c.data),d=c.data["partial-block"]=c.fn,d.partials&&(c.partials=o.extend({},c.partials,d.partials))),void 0===a&&d&&(a=d),void 0===a)throw new q["default"]("The partial "+c.name+" could not be found");return a instanceof Function?a(b,c):void 0}function i(){return""}function j(a,b){return b&&"root"in b||(b=b?r.createFrame(b):{},b.root=a),b}function k(a,b,c,d,e,f){if(a.decorator){var g={};b=a.decorator(b,g,c,d&&d[0],e,f,d),o.extend(b,g)}return b}var l=c(3)["default"],m=c(1)["default"];b.__esModule=!0,b.checkRevision=d,b.template=e,b.wrapProgram=f,b.resolvePartial=g,b.invokePartial=h,b.noop=i;var n=c(5),o=l(n),p=c(6),q=m(p),r=c(4)},function(a,b){(function(c){"use strict";b.__esModule=!0,b["default"]=function(a){var b="undefined"!=typeof c?c:window,d=b.Handlebars;a.noConflict=function(){return b.Handlebars===a&&(b.Handlebars=d),a}},a.exports=b["default"]}).call(b,function(){return this}())},function(a,b){"use strict";b.__esModule=!0;var c={helpers:{helperExpression:function(a){return"SubExpression"===a.type||("MustacheStatement"===a.type||"BlockStatement"===a.type)&&!!(a.params&&a.params.length||a.hash)},scopedId:function(a){return/^\.|this\b/.test(a.original)},simpleId:function(a){return 1===a.parts.length&&!c.helpers.scopedId(a)&&!a.depth}}};b["default"]=c,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if("Program"===a.type)return a;h["default"].yy=n,n.locInfo=function(a){return new n.SourceLocation(b&&b.srcName,a)};var c=new j["default"](b);return c.accept(h["default"].parse(a))}var e=c(1)["default"],f=c(3)["default"];b.__esModule=!0,b.parse=d;var g=c(23),h=e(g),i=c(24),j=e(i),k=c(26),l=f(k),m=c(5);b.parser=h["default"];var n={};m.extend(n,l)},function(a,b){"use strict";var c=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition_plus0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,1],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return f[h-1];case 2:this.$=d.prepareProgram(f[h]);break;case 3:this.$=f[h];break;case 4:this.$=f[h];break;case 5:this.$=f[h];break;case 6:this.$=f[h];break;case 7:this.$=f[h];break;case 8:this.$=f[h];break;case 9:this.$={type:"CommentStatement",value:d.stripComment(f[h]),strip:d.stripFlags(f[h],f[h]),loc:d.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:f[h],value:f[h],loc:d.locInfo(this._$)};break;case 11:this.$=d.prepareRawBlock(f[h-2],f[h-1],f[h],this._$);break;case 12:this.$={path:f[h-3],params:f[h-2],hash:f[h-1]};break;case 13:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!1,this._$);break;case 14:this.$=d.prepareBlock(f[h-3],f[h-2],f[h-1],f[h],!0,this._$);break;case 15:this.$={open:f[h-5],path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 16:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 17:this.$={path:f[h-4],params:f[h-3],hash:f[h-2],blockParams:f[h-1],strip:d.stripFlags(f[h-5],f[h])};break;case 18:this.$={strip:d.stripFlags(f[h-1],f[h-1]),program:f[h]};break;case 19:var i=d.prepareBlock(f[h-2],f[h-1],f[h],f[h],!1,this._$),j=d.prepareProgram([i],f[h-1].loc);j.chained=!0,this.$={strip:f[h-2].strip,program:j,chain:!0};break;case 20:this.$=f[h];break;case 21:this.$={path:f[h-1],strip:d.stripFlags(f[h-2],f[h])};break;case 22:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 23:this.$=d.prepareMustache(f[h-3],f[h-2],f[h-1],f[h-4],d.stripFlags(f[h-4],f[h]),this._$);break;case 24:this.$={type:"PartialStatement",name:f[h-3],params:f[h-2],hash:f[h-1],indent:"",strip:d.stripFlags(f[h-4],f[h]),loc:d.locInfo(this._$)};break;case 25:this.$=d.preparePartialBlock(f[h-2],f[h-1],f[h],this._$);break;case 26:this.$={path:f[h-3],params:f[h-2],hash:f[h-1],strip:d.stripFlags(f[h-4],f[h])};break;case 27:this.$=f[h];break;case 28:this.$=f[h];break;case 29:this.$={type:"SubExpression",path:f[h-3],params:f[h-2],hash:f[h-1],loc:d.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:f[h],loc:d.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:d.id(f[h-2]),value:f[h],loc:d.locInfo(this._$)};break;case 32:this.$=d.id(f[h-1]);break;case 33:this.$=f[h];break;case 34:this.$=f[h];break;case 35:this.$={type:"StringLiteral",value:f[h],original:f[h],loc:d.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(f[h]),original:Number(f[h]),loc:d.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===f[h],original:"true"===f[h],loc:d.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:d.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:d.locInfo(this._$)};break;case 40:this.$=f[h];break;case 41:this.$=f[h];break;case 42:this.$=d.preparePath(!0,f[h],this._$);break;case 43:this.$=d.preparePath(!1,f[h],this._$);break;case 44:f[h-2].push({part:d.id(f[h]),original:f[h],separator:f[h-1]}),this.$=f[h-2];break;case 45:this.$=[{part:d.id(f[h]),original:f[h]}];break;case 46:this.$=[];break;case 47:f[h-1].push(f[h]);break;case 48:this.$=[f[h]];break;case 49:f[h-1].push(f[h]);break;case 50:this.$=[];break;case 51:f[h-1].push(f[h]);break;case 58:this.$=[];break;case 59:f[h-1].push(f[h]);break;case 64:this.$=[];break;case 65:f[h-1].push(f[h]);break;case 70:this.$=[];break;case 71:f[h-1].push(f[h]);break;case 78:this.$=[];break;case 79:f[h-1].push(f[h]);break;case 82:this.$=[];break;case 83:f[h-1].push(f[h]);break;case 86:this.$=[];break;case 87:f[h-1].push(f[h]);break;case 90:this.$=[];break;case 91:f[h-1].push(f[h]);break;case 94:this.$=[];break;case 95:f[h-1].push(f[h]);break;case 98:this.$=[f[h]];break;case 99:f[h-1].push(f[h]);break;case 100:this.$=[f[h]];break;case 101:f[h-1].push(f[h])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{13:40,15:[1,20],17:39},{20:42,56:41,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:45,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:48,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:42,56:49,64:43,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:50,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,51]},{72:[1,35],86:52},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:53,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:54,38:56,39:[1,58],43:57,44:[1,59],45:55,47:[2,54]},{28:60,43:61,44:[1,59],47:[2,56]},{13:63,15:[1,20],18:[1,62]},{15:[2,48],18:[2,48]},{33:[2,86],57:64,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:65,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:66,47:[1,67]},{30:68,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:69,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:70,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:71,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:75,33:[2,80],50:72,63:73,64:76,65:[1,44],69:74,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,80]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,51]},{20:75,53:81,54:[2,84],63:82,64:76,65:[1,44],69:83,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:84,47:[1,67]},{47:[2,55]},{4:85,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:86,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:87,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:88,47:[1,67]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:75,33:[2,88],58:89,63:90,64:76,65:[1,44],69:91,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:92,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:93,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,31:94,33:[2,60],63:95,64:76,65:[1,44],69:96,70:77,71:78,72:[1,79],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,66],36:97,63:98,64:76,65:[1,44],69:99,70:77,71:78,72:[1,79],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,22:100,23:[2,52],63:101,64:76,65:[1,44],69:102,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:75,33:[2,92],62:103,63:104,64:76,65:[1,44],69:105,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,106]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:107,72:[1,108],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,109],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,110]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:56,39:[1,58],43:57,44:[1,59],45:112,46:111,47:[2,76]},{33:[2,70],40:113,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,114]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:75,63:116,64:76,65:[1,44],67:115,68:[2,96],69:117,70:77,71:78,72:[1,79],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,118]},{32:119,33:[2,62],74:120,75:[1,121]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:122,74:123,75:[1,121]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,124]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,125]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,109]},{20:75,63:126,64:76,65:[1,44],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:75,33:[2,72],41:127,63:128,64:76,65:[1,44],69:129,70:77,71:78,72:[1,79],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,130]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,131]},{33:[2,63]},{72:[1,133],76:132},{33:[1,134]},{33:[2,69]},{15:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:135,74:136,75:[1,121]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,138],77:[1,137]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],
+48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,139]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],55:[2,55],57:[2,20],61:[2,57],74:[2,81],83:[2,85],87:[2,18],91:[2,89],102:[2,53],105:[2,93],111:[2,19],112:[2,77],117:[2,97],120:[2,63],123:[2,69],124:[2,12],136:[2,75],137:[2,32]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:((null===n||"undefined"==typeof n)&&(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;g<f.length&&(c=this._input.match(this.rules[f[g]]),!c||b&&!(c[0].length>b[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(b.yytext=b.yytext.substr(5,b.yyleng-9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(b.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return b.yytext=e(1,2).replace(/\\"/g,'"'),80;case 32:return b.yytext=e(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return b.yytext=b.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();b.__esModule=!0,b["default"]=c},function(a,b,c){"use strict";function d(){var a=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"ContentStatement"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"ContentStatement"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"ContentStatement"===d.type&&(c||!d.rightStripped)){var e=d.value;d.value=d.value.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.value!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"ContentStatement"===d.type&&(c||!d.leftStripped)){var e=d.value;return d.value=d.value.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.value!==e,d.leftStripped}}var i=c(1)["default"];b.__esModule=!0;var j=c(25),k=i(j);d.prototype=new k["default"],d.prototype.Program=function(a){var b=!this.options.ignoreStandalone,c=!this.isRootSeen;this.isRootSeen=!0;for(var d=a.body,i=0,j=d.length;j>i;i++){var k=d[i],l=this.accept(k);if(l){var m=e(d,i,c),n=f(d,i,c),o=l.openStandalone&&m,p=l.closeStandalone&&n,q=l.inlineStandalone&&m&&n;l.close&&g(d,i,!0),l.open&&h(d,i,!0),b&&q&&(g(d,i),h(d,i)&&"PartialStatement"===k.type&&(k.indent=/([ \t]+$)/.exec(d[i-1].original)[1])),b&&o&&(g((k.program||k.inverse).body),h(d,i)),b&&p&&(g(d,i),h((k.inverse||k.program).body))}}return a},d.prototype.BlockStatement=d.prototype.DecoratorBlock=d.prototype.PartialBlockStatement=function(a){this.accept(a.program),this.accept(a.inverse);var b=a.program||a.inverse,c=a.program&&a.inverse,d=c,i=c;if(c&&c.chained)for(d=c.body[0].program;i.chained;)i=i.body[i.body.length-1].program;var j={open:a.openStrip.open,close:a.closeStrip.close,openStandalone:f(b.body),closeStandalone:e((d||b).body)};if(a.openStrip.close&&g(b.body,null,!0),c){var k=a.inverseStrip;k.open&&h(b.body,null,!0),k.close&&g(d.body,null,!0),a.closeStrip.open&&h(i.body,null,!0),!this.options.ignoreStandalone&&e(b.body)&&f(d.body)&&(h(b.body),g(d.body))}else a.closeStrip.open&&h(b.body,null,!0);return j},d.prototype.Decorator=d.prototype.MustacheStatement=function(a){return a.strip},d.prototype.PartialStatement=d.prototype.CommentStatement=function(a){var b=a.strip||{};return{inlineStandalone:!0,open:b.open,close:b.close}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(){this.parents=[]}function e(a){this.acceptRequired(a,"path"),this.acceptArray(a.params),this.acceptKey(a,"hash")}function f(a){e.call(this,a),this.acceptKey(a,"program"),this.acceptKey(a,"inverse")}function g(a){this.acceptRequired(a,"name"),this.acceptArray(a.params),this.acceptKey(a,"hash")}var h=c(1)["default"];b.__esModule=!0;var i=c(6),j=h(i);d.prototype={constructor:d,mutating:!1,acceptKey:function(a,b){var c=this.accept(a[b]);if(this.mutating){if(c&&!d.prototype[c.type])throw new j["default"]('Unexpected node type "'+c.type+'" found when accepting '+b+" on "+a.type);a[b]=c}},acceptRequired:function(a,b){if(this.acceptKey(a,b),!a[b])throw new j["default"](a.type+" requires "+b)},acceptArray:function(a){for(var b=0,c=a.length;c>b;b++)this.acceptKey(a,b),a[b]||(a.splice(b,1),b--,c--)},accept:function(a){if(a){if(!this[a.type])throw new j["default"]("Unknown type: "+a.type,a);this.current&&this.parents.unshift(this.current),this.current=a;var b=this[a.type](a);return this.current=this.parents.shift(),!this.mutating||b?b:b!==!1?a:void 0}},Program:function(a){this.acceptArray(a.body)},MustacheStatement:e,Decorator:e,BlockStatement:f,DecoratorBlock:f,PartialStatement:g,PartialBlockStatement:function(a){g.call(this,a),this.acceptKey(a,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:e,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(a){this.acceptArray(a.pairs)},HashPair:function(a){this.acceptRequired(a,"value")}},b["default"]=d,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b){if(b=b.path?b.path.original:b,a.path.original!==b){var c={loc:a.path.loc};throw new q["default"](a.path.original+" doesn't match "+b,c)}}function e(a,b){this.source=a,this.start={line:b.first_line,column:b.first_column},this.end={line:b.last_line,column:b.last_column}}function f(a){return/^\[.*\]$/.test(a)?a.substr(1,a.length-2):a}function g(a,b){return{open:"~"===a.charAt(2),close:"~"===b.charAt(b.length-3)}}function h(a){return a.replace(/^\{\{~?\!-?-?/,"").replace(/-?-?~?\}\}$/,"")}function i(a,b,c){c=this.locInfo(c);for(var d=a?"@":"",e=[],f=0,g="",h=0,i=b.length;i>h;h++){var j=b[h].part,k=b[h].original!==j;if(d+=(b[h].separator||"")+j,k||".."!==j&&"."!==j&&"this"!==j)e.push(j);else{if(e.length>0)throw new q["default"]("Invalid path: "+d,{loc:c});".."===j&&(f++,g+="../")}}return{type:"PathExpression",data:a,depth:f,parts:e,original:d,loc:c}}function j(a,b,c,d,e,f){var g=d.charAt(3)||d.charAt(2),h="{"!==g&&"&"!==g,i=/\*/.test(d);return{type:i?"Decorator":"MustacheStatement",path:a,params:b,hash:c,escaped:h,strip:e,loc:this.locInfo(f)}}function k(a,b,c,e){d(a,c),e=this.locInfo(e);var f={type:"Program",body:b,strip:{},loc:e};return{type:"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:f,openStrip:{},inverseStrip:{},closeStrip:{},loc:e}}function l(a,b,c,e,f,g){e&&e.path&&d(a,e);var h=/\*/.test(a.open);b.blockParams=a.blockParams;var i=void 0,j=void 0;if(c){if(h)throw new q["default"]("Unexpected inverse block on decorator",c);c.chain&&(c.program.body[0].closeStrip=e.strip),j=c.strip,i=c.program}return f&&(f=i,i=b,b=f),{type:h?"DecoratorBlock":"BlockStatement",path:a.path,params:a.params,hash:a.hash,program:b,inverse:i,openStrip:a.strip,inverseStrip:j,closeStrip:e&&e.strip,loc:this.locInfo(g)}}function m(a,b){if(!b&&a.length){var c=a[0].loc,d=a[a.length-1].loc;c&&d&&(b={source:c.source,start:{line:c.start.line,column:c.start.column},end:{line:d.end.line,column:d.end.column}})}return{type:"Program",body:a,strip:{},loc:b}}function n(a,b,c,e){return d(a,c),{type:"PartialBlockStatement",name:a.path,params:a.params,hash:a.hash,program:b,openStrip:a.strip,closeStrip:c&&c.strip,loc:this.locInfo(e)}}var o=c(1)["default"];b.__esModule=!0,b.SourceLocation=e,b.id=f,b.stripFlags=g,b.stripComment=h,b.preparePath=i,b.prepareMustache=j,b.prepareRawBlock=k,b.prepareBlock=l,b.prepareProgram=m,b.preparePartialBlock=n;var p=c(6),q=o(p)},function(a,b,c){"use strict";function d(){}function e(a,b,c){if(null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a,b),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function f(a,b,c){function d(){var d=c.parse(a,b),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}function e(a,b){return f||(f=d()),f.call(this,a,b)}if(void 0===b&&(b={}),null==a||"string"!=typeof a&&"Program"!==a.type)throw new k["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var f=void 0;return e._setup=function(a){return f||(f=d()),f._setup(a)},e._child=function(a,b,c,e){return f||(f=d()),f._child(a,b,c,e)},e}function g(a,b){if(a===b)return!0;if(l.isArray(a)&&l.isArray(b)&&a.length===b.length){for(var c=0;c<a.length;c++)if(!g(a[c],b[c]))return!1;return!0}}function h(a){if(!a.path.parts){var b=a.path;a.path={type:"PathExpression",data:!1,depth:0,parts:[b.original+""],original:b.original+"",loc:b.loc}}}var i=c(1)["default"];b.__esModule=!0,b.Compiler=d,b.precompile=e,b.compile=f;var j=c(6),k=i(j),l=c(5),m=c(21),n=i(m),o=[].slice;d.prototype={compiler:d,equals:function(a){var b=this.opcodes.length;if(a.opcodes.length!==b)return!1;for(var c=0;b>c;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!g(d.args,e.args))return!1}b=this.children.length;for(var c=0;b>c;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds,b.blockParams=b.blockParams||[];var c=b.knownHelpers;if(b.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)d in c&&(b.knownHelpers[d]=c[d]);return this.accept(a)},compileProgram:function(a){var b=new this.compiler,c=b.compile(a,this.options),d=this.guid++;return this.usePartial=this.usePartial||c.usePartial,this.children[d]=c,this.useDepths=this.useDepths||c.useDepths,d},accept:function(a){if(!this[a.type])throw new k["default"]("Unknown type: "+a.type,a);this.sourceNode.unshift(a);var b=this[a.type](a);return this.sourceNode.shift(),b},Program:function(a){this.options.blockParams.unshift(a.blockParams);for(var b=a.body,c=b.length,d=0;c>d;d++)this.accept(b[d]);return this.options.blockParams.shift(),this.isSimple=1===c,this.blockParams=a.blockParams?a.blockParams.length:0,this},BlockStatement:function(a){h(a);var b=a.program,c=a.inverse;b=b&&this.compileProgram(b),c=c&&this.compileProgram(c);var d=this.classifySexpr(a);"helper"===d?this.helperSexpr(a,b,c):"simple"===d?(this.simpleSexpr(a),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("blockValue",a.path.original)):(this.ambiguousSexpr(a,b,c),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(a){var b=a.program&&this.compileProgram(a.program),c=this.setupFullMustacheParams(a,b,void 0),d=a.path;this.useDecorators=!0,this.opcode("registerDecorator",c.length,d.original)},PartialStatement:function(a){this.usePartial=!0;var b=a.program;b&&(b=this.compileProgram(a.program));var c=a.params;if(c.length>1)throw new k["default"]("Unsupported number of partial arguments: "+c.length,a);c.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):c.push({type:"PathExpression",parts:[],depth:0}));var d=a.name.original,e="SubExpression"===a.name.type;e&&this.accept(a.name),this.setupFullMustacheParams(a,b,void 0,!0);var f=a.indent||"";this.options.preventIndent&&f&&(this.opcode("appendContent",f),f=""),this.opcode("invokePartial",e,d,f),this.opcode("append")},PartialBlockStatement:function(a){this.PartialStatement(a)},MustacheStatement:function(a){this.SubExpression(a),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(a){this.DecoratorBlock(a)},ContentStatement:function(a){a.value&&this.opcode("appendContent",a.value)},CommentStatement:function(){},SubExpression:function(a){h(a);var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ambiguousSexpr:function(a,b,c){var d=a.path,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),d.strict=!0,this.accept(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.path;b.strict=!0,this.accept(b),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.path,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new k["default"]("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.strict=!0,e.falsy=!0,this.accept(e),this.opcode("invokeHelper",d.length,e.original,n["default"].helpers.simpleId(e))}},PathExpression:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0],c=n["default"].helpers.scopedId(a),d=!a.depth&&!c&&this.blockParamIndex(b);d?this.opcode("lookupBlockParam",d,a.parts):b?a.data?(this.options.data=!0,this.opcode("lookupData",a.depth,a.parts,a.strict)):this.opcode("lookupOnContext",a.parts,a.falsy,a.strict,c):this.opcode("pushContext")},StringLiteral:function(a){this.opcode("pushString",a.value)},NumberLiteral:function(a){this.opcode("pushLiteral",a.value)},BooleanLiteral:function(a){this.opcode("pushLiteral",a.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(a){var b=a.pairs,c=0,d=b.length;for(this.opcode("pushHash");d>c;c++)this.pushParam(b[c].value);for(;c--;)this.opcode("assignToHash",b[c].key);this.opcode("popHash")},opcode:function(a){this.opcodes.push({opcode:a,args:o.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(a){a&&(this.useDepths=!0)},classifySexpr:function(a){var b=n["default"].helpers.simpleId(a.path),c=b&&!!this.blockParamIndex(a.path.parts[0]),d=!c&&n["default"].helpers.helperExpression(a),e=!c&&(d||b);if(e&&!d){var f=a.path.parts[0],g=this.options;g.knownHelpers[f]?d=!0:g.knownHelpersOnly&&(e=!1)}return d?"helper":e?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;c>b;b++)this.pushParam(a[b])},pushParam:function(a){var b=null!=a.value?a.value:a.original||"";if(this.stringParams)b.replace&&(b=b.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",b,a.type),"SubExpression"===a.type&&this.accept(a);else{if(this.trackIds){var c=void 0;if(!a.parts||n["default"].helpers.scopedId(a)||a.depth||(c=this.blockParamIndex(a.parts[0])),c){var d=a.parts.slice(1).join(".");this.opcode("pushId","BlockParam",c,d)}else b=a.original||b,b.replace&&(b=b.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",a.type,b)}this.accept(a)}},setupFullMustacheParams:function(a,b,c,d){var e=a.params;return this.pushParams(e),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.accept(a.hash):this.opcode("emptyHash",d),e},blockParamIndex:function(a){for(var b=0,c=this.options.blockParams.length;c>b;b++){var d=this.options.blockParams[b],e=d&&l.indexOf(d,a);if(d&&e>=0)return[b,e]}}}},function(a,b,c){"use strict";function d(a){this.value=a}function e(){}function f(a,b,c,d){var e=b.popStack(),f=0,g=c.length;for(a&&g--;g>f;f++)e=b.nameLookup(e,c[f],d);return a?[b.aliasable("container.strict"),"(",e,", ",b.quotedString(c[f]),")"]:e}var g=c(1)["default"];b.__esModule=!0;var h=c(4),i=c(6),j=g(i),k=c(5),l=c(29),m=g(l);e.prototype={nameLookup:function(a,b){return e.isValidJavaScriptVariableName(b)?[a,".",b]:[a,"[",JSON.stringify(b),"]"]},depthedLookup:function(a){return[this.aliasable("container.lookup"),'(depths, "',a,'")']},compilerInfo:function(){var a=h.COMPILER_REVISION,b=h.REVISION_CHANGES[a];return[a,b]},appendToBuffer:function(a,b,c){return k.isArray(a)||(a=[a]),a=this.source.wrap(a,b),this.environment.isSimple?["return ",a,";"]:c?["buffer += ",a,";"]:(a.appendToBuffer=!0,a)},initializeBuffer:function(){return this.quotedString("")},compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.useDepths||a.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||a.useBlockParams;var e=a.opcodes,f=void 0,g=void 0,h=void 0,i=void 0;for(h=0,i=e.length;i>h;h++)f=e[h],this.source.currentLocation=f.loc,g=g||f.loc,this[f.opcode].apply(this,f.args);if(this.source.currentLocation=g,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new j["default"]("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),d?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var k=this.createFunctionContext(d);if(this.isChild)return k;var l={compiler:this.compilerInfo(),main:k};this.decorators&&(l.main_d=this.decorators,l.useDecorators=!0);var m=this.context,n=m.programs,o=m.decorators;for(h=0,i=n.length;i>h;h++)n[h]&&(l[h]=n[h],o[h]&&(l[h+"_d"]=o[h],l.useDecorators=!0));return this.environment.usePartial&&(l.usePartial=!0),this.options.data&&(l.useData=!0),this.useDepths&&(l.useDepths=!0),this.useBlockParams&&(l.useBlockParams=!0),this.options.compat&&(l.compat=!0),d?l.compilerOptions=this.options:(l.compiler=JSON.stringify(l.compiler),this.source.currentLocation={start:{line:1,column:0}},l=this.objectLiteral(l),b.srcName?(l=l.toStringWithSourceMap({file:b.destName}),l.map=l.map&&l.map.toString()):l=l.toString()),l},preamble:function(){this.lastContext=0,this.source=new m["default"](this.options.srcName),this.decorators=new m["default"](this.options.srcName)},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));var d=0;for(var e in this.aliases){var f=this.aliases[e];this.aliases.hasOwnProperty(e)&&f.children&&f.referenceCount>1&&(b+=", alias"+ ++d+"="+e,f.children[0]="alias"+d)}var g=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&g.push("blockParams"),this.useDepths&&g.push("depths");var h=this.mergeSource(b);return a?(g.push(h),Function.apply(this,g)):this.source.wrap(["function(",g.join(","),") {\n ",h,"}"])},mergeSource:function(a){var b=this.environment.isSimple,c=!this.forceBuffer,d=void 0,e=void 0,f=void 0,g=void 0;return this.source.each(function(a){a.appendToBuffer?(f?a.prepend(" + "):f=a,g=a):(f&&(e?f.prepend("buffer += "):d=!0,g.add(";"),f=g=void 0),e=!0,b||(c=!1))}),c?f?(f.prepend("return "),g.add(";")):e||this.source.push('return "";'):(a+=", buffer = "+(d?"":this.initializeBuffer()),f?(f.prepend("return buffer + "),g.add(";")):this.source.push("return buffer;")),a&&this.source.prepend("var "+a.substring(2)+(d?"":";\n")),this.source.merge()},blockValue:function(a){var b=this.aliasable("helpers.blockHelperMissing"),c=[this.contextName(0)];this.setupHelperArgs(a,0,c);var d=this.popStack();c.splice(1,0,d),this.push(this.source.functionCall(b,"call",c))},ambiguousBlockValue:function(){var a=this.aliasable("helpers.blockHelperMissing"),b=[this.contextName(0)];this.setupHelperArgs("",0,b,!0),this.flushInline();var c=this.topStack();b.splice(1,0,c),this.pushSource(["if (!",this.lastHelper,") { ",c," = ",this.source.functionCall(a,"call",b),"}"])},appendContent:function(a){this.pendingContent?a=this.pendingContent+a:this.pendingLocation=this.source.currentLocation,this.pendingContent=a},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var a=this.popStack();this.pushSource(["if (",a," != null) { ",this.appendToBuffer(a,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c,d){var e=0;d||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[e++])),this.resolvePath("context",a,e,b,c)},lookupBlockParam:function(a,b){this.useBlockParams=!0,this.push(["blockParams[",a[0],"][",a[1],"]"]),this.resolvePath("context",b,1)},lookupData:function(a,b,c){a?this.pushStackLiteral("container.data(data, "+a+")"):this.pushStackLiteral("data"),this.resolvePath("data",b,0,!0,c)},resolvePath:function(a,b,c,d,e){var g=this;if(this.options.strict||this.options.assumeObjects)return void this.push(f(this.options.strict&&e,this,b,a));for(var h=b.length;h>c;c++)this.replaceStack(function(e){var f=g.nameLookup(e,b[c],a);return d?[" && ",f]:[" != null ? ",f," : ",e]})},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"SubExpression"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(a){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(a?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(a.ids)),this.stringParams&&(this.push(this.objectLiteral(a.contexts)),this.push(this.objectLiteral(a.types))),this.push(this.objectLiteral(a.values))},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},registerDecorator:function(a,b){var c=this.nameLookup("decorators",b,"decorator"),d=this.setupHelperArgs(b,a);this.decorators.push(["fn = ",this.decorators.functionCall(c,"",["fn","props","container",d])," || fn;"])},invokeHelper:function(a,b,c){var d=this.popStack(),e=this.setupHelper(a,b),f=c?[e.name," || "]:"",g=["("].concat(f,d);this.options.strict||g.push(" || ",this.aliasable("helpers.helperMissing")),g.push(")"),this.push(this.source.functionCall(g,"call",e.callParams))},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(this.source.functionCall(c.name,"call",c.callParams))},invokeAmbiguous:function(a,b){this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper"),f=["(","(helper = ",e," || ",c,")"];this.options.strict||(f[0]="(helper = ",f.push(" != null ? helper : ",this.aliasable("helpers.helperMissing"))),this.push(["(",f,d.paramsInit?["),(",d.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",d.callParams)," : helper))"])},invokePartial:function(a,b,c){var d=[],e=this.setupParams(b,1,d);a&&(b=this.popStack(),delete e.name),c&&(e.indent=JSON.stringify(c)),e.helpers="helpers",e.partials="partials",e.decorators="container.decorators",a?d.unshift(b):d.unshift(this.nameLookup("partials",b,"partial")),this.options.compat&&(e.depths="depths"),e=this.objectLiteral(e),
+d.push(e),this.push(this.source.functionCall("container.invokePartial","",d))},assignToHash:function(a){var b=this.popStack(),c=void 0,d=void 0,e=void 0;this.trackIds&&(e=this.popStack()),this.stringParams&&(d=this.popStack(),c=this.popStack());var f=this.hash;c&&(f.contexts[a]=c),d&&(f.types[a]=d),e&&(f.ids[a]=e),f.values[a]=b},pushId:function(a,b,c){"BlockParam"===a?this.pushStackLiteral("blockParams["+b[0]+"].path["+b[1]+"]"+(c?" + "+JSON.stringify("."+c):"")):"PathExpression"===a?this.pushString(b):"SubExpression"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:e,compileChildren:function(a,b){for(var c=a.children,d=void 0,e=void 0,f=0,g=c.length;g>f;f++){d=c[f],e=new this.compiler;var h=this.matchExistingProgram(d);null==h?(this.context.programs.push(""),h=this.context.programs.length,d.index=h,d.name="program"+h,this.context.programs[h]=e.compile(d,b,this.context,!this.precompile),this.context.decorators[h]=e.decorators,this.context.environments[h]=d,this.useDepths=this.useDepths||e.useDepths,this.useBlockParams=this.useBlockParams||e.useBlockParams):(d.index=h,d.name="program"+h,this.useDepths=this.useDepths||d.useDepths,this.useBlockParams=this.useBlockParams||d.useBlockParams)}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;c>b;b++){var d=this.context.environments[b];if(d&&d.equals(a))return b}},programExpression:function(a){var b=this.environment.children[a],c=[b.index,"data",b.blockParams];return(this.useBlockParams||this.useDepths)&&c.push("blockParams"),this.useDepths&&c.push("depths"),"container.program("+c.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},push:function(a){return a instanceof d||(a=this.source.wrap(a)),this.inlineStack.push(a),a},pushStackLiteral:function(a){this.push(new d(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),a&&this.source.push(a)},replaceStack:function(a){var b=["("],c=void 0,e=void 0,f=void 0;if(!this.isInline())throw new j["default"]("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof d)c=[g.value],b=["(",c],f=!0;else{e=!0;var h=this.incrStack();b=["((",this.push(h)," = ",g,")"],c=this.topStack()}var i=a.call(this,c);f||this.popStack(),e&&this.stackSlot--,this.push(b.concat(i,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;this.inlineStack=[];for(var b=0,c=a.length;c>b;b++){var e=a[b];if(e instanceof d)this.compileStack.push(e);else{var f=this.incrStack();this.pushSource([f," = ",e,";"]),this.compileStack.push(f)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),c=(b?this.inlineStack:this.compileStack).pop();if(!a&&c instanceof d)return c.value;if(!b){if(!this.stackSlot)throw new j["default"]("Invalid stack pop");this.stackSlot--}return c},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof d?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return this.source.quotedString(a)},objectLiteral:function(a){return this.source.objectLiteral(a)},aliasable:function(a){var b=this.aliases[a];return b?(b.referenceCount++,b):(b=this.aliases[a]=this.source.wrap(a),b.aliasable=!0,b.referenceCount=1,b)},setupHelper:function(a,b,c){var d=[],e=this.setupHelperArgs(b,a,d,c),f=this.nameLookup("helpers",b,"helper"),g=this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : {}");return{params:d,paramsInit:e,name:f,callParams:[g].concat(d)}},setupParams:function(a,b,c){var d={},e=[],f=[],g=[],h=!c,i=void 0;h&&(c=[]),d.name=this.quotedString(a),d.hash=this.popStack(),this.trackIds&&(d.hashIds=this.popStack()),this.stringParams&&(d.hashTypes=this.popStack(),d.hashContexts=this.popStack());var j=this.popStack(),k=this.popStack();(k||j)&&(d.fn=k||"container.noop",d.inverse=j||"container.noop");for(var l=b;l--;)i=this.popStack(),c[l]=i,this.trackIds&&(g[l]=this.popStack()),this.stringParams&&(f[l]=this.popStack(),e[l]=this.popStack());return h&&(d.args=this.source.generateArray(c)),this.trackIds&&(d.ids=this.source.generateArray(g)),this.stringParams&&(d.types=this.source.generateArray(f),d.contexts=this.source.generateArray(e)),this.options.data&&(d.data="data"),this.useBlockParams&&(d.blockParams="blockParams"),d},setupHelperArgs:function(a,b,c,d){var e=this.setupParams(a,b,c);return e=this.objectLiteral(e),d?(this.useRegister("options"),c.push("options"),["options=",e]):c?(c.push(e),""):e}},function(){for(var a="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),b=e.RESERVED_WORDS={},c=0,d=a.length;d>c;c++)b[a[c]]=!0}(),e.isValidJavaScriptVariableName=function(a){return!e.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},b["default"]=e,a.exports=b["default"]},function(a,b,c){"use strict";function d(a,b,c){if(f.isArray(a)){for(var d=[],e=0,g=a.length;g>e;e++)d.push(b.wrap(a[e],c));return d}return"boolean"==typeof a||"number"==typeof a?a+"":a}function e(a){this.srcFile=a,this.source=[]}b.__esModule=!0;var f=c(5),g=void 0;try{}catch(h){}g||(g=function(a,b,c,d){this.src="",d&&this.add(d)},g.prototype={add:function(a){f.isArray(a)&&(a=a.join("")),this.src+=a},prepend:function(a){f.isArray(a)&&(a=a.join("")),this.src=a+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),e.prototype={isEmpty:function(){return!this.source.length},prepend:function(a,b){this.source.unshift(this.wrap(a,b))},push:function(a,b){this.source.push(this.wrap(a,b))},merge:function(){var a=this.empty();return this.each(function(b){a.add([" ",b,"\n"])}),a},each:function(a){for(var b=0,c=this.source.length;c>b;b++)a(this.source[b])},empty:function(){var a=this.currentLocation||{start:{}};return new g(a.start.line,a.start.column,this.srcFile)},wrap:function(a){var b=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return a instanceof g?a:(a=d(a,this,b),new g(b.start.line,b.start.column,this.srcFile,a))},functionCall:function(a,b,c){return c=this.generateList(c),this.wrap([a,b?"."+b+"(":"(",c,")"])},quotedString:function(a){return'"'+(a+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)if(a.hasOwnProperty(c)){var e=d(a[c],this);"undefined"!==e&&b.push([this.quotedString(c),":",e])}var f=this.generateList(b);return f.prepend("{"),f.add("}"),f},generateList:function(a){for(var b=this.empty(),c=0,e=a.length;e>c;c++)c&&b.add(","),b.add(d(a[c],this));return b},generateArray:function(a){var b=this.generateList(a);return b.prepend("["),b.add("]"),b}},b["default"]=e,a.exports=b["default"]}])}); \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/jquery.min.js b/admin/survey/api/apidoc/vendor/jquery.min.js
new file mode 100644
index 0000000..69b6ac0
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.2.1 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!k.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=R.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c}catch(e){}O.set(a,b,c);
+}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.rnamespace||a.rnamespace.test(g.namespace))&&(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},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(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(b,c,e){var f=!0,g="width"===c?b.offsetWidth:b.offsetHeight,h=Ca(b),i="border-box"===n.css(b,"boxSizing",!1,h);if(d.msFullscreenElement&&a.top!==a&&b.getClientRects().length&&(g=Math.round(100*b.getBoundingClientRect()[c])),0>=g||null==g){if(g=Fa(b,c,h),(0>g||null==g)&&(g=b.style[c]),Ba.test(g))return g;f=i&&(l.boxSizingReliable()||g===b.style[c]),g=parseFloat(g)||0}return g+Oa(b,c,e||(i?"border":"content"),f,h)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,
+e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(void 0===a||"boolean"===c)&&(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){return n.trim(a.value)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var hb=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!hb.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,hb.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var ib=a.location,jb=n.now(),kb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return(!c||c.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+b),c};var lb=/#.*$/,mb=/([?&])_=[^&]*/,nb=/^(.*?):[ \t]*([^\r\n]*)$/gm,ob=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,pb=/^(?:GET|HEAD)$/,qb=/^\/\//,rb={},sb={},tb="*/".concat("*"),ub=d.createElement("a");ub.href=ib.href;function vb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function wb(a,b,c,d){var e={},f=a===sb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function xb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function yb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function zb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ib.href,type:"GET",isLocal:ob.test(ib.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":tb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?xb(xb(a,n.ajaxSettings),b):xb(n.ajaxSettings,a)},ajaxPrefilter:vb(rb),ajaxTransport:vb(sb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=nb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||ib.href)+"").replace(lb,"").replace(qb,ib.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=ub.protocol+"//"+ub.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),wb(rb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!pb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(kb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=mb.test(f)?f.replace(mb,"$1_="+jb++):f+(kb.test(f)?"&":"?")+"_="+jb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+tb+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=wb(sb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=yb(m,x,d)),u=zb(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,(b||!y)&&(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Ab=/%20/g,Bb=/\[\]$/,Cb=/\r?\n/g,Db=/^(?:submit|button|image|reset|file)$/i,Eb=/^(?:input|select|textarea|keygen)/i;function Fb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Bb.test(a)?d(a,e):Fb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Fb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Fb(c,a[c],b,e);return d.join("&").replace(Ab,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Eb.test(this.nodeName)&&!Db.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Cb,"\r\n")}}):{name:b.name,value:c.replace(Cb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Gb={0:200,1223:204},Hb=n.ajaxSettings.xhr();l.cors=!!Hb&&"withCredentials"in Hb,l.ajax=Hb=!!Hb,n.ajaxTransport(function(b){var c,d;return l.cors||Hb&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Gb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Ib=[],Jb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Ib.pop()||n.expando+"_"+jb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Jb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Jb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Jb,"$1"+e):b.jsonp!==!1&&(b.url+=(kb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Ib.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),l.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||(l.createHTMLDocument?d.implementation.createHTMLDocument(""):d);var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Kb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Kb)return Kb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(g,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Lb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Lb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Lb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Mb=a.jQuery,Nb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Nb),b&&a.jQuery===n&&(a.jQuery=Mb),n},b||(a.jQuery=a.$=n),n});
diff --git a/admin/survey/api/apidoc/vendor/list.min.js b/admin/survey/api/apidoc/vendor/list.min.js
new file mode 100644
index 0000000..5d28700
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/list.min.js
@@ -0,0 +1,2 @@
+// List.js v1.3.0 (http://www.listjs.com) by Jonny Strömberg (http://javve.com)
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){!function(c,d){"use strict";var e=c.document,f=a("./src/utils/get-by-class"),g=a("./src/utils/extend"),h=a("./src/utils/index-of"),i=a("./src/utils/events"),j=a("./src/utils/to-string"),k=a("./src/utils/natural-sort"),l=a("./src/utils/classes"),m=a("./src/utils/get-attribute"),n=a("./src/utils/to-array"),o=function(b,c,p){var q,r=this,s=a("./src/item")(r),t=a("./src/add-async")(r);q={start:function(){r.listClass="list",r.searchClass="search",r.sortClass="sort",r.page=1e4,r.i=1,r.items=[],r.visibleItems=[],r.matchingItems=[],r.searched=!1,r.filtered=!1,r.searchColumns=d,r.handlers={updated:[]},r.plugins={},r.valueNames=[],r.utils={getByClass:f,extend:g,indexOf:h,events:i,toString:j,naturalSort:k,classes:l,getAttribute:m,toArray:n},r.utils.extend(r,c),r.listContainer="string"==typeof b?e.getElementById(b):b,r.listContainer&&(r.list=f(r.listContainer,r.listClass,!0),r.parse=a("./src/parse")(r),r.templater=a("./src/templater")(r),r.search=a("./src/search")(r),r.filter=a("./src/filter")(r),r.sort=a("./src/sort")(r),this.handlers(),this.items(),r.update(),this.plugins())},handlers:function(){for(var a in r.handlers)r[a]&&r.on(a,r[a])},items:function(){r.parse(r.list),p!==d&&r.add(p)},plugins:function(){for(var a=0;a<r.plugins.length;a++){var b=r.plugins[a];r[b.name]=b,b.init(r,o)}}},this.reIndex=function(){r.items=[],r.visibleItems=[],r.matchingItems=[],r.searched=!1,r.filtered=!1,r.parse(r.list)},this.toJSON=function(){for(var a=[],b=0,c=r.items.length;b<c;b++)a.push(r.items[b].values());return a},this.add=function(a,b){if(0!==a.length){if(b)return void t(a,b);var c=[],e=!1;a[0]===d&&(a=[a]);for(var f=0,g=a.length;f<g;f++){var h=null;e=r.items.length>r.page,h=new s(a[f],d,e),r.items.push(h),c.push(h)}return r.update(),c}},this.show=function(a,b){return this.i=a,this.page=b,r.update(),r},this.remove=function(a,b,c){for(var d=0,e=0,f=r.items.length;e<f;e++)r.items[e].values()[a]==b&&(r.templater.remove(r.items[e],c),r.items.splice(e,1),f--,e--,d++);return r.update(),d},this.get=function(a,b){for(var c=[],d=0,e=r.items.length;d<e;d++){var f=r.items[d];f.values()[a]==b&&c.push(f)}return c},this.size=function(){return r.items.length},this.clear=function(){return r.templater.clear(),r.items=[],r},this.on=function(a,b){return r.handlers[a].push(b),r},this.off=function(a,b){var c=r.handlers[a],d=h(c,b);return d>-1&&c.splice(d,1),r},this.trigger=function(a){for(var b=r.handlers[a].length;b--;)r.handlers[a][b](r);return r},this.reset={filter:function(){for(var a=r.items,b=a.length;b--;)a[b].filtered=!1;return r},search:function(){for(var a=r.items,b=a.length;b--;)a[b].found=!1;return r}},this.update=function(){var a=r.items,b=a.length;r.visibleItems=[],r.matchingItems=[],r.templater.clear();for(var c=0;c<b;c++)a[c].matching()&&r.matchingItems.length+1>=r.i&&r.visibleItems.length<r.page?(a[c].show(),r.visibleItems.push(a[c]),r.matchingItems.push(a[c])):a[c].matching()?(r.matchingItems.push(a[c]),a[c].hide()):a[c].hide();return r.trigger("updated"),r},q.start()};"function"==typeof define&&define.amd&&define(function(){return o}),b.exports=o,c.List=o}(window)},{"./src/add-async":2,"./src/filter":3,"./src/item":4,"./src/parse":5,"./src/search":6,"./src/sort":7,"./src/templater":8,"./src/utils/classes":9,"./src/utils/events":10,"./src/utils/extend":11,"./src/utils/get-attribute":12,"./src/utils/get-by-class":13,"./src/utils/index-of":14,"./src/utils/natural-sort":15,"./src/utils/to-array":16,"./src/utils/to-string":17}],2:[function(a,b,c){b.exports=function(a){var b=function(c,d,e){var f=c.splice(0,50);e=e||[],e=e.concat(a.add(f)),c.length>0?setTimeout(function(){b(c,d,e)},1):(a.update(),d(e))};return b}},{}],3:[function(a,b,c){b.exports=function(a){return a.handlers.filterStart=a.handlers.filterStart||[],a.handlers.filterComplete=a.handlers.filterComplete||[],function(b){if(a.trigger("filterStart"),a.i=1,a.reset.filter(),void 0===b)a.filtered=!1;else{a.filtered=!0;for(var c=a.items,d=0,e=c.length;d<e;d++){var f=c[d];b(f)?f.filtered=!0:f.filtered=!1}}return a.update(),a.trigger("filterComplete"),a.visibleItems}}},{}],4:[function(a,b,c){b.exports=function(a){return function(b,c,d){var e=this;this._values={},this.found=!1,this.filtered=!1;var f=function(b,c,d){if(void 0===c)d?e.values(b,d):e.values(b);else{e.elm=c;var f=a.templater.get(e,b);e.values(f)}};this.values=function(b,c){if(void 0===b)return e._values;for(var d in b)e._values[d]=b[d];c!==!0&&a.templater.set(e,e.values())},this.show=function(){a.templater.show(e)},this.hide=function(){a.templater.hide(e)},this.matching=function(){return a.filtered&&a.searched&&e.found&&e.filtered||a.filtered&&!a.searched&&e.filtered||!a.filtered&&a.searched&&e.found||!a.filtered&&!a.searched},this.visible=function(){return!(!e.elm||e.elm.parentNode!=a.list)},f(b,c,d)}}},{}],5:[function(a,b,c){b.exports=function(b){var c=a("./item")(b),d=function(a){for(var b=a.childNodes,c=[],d=0,e=b.length;d<e;d++)void 0===b[d].data&&c.push(b[d]);return c},e=function(a,d){for(var e=0,f=a.length;e<f;e++)b.items.push(new c(d,a[e]))},f=function(a,c){var d=a.splice(0,50);e(d,c),a.length>0?setTimeout(function(){f(a,c)},1):(b.update(),b.trigger("parseComplete"))};return b.handlers.parseComplete=b.handlers.parseComplete||[],function(){var a=d(b.list),c=b.valueNames;b.indexAsync?f(a,c):e(a,c)}}},{"./item":4}],6:[function(a,b,c){b.exports=function(a){var b,c,d,e,f={resetList:function(){a.i=1,a.templater.clear(),e=void 0},setOptions:function(a){2==a.length&&a[1]instanceof Array?c=a[1]:2==a.length&&"function"==typeof a[1]?(c=void 0,e=a[1]):3==a.length?(c=a[1],e=a[2]):c=void 0},setColumns:function(){0!==a.items.length&&void 0===c&&(c=void 0===a.searchColumns?f.toArray(a.items[0].values()):a.searchColumns)},setSearchString:function(b){b=a.utils.toString(b).toLowerCase(),b=b.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"),d=b},toArray:function(a){var b=[];for(var c in a)b.push(c);return b}},g={list:function(){for(var b=0,c=a.items.length;b<c;b++)g.item(a.items[b])},item:function(a){a.found=!1;for(var b=0,d=c.length;b<d;b++)if(g.values(a.values(),c[b]))return void(a.found=!0)},values:function(c,e){return!!(c.hasOwnProperty(e)&&(b=a.utils.toString(c[e]).toLowerCase(),""!==d&&b.search(d)>-1))},reset:function(){a.reset.search(),a.searched=!1}},h=function(b){return a.trigger("searchStart"),f.resetList(),f.setSearchString(b),f.setOptions(arguments),f.setColumns(),""===d?g.reset():(a.searched=!0,e?e(d,c):g.list()),a.update(),a.trigger("searchComplete"),a.visibleItems};return a.handlers.searchStart=a.handlers.searchStart||[],a.handlers.searchComplete=a.handlers.searchComplete||[],a.utils.events.bind(a.utils.getByClass(a.listContainer,a.searchClass),"keyup",function(b){var c=b.target||b.srcElement,d=""===c.value&&!a.searched;d||h(c.value)}),a.utils.events.bind(a.utils.getByClass(a.listContainer,a.searchClass),"input",function(a){var b=a.target||a.srcElement;""===b.value&&h("")}),h}},{}],7:[function(a,b,c){b.exports=function(a){a.sortFunction=a.sortFunction||function(b,c,d){return d.desc="desc"==d.order,a.utils.naturalSort(b.values()[d.valueName],c.values()[d.valueName],d)};var b={els:void 0,clear:function(){for(var c=0,d=b.els.length;c<d;c++)a.utils.classes(b.els[c]).remove("asc"),a.utils.classes(b.els[c]).remove("desc")},getOrder:function(b){var c=a.utils.getAttribute(b,"data-order");return"asc"==c||"desc"==c?c:a.utils.classes(b).has("desc")?"asc":a.utils.classes(b).has("asc")?"desc":"asc"},getInSensitive:function(b,c){var d=a.utils.getAttribute(b,"data-insensitive");"false"===d?c.insensitive=!1:c.insensitive=!0},setOrder:function(c){for(var d=0,e=b.els.length;d<e;d++){var f=b.els[d];if(a.utils.getAttribute(f,"data-sort")===c.valueName){var g=a.utils.getAttribute(f,"data-order");"asc"==g||"desc"==g?g==c.order&&a.utils.classes(f).add(c.order):a.utils.classes(f).add(c.order)}}}},c=function(){a.trigger("sortStart");var c={},d=arguments[0].currentTarget||arguments[0].srcElement||void 0;d?(c.valueName=a.utils.getAttribute(d,"data-sort"),b.getInSensitive(d,c),c.order=b.getOrder(d)):(c=arguments[1]||c,c.valueName=arguments[0],c.order=c.order||"asc",c.insensitive="undefined"==typeof c.insensitive||c.insensitive),b.clear(),b.setOrder(c),c.sortFunction=c.sortFunction||a.sortFunction,a.items.sort(function(a,b){var d="desc"===c.order?-1:1;return c.sortFunction(a,b,c)*d}),a.update(),a.trigger("sortComplete")};return a.handlers.sortStart=a.handlers.sortStart||[],a.handlers.sortComplete=a.handlers.sortComplete||[],b.els=a.utils.getByClass(a.listContainer,a.sortClass),a.utils.events.bind(b.els,"click",c),a.on("searchStart",b.clear),a.on("filterStart",b.clear),c}},{}],8:[function(a,b,c){var d=function(a){var b,c=this,d=function(){b=c.getItemSource(a.item),b&&(b=c.clearSourceItem(b,a.valueNames))};this.clearSourceItem=function(b,c){for(var d=0,e=c.length;d<e;d++){var f;if(c[d].data)for(var g=0,h=c[d].data.length;g<h;g++)b.setAttribute("data-"+c[d].data[g],"");else c[d].attr&&c[d].name?(f=a.utils.getByClass(b,c[d].name,!0),f&&f.setAttribute(c[d].attr,"")):(f=a.utils.getByClass(b,c[d],!0),f&&(f.innerHTML=""));f=void 0}return b},this.getItemSource=function(b){if(void 0===b){for(var c=a.list.childNodes,d=0,e=c.length;d<e;d++)if(void 0===c[d].data)return c[d].cloneNode(!0)}else{if(/<tr[\s>]/g.exec(b)){var f=document.createElement("tbody");return f.innerHTML=b,f.firstChild}if(b.indexOf("<")!==-1){var g=document.createElement("div");return g.innerHTML=b,g.firstChild}var h=document.getElementById(a.item);if(h)return h}},this.get=function(b,d){c.create(b);for(var e={},f=0,g=d.length;f<g;f++){var h;if(d[f].data)for(var i=0,j=d[f].data.length;i<j;i++)e[d[f].data[i]]=a.utils.getAttribute(b.elm,"data-"+d[f].data[i]);else d[f].attr&&d[f].name?(h=a.utils.getByClass(b.elm,d[f].name,!0),e[d[f].name]=h?a.utils.getAttribute(h,d[f].attr):""):(h=a.utils.getByClass(b.elm,d[f],!0),e[d[f]]=h?h.innerHTML:"");h=void 0}return e},this.set=function(b,d){var e=function(b){for(var c=0,d=a.valueNames.length;c<d;c++)if(a.valueNames[c].data){for(var e=a.valueNames[c].data,f=0,g=e.length;f<g;f++)if(e[f]===b)return{data:b}}else{if(a.valueNames[c].attr&&a.valueNames[c].name&&a.valueNames[c].name==b)return a.valueNames[c];if(a.valueNames[c]===b)return b}},f=function(c,d){var f,g=e(c);g&&(g.data?b.elm.setAttribute("data-"+g.data,d):g.attr&&g.name?(f=a.utils.getByClass(b.elm,g.name,!0),f&&f.setAttribute(g.attr,d)):(f=a.utils.getByClass(b.elm,g,!0),f&&(f.innerHTML=d)),f=void 0)};if(!c.create(b))for(var g in d)d.hasOwnProperty(g)&&f(g,d[g])},this.create=function(a){if(void 0!==a.elm)return!1;if(void 0===b)throw new Error("The list need to have at list one item on init otherwise you'll have to add a template.");var d=b.cloneNode(!0);return d.removeAttribute("id"),a.elm=d,c.set(a,a.values()),!0},this.remove=function(b){b.elm.parentNode===a.list&&a.list.removeChild(b.elm)},this.show=function(b){c.create(b),a.list.appendChild(b.elm)},this.hide=function(b){void 0!==b.elm&&b.elm.parentNode===a.list&&a.list.removeChild(b.elm)},this.clear=function(){if(a.list.hasChildNodes())for(;a.list.childNodes.length>=1;)a.list.removeChild(a.list.firstChild)},d()};b.exports=function(a){return new d(a)}},{}],9:[function(a,b,c){function d(a){if(!a||!a.nodeType)throw new Error("A DOM element reference is required");this.el=a,this.list=a.classList}var e=a("./index-of"),f=/\s+/,g=Object.prototype.toString;b.exports=function(a){return new d(a)},d.prototype.add=function(a){if(this.list)return this.list.add(a),this;var b=this.array(),c=e(b,a);return~c||b.push(a),this.el.className=b.join(" "),this},d.prototype.remove=function(a){if("[object RegExp]"==g.call(a))return this.removeMatching(a);if(this.list)return this.list.remove(a),this;var b=this.array(),c=e(b,a);return~c&&b.splice(c,1),this.el.className=b.join(" "),this},d.prototype.removeMatching=function(a){for(var b=this.array(),c=0;c<b.length;c++)a.test(b[c])&&this.remove(b[c]);return this},d.prototype.toggle=function(a,b){return this.list?("undefined"!=typeof b?b!==this.list.toggle(a,b)&&this.list.toggle(a):this.list.toggle(a),this):("undefined"!=typeof b?b?this.add(a):this.remove(a):this.has(a)?this.remove(a):this.add(a),this)},d.prototype.array=function(){var a=this.el.getAttribute("class")||"",b=a.replace(/^\s+|\s+$/g,""),c=b.split(f);return""===c[0]&&c.shift(),c},d.prototype.has=d.prototype.contains=function(a){return this.list?this.list.contains(a):!!~e(this.array(),a)}},{"./index-of":14}],10:[function(a,b,c){var d=window.addEventListener?"addEventListener":"attachEvent",e=window.removeEventListener?"removeEventListener":"detachEvent",f="addEventListener"!==d?"on":"",g=a("./to-array");c.bind=function(a,b,c,e){a=g(a);for(var h=0;h<a.length;h++)a[h][d](f+b,c,e||!1)},c.unbind=function(a,b,c,d){a=g(a);for(var h=0;h<a.length;h++)a[h][e](f+b,c,d||!1)}},{"./to-array":16}],11:[function(a,b,c){b.exports=function(a){for(var b,c=Array.prototype.slice.call(arguments,1),d=0;b=c[d];d++)if(b)for(var e in b)a[e]=b[e];return a}},{}],12:[function(a,b,c){b.exports=function(a,b){var c=a.getAttribute&&a.getAttribute(b)||null;if(!c)for(var d=a.attributes,e=d.length,f=0;f<e;f++)void 0!==b[f]&&b[f].nodeName===b&&(c=b[f].nodeValue);return c}},{}],13:[function(a,b,c){b.exports=function(){return document.getElementsByClassName?function(a,b,c){return c?a.getElementsByClassName(b)[0]:a.getElementsByClassName(b)}:document.querySelector?function(a,b,c){return b="."+b,c?a.querySelector(b):a.querySelectorAll(b)}:function(a,b,c){var d=[],e="*";null===a&&(a=document);for(var f=a.getElementsByTagName(e),g=f.length,h=new RegExp("(^|\\s)"+b+"(\\s|$)"),i=0,j=0;i<g;i++)if(h.test(f[i].className)){if(c)return f[i];d[j]=f[i],j++}return d}}()},{}],14:[function(a,b,c){var d=[].indexOf;b.exports=function(a,b){if(d)return a.indexOf(b);for(var c=0;c<a.length;++c)if(a[c]===b)return c;return-1}},{}],15:[function(a,b,c){b.exports=function(a,b,c){var d,e,f=/(^([+\-]?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?(?=\D|\s|$))|^0x[\da-fA-F]+$|\d+)/g,g=/^\s+|\s+$/g,h=/\s+/g,i=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,j=/^0x[0-9a-f]+$/i,k=/^0/,l=c||{},m=function(a){return(l.insensitive&&(""+a).toLowerCase()||""+a).replace(g,"")},n=m(a),o=m(b),p=n.replace(f,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),q=o.replace(f,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0"),r=parseInt(n.match(j),16)||1!==p.length&&Date.parse(n),s=parseInt(o.match(j),16)||r&&o.match(i)&&Date.parse(o)||null,t=function(a,b){return(!a.match(k)||1==b)&&parseFloat(a)||a.replace(h," ").replace(g,"")||0};if(s){if(r<s)return-1;if(r>s)return 1}for(var u=0,v=p.length,w=q.length,x=Math.max(v,w);u<x;u++){if(d=t(p[u]||"",v),e=t(q[u]||"",w),isNaN(d)!==isNaN(e))return isNaN(d)?1:-1;if(/[^\x00-\x80]/.test(d+e)&&d.localeCompare){var y=d.localeCompare(e);return y/Math.abs(y)}if(d<e)return-1;if(d>e)return 1}return 0}},{}],16:[function(a,b,c){function d(a){return"[object Array]"===Object.prototype.toString.call(a)}b.exports=function(a){if("undefined"==typeof a)return[];if(null===a)return[null];if(a===window)return[window];if("string"==typeof a)return[a];if(d(a))return a;if("number"!=typeof a.length)return[a];if("function"==typeof a&&a instanceof Function)return[a];for(var b=[],c=0;c<a.length;c++)(Object.prototype.hasOwnProperty.call(a,c)||c in a)&&b.push(a[c]);return b.length?b:[]}},{}],17:[function(a,b,c){b.exports=function(a){return a=void 0===a?"":a,a=null===a?"":a,a=a.toString()}},{}]},{},[1]); \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/lodash.custom.min.js b/admin/survey/api/apidoc/vendor/lodash.custom.min.js
new file mode 100644
index 0000000..73d3f5a
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/lodash.custom.min.js
@@ -0,0 +1,41 @@
+/**
+ * @license
+ * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
+ * Build: `lodash -p -o template/vendor/lodash.custom.min.js include="groupBy,each,extend,some" exports="amd"`
+ */
+;(function(){function t(t,e){return t.set(e[0],e[1]),t}function e(t,e){return t.add(e),t}function r(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}function n(t,e,r,n){for(var o=-1,c=null==t?0:t.length;++o<c;){var u=t[o];e(n,u,r(u),t)}return n}function o(t,e){for(var r=-1,n=null==t?0:t.length;++r<n&&false!==e(t[r],r,t););return t}function c(t,e){for(var r=-1,n=null==t?0:t.length,o=0,c=[];++r<n;){
+var u=t[r];e(u,r,t)&&(c[o++]=u)}return c}function u(t,e){for(var r=-1,n=e.length,o=t.length;++r<n;)t[o+r]=e[r];return t}function i(t,e,r){for(var n=-1,o=null==t?0:t.length;++n<o;)r=e(r,t[n],n,t);return r}function a(t,e){for(var r=-1,n=null==t?0:t.length;++r<n;)if(e(t[r],r,t))return true;return false}function f(t){return function(e){return null==e?Bt:e[t]}}function s(t){return function(e){return t(e)}}function l(t){var e=-1,r=Array(t.size);return t.forEach(function(t,n){r[++e]=[n,t]}),r}function b(t){var e=Object;
+return function(r){return t(e(r))}}function h(t){var e=-1,r=Array(t.size);return t.forEach(function(t){r[++e]=t}),r}function p(){}function y(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function j(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function _(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}function g(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new _;++e<r;)this.add(t[e]);
+}function v(t){this.size=(this.__data__=new j(t)).size}function d(t,e){var r=Je(t),n=!r&&He(t),o=!r&&!n&&Ke(t),c=!r&&!n&&!o&&Qe(t);if(r=r||n||o||c){for(var n=t.length,u=String,i=-1,a=Array(n);++i<n;)a[i]=u(i);n=a}else n=[];var f,u=n.length;for(f in t)!e&&!oe.call(t,f)||r&&("length"==f||o&&("offset"==f||"parent"==f)||c&&("buffer"==f||"byteLength"==f||"byteOffset"==f)||ct(f,u))||n.push(f);return n}function A(t,e,r){var n=t[e];oe.call(t,e)&&yt(n,r)&&(r!==Bt||e in t)||z(t,e,r)}function w(t,e){for(var r=t.length;r--;)if(yt(t[r][0],e))return r;
+return-1}function m(t,e,r,n){return Pe(t,function(t,o,c){e(n,t,r(t),c)}),n}function O(t,e){return t&&q(e,St(e),t)}function S(t,e){return t&&q(e,zt(e),t)}function z(t,e,r){"__proto__"==e&&_e?_e(t,e,{configurable:true,enumerable:true,value:r,writable:true}):t[e]=r}function k(t,e,r,n,c,u){var i,a=1&e,f=2&e,s=4&e;if(r&&(i=c?r(t,n,c,u):r(t)),i!==Bt)return i;if(!vt(t))return t;if(n=Je(t)){if(i=nt(t),!a)return G(t,i)}else{var l=Ne(t),b="[object Function]"==l||"[object GeneratorFunction]"==l;if(Ke(t))return N(t,a);
+if("[object Object]"==l||"[object Arguments]"==l||b&&!c){if(i=f||b?{}:typeof t.constructor!="function"||at(t)?{}:Le(be(t)),!a)return f?J(t,S(i,t)):H(t,O(i,t))}else{if(!Wt[l])return c?t:{};i=ot(t,l,k,a)}}if(u||(u=new v),c=u.get(t))return c;u.set(t,i);var f=s?f?Y:X:f?zt:St,h=n?Bt:f(t);return o(h||t,function(n,o){h&&(o=n,n=t[o]),A(i,o,k(n,e,r,o,t,u))}),i}function x(t,e){e=C(e,t);for(var r=0,n=e.length;null!=t&&r<n;)t=t[lt(e[r++])];return r&&r==n?t:Bt}function F(t,e,r){return e=e(t),Je(t)?e:u(e,r(t));
+}function I(t){if(null==t)t=t===Bt?"[object Undefined]":"[object Null]";else if(je&&je in Object(t)){var e=oe.call(t,je),r=t[je];try{t[je]=Bt;var n=true}catch(t){}var o=ue.call(t);n&&(e?t[je]=r:delete t[je]),t=o}else t=ue.call(t);return t}function E(t){return dt(t)&&"[object Arguments]"==I(t)}function U(t,e,r,n,o){if(t===e)e=true;else if(null==t||null==e||!dt(t)&&!dt(e))e=t!==t&&e!==e;else t:{var c=Je(t),u=Je(e),i=c?"[object Array]":Ne(t),a=u?"[object Array]":Ne(e),i="[object Arguments]"==i?"[object Object]":i,a="[object Arguments]"==a?"[object Object]":a,f="[object Object]"==i,u="[object Object]"==a;
+if((a=i==a)&&Ke(t)){if(!Ke(e)){e=false;break t}c=true,f=false}if(a&&!f)o||(o=new v),e=c||Qe(t)?K(t,e,r,n,U,o):Q(t,e,i,r,n,U,o);else{if(!(1&r)&&(c=f&&oe.call(t,"__wrapped__"),i=u&&oe.call(e,"__wrapped__"),c||i)){t=c?t.value():t,e=i?e.value():e,o||(o=new v),e=U(t,e,r,n,o);break t}if(a)e:if(o||(o=new v),c=1&r,i=X(t),u=i.length,a=X(e).length,u==a||c){for(f=u;f--;){var s=i[f];if(!(c?s in e:oe.call(e,s))){e=false;break e}}if((a=o.get(t))&&o.get(e))e=a==e;else{a=true,o.set(t,e),o.set(e,t);for(var l=c;++f<u;){var s=i[f],b=t[s],h=e[s];
+if(n)var p=c?n(h,b,s,e,t,o):n(b,h,s,t,e,o);if(p===Bt?b!==h&&!U(b,h,r,n,o):!p){a=false;break}l||(l="constructor"==s)}a&&!l&&(r=t.constructor,n=e.constructor,r!=n&&"constructor"in t&&"constructor"in e&&!(typeof r=="function"&&r instanceof r&&typeof n=="function"&&n instanceof n)&&(a=false)),o.delete(t),o.delete(e),e=a}}else e=false;else e=false}}return e}function B(t,e){var r=e.length,n=r;if(null==t)return!n;for(t=Object(t);r--;){var o=e[r];if(o[2]?o[1]!==t[o[0]]:!(o[0]in t))return false}for(;++r<n;){var o=e[r],c=o[0],u=t[c],i=o[1];
+if(o[2]){if(u===Bt&&!(c in t))return false}else if(o=new v,void 0===Bt?!U(i,u,3,void 0,o):1)return false}return true}function M(t){return dt(t)&&gt(t.length)&&!!Nt[I(t)]}function D(t){return typeof t=="function"?t:null==t?xt:typeof t=="object"?Je(t)?L(t[0],t[1]):$(t):It(t)}function $(t){var e=et(t);return 1==e.length&&e[0][2]?ft(e[0][0],e[0][1]):function(r){return r===t||B(r,e)}}function L(t,e){return it(t)&&e===e&&!vt(e)?ft(lt(t),e):function(r){var n=mt(r,t);return n===Bt&&n===e?Ot(r,t):U(e,n,3)}}function P(t){
+return function(e){return x(e,t)}}function V(t){return We(st(t,xt),t+"")}function R(t,e){var r;return Pe(t,function(t,n,o){return r=e(t,n,o),!r}),!!r}function T(t){if(typeof t=="string")return t;if(Je(t)){for(var e=T,r=-1,n=null==t?0:t.length,o=Array(n);++r<n;)o[r]=e(t[r],r,t);return o+""}return At(t)?$e?$e.call(t):"":(e=t+"","0"==e&&1/t==-Mt?"-0":e)}function C(t,e){return Je(t)?t:it(t,e)?[t]:Ge(wt(t))}function N(t,e){if(e)return t.slice();var r=t.length,r=le?le(r):new t.constructor(r);return t.copy(r),
+r}function W(t){var e=new t.constructor(t.byteLength);return new se(e).set(new se(t)),e}function G(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r<n;)e[r]=t[r];return e}function q(t,e,r){var n=!r;r||(r={});for(var o=-1,c=e.length;++o<c;){var u=e[o],i=Bt;i===Bt&&(i=t[u]),n?z(r,u,i):A(r,u,i)}return r}function H(t,e){return q(t,Te(t),e)}function J(t,e){return q(t,Ce(t),e)}function K(t,e,r,n,o,c){var u=1&r,i=t.length,f=e.length;if(i!=f&&!(u&&f>i))return false;if((f=c.get(t))&&c.get(e))return f==e;var f=-1,s=true,l=2&r?new g:Bt;
+for(c.set(t,e),c.set(e,t);++f<i;){var b=t[f],h=e[f];if(n)var p=u?n(h,b,f,e,t,c):n(b,h,f,t,e,c);if(p!==Bt){if(p)continue;s=false;break}if(l){if(!a(e,function(t,e){if(!l.has(e)&&(b===t||o(b,t,r,n,c)))return l.push(e)})){s=false;break}}else if(b!==h&&!o(b,h,r,n,c)){s=false;break}}return c.delete(t),c.delete(e),s}function Q(t,e,r,n,o,c,u){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)break;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":if(t.byteLength!=e.byteLength||!c(new se(t),new se(e)))break;
+return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return yt(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var i=l;case"[object Set]":if(i||(i=h),t.size!=e.size&&!(1&n))break;return(r=u.get(t))?r==e:(n|=2,u.set(t,e),e=K(i(t),i(e),n,o,c,u),u.delete(t),e);case"[object Symbol]":if(De)return De.call(t)==De.call(e)}return false}function X(t){return F(t,St,Te)}function Y(t){return F(t,zt,Ce);
+}function Z(){var t=p.iteratee||Ft,t=t===Ft?D:t;return arguments.length?t(arguments[0],arguments[1]):t}function tt(t,e){var r=t.__data__,n=typeof e;return("string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==e:null===e)?r[typeof e=="string"?"string":"hash"]:r.map}function et(t){for(var e=St(t),r=e.length;r--;){var n=e[r],o=t[n];e[r]=[n,o,o===o&&!vt(o)]}return e}function rt(t,e){var r=null==t?Bt:t[e];return(!vt(r)||ce&&ce in r?0:(_t(r)?ie:Tt).test(bt(r)))?r:Bt}function nt(t){var e=t.length,r=t.constructor(e);
+return e&&"string"==typeof t[0]&&oe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function ot(r,n,o,c){var u=r.constructor;switch(n){case"[object ArrayBuffer]":return W(r);case"[object Boolean]":case"[object Date]":return new u(+r);case"[object DataView]":return n=c?W(r.buffer):r.buffer,new r.constructor(n,r.byteOffset,r.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":
+case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return n=c?W(r.buffer):r.buffer,new r.constructor(n,r.byteOffset,r.length);case"[object Map]":return n=c?o(l(r),1):l(r),i(n,t,new r.constructor);case"[object Number]":case"[object String]":return new u(r);case"[object RegExp]":return n=new r.constructor(r.source,Rt.exec(r)),n.lastIndex=r.lastIndex,n;case"[object Set]":return n=c?o(h(r),1):h(r),i(n,e,new r.constructor);case"[object Symbol]":return De?Object(De.call(r)):{};
+}}function ct(t,e){return e=null==e?9007199254740991:e,!!e&&(typeof t=="number"||Ct.test(t))&&-1<t&&0==t%1&&t<e}function ut(t,e,r){if(!vt(r))return false;var n=typeof e;return!!("number"==n?jt(r)&&ct(e,r.length):"string"==n&&e in r)&&yt(r[e],t)}function it(t,e){if(Je(t))return false;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!At(t))||($t.test(t)||!Dt.test(t)||null!=e&&t in Object(e))}function at(t){var e=t&&t.constructor;return t===(typeof e=="function"&&e.prototype||ee)}function ft(t,e){
+return function(r){return null!=r&&(r[t]===e&&(e!==Bt||t in Object(r)))}}function st(t,e){var n=void 0,n=Ae(n===Bt?t.length-1:n,0);return function(){for(var o=arguments,c=-1,u=Ae(o.length-n,0),i=Array(u);++c<u;)i[c]=o[n+c];for(c=-1,u=Array(n+1);++c<n;)u[c]=o[c];return u[n]=e(i),r(t,this,u)}}function lt(t){if(typeof t=="string"||At(t))return t;var e=t+"";return"0"==e&&1/t==-Mt?"-0":e}function bt(t){if(null!=t){try{return ne.call(t)}catch(t){}return t+""}return""}function ht(t,e){return(Je(t)?o:Pe)(t,Z(e,3));
+}function pt(t,e){function r(){var n=arguments,o=e?e.apply(this,n):n[0],c=r.cache;return c.has(o)?c.get(o):(n=t.apply(this,n),r.cache=c.set(o,n)||c,n)}if(typeof t!="function"||null!=e&&typeof e!="function")throw new TypeError("Expected a function");return r.cache=new(pt.Cache||_),r}function yt(t,e){return t===e||t!==t&&e!==e}function jt(t){return null!=t&&gt(t.length)&&!_t(t)}function _t(t){return!!vt(t)&&(t=I(t),"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t);
+}function gt(t){return typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t}function vt(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function dt(t){return null!=t&&typeof t=="object"}function At(t){return typeof t=="symbol"||dt(t)&&"[object Symbol]"==I(t)}function wt(t){return null==t?"":T(t)}function mt(t,e,r){return t=null==t?Bt:x(t,e),t===Bt?r:t}function Ot(t,e){var r;if(r=null!=t){r=t;var n;n=C(e,r);for(var o=-1,c=n.length,u=false;++o<c;){var i=lt(n[o]);if(!(u=null!=r&&null!=r&&i in Object(r)))break;
+r=r[i]}u||++o!=c?r=u:(c=null==r?0:r.length,r=!!c&&gt(c)&&ct(i,c)&&(Je(r)||He(r)))}return r}function St(t){if(jt(t))t=d(t);else if(at(t)){var e,r=[];for(e in Object(t))oe.call(t,e)&&"constructor"!=e&&r.push(e);t=r}else t=de(t);return t}function zt(t){if(jt(t))t=d(t,true);else if(vt(t)){var e,r=at(t),n=[];for(e in t)("constructor"!=e||!r&&oe.call(t,e))&&n.push(e);t=n}else{if(e=[],null!=t)for(r in Object(t))e.push(r);t=e}return t}function kt(t){return function(){return t}}function xt(t){return t}function Ft(t){
+return D(typeof t=="function"?t:k(t,1))}function It(t){return it(t)?f(lt(t)):P(t)}function Et(){return[]}function Ut(){return false}var Bt,Mt=1/0,Dt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$t=/^\w*$/,Lt=/^\./,Pt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vt=/\\(\\)?/g,Rt=/\w*$/,Tt=/^\[object .+?Constructor\]$/,Ct=/^(?:0|[1-9]\d*)$/,Nt={};Nt["[object Float32Array]"]=Nt["[object Float64Array]"]=Nt["[object Int8Array]"]=Nt["[object Int16Array]"]=Nt["[object Int32Array]"]=Nt["[object Uint8Array]"]=Nt["[object Uint8ClampedArray]"]=Nt["[object Uint16Array]"]=Nt["[object Uint32Array]"]=true,
+Nt["[object Arguments]"]=Nt["[object Array]"]=Nt["[object ArrayBuffer]"]=Nt["[object Boolean]"]=Nt["[object DataView]"]=Nt["[object Date]"]=Nt["[object Error]"]=Nt["[object Function]"]=Nt["[object Map]"]=Nt["[object Number]"]=Nt["[object Object]"]=Nt["[object RegExp]"]=Nt["[object Set]"]=Nt["[object String]"]=Nt["[object WeakMap]"]=false;var Wt={};Wt["[object Arguments]"]=Wt["[object Array]"]=Wt["[object ArrayBuffer]"]=Wt["[object DataView]"]=Wt["[object Boolean]"]=Wt["[object Date]"]=Wt["[object Float32Array]"]=Wt["[object Float64Array]"]=Wt["[object Int8Array]"]=Wt["[object Int16Array]"]=Wt["[object Int32Array]"]=Wt["[object Map]"]=Wt["[object Number]"]=Wt["[object Object]"]=Wt["[object RegExp]"]=Wt["[object Set]"]=Wt["[object String]"]=Wt["[object Symbol]"]=Wt["[object Uint8Array]"]=Wt["[object Uint8ClampedArray]"]=Wt["[object Uint16Array]"]=Wt["[object Uint32Array]"]=true,
+Wt["[object Error]"]=Wt["[object Function]"]=Wt["[object WeakMap]"]=false;var Gt,qt=typeof global=="object"&&global&&global.Object===Object&&global,Ht=typeof self=="object"&&self&&self.Object===Object&&self,Jt=qt||Ht||Function("return this")(),Kt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qt=Kt&&typeof module=="object"&&module&&!module.nodeType&&module,Xt=Qt&&Qt.exports===Kt,Yt=Xt&&qt.process;t:{try{Gt=Yt&&Yt.binding&&Yt.binding("util");break t}catch(t){}Gt=void 0}var Zt=Gt&&Gt.isTypedArray,te=Array.prototype,ee=Object.prototype,re=Jt["__core-js_shared__"],ne=Function.prototype.toString,oe=ee.hasOwnProperty,ce=function(){
+var t=/[^.]+$/.exec(re&&re.keys&&re.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),ue=ee.toString,ie=RegExp("^"+ne.call(oe).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ae=Xt?Jt.Buffer:Bt,fe=Jt.Symbol,se=Jt.Uint8Array,le=ae?ae.a:Bt,be=b(Object.getPrototypeOf),he=Object.create,pe=ee.propertyIsEnumerable,ye=te.splice,je=fe?fe.toStringTag:Bt,_e=function(){try{var t=rt(Object,"defineProperty");return t({},"",{}),t}catch(t){}
+}(),ge=Object.getOwnPropertySymbols,ve=ae?ae.isBuffer:Bt,de=b(Object.keys),Ae=Math.max,we=Date.now,me=rt(Jt,"DataView"),Oe=rt(Jt,"Map"),Se=rt(Jt,"Promise"),ze=rt(Jt,"Set"),ke=rt(Jt,"WeakMap"),xe=rt(Object,"create"),Fe=bt(me),Ie=bt(Oe),Ee=bt(Se),Ue=bt(ze),Be=bt(ke),Me=fe?fe.prototype:Bt,De=Me?Me.valueOf:Bt,$e=Me?Me.toString:Bt,Le=function(){function t(){}return function(e){return vt(e)?he?he(e):(t.prototype=e,e=new t,t.prototype=Bt,e):{}}}();y.prototype.clear=function(){this.__data__=xe?xe(null):{},
+this.size=0},y.prototype.delete=function(t){return t=this.has(t)&&delete this.__data__[t],this.size-=t?1:0,t},y.prototype.get=function(t){var e=this.__data__;return xe?(t=e[t],"__lodash_hash_undefined__"===t?Bt:t):oe.call(e,t)?e[t]:Bt},y.prototype.has=function(t){var e=this.__data__;return xe?e[t]!==Bt:oe.call(e,t)},y.prototype.set=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=xe&&e===Bt?"__lodash_hash_undefined__":e,this},j.prototype.clear=function(){this.__data__=[],this.size=0;
+},j.prototype.delete=function(t){var e=this.__data__;return t=w(e,t),!(0>t)&&(t==e.length-1?e.pop():ye.call(e,t,1),--this.size,true)},j.prototype.get=function(t){var e=this.__data__;return t=w(e,t),0>t?Bt:e[t][1]},j.prototype.has=function(t){return-1<w(this.__data__,t)},j.prototype.set=function(t,e){var r=this.__data__,n=w(r,t);return 0>n?(++this.size,r.push([t,e])):r[n][1]=e,this},_.prototype.clear=function(){this.size=0,this.__data__={hash:new y,map:new(Oe||j),string:new y}},_.prototype.delete=function(t){
+return t=tt(this,t).delete(t),this.size-=t?1:0,t},_.prototype.get=function(t){return tt(this,t).get(t)},_.prototype.has=function(t){return tt(this,t).has(t)},_.prototype.set=function(t,e){var r=tt(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this},g.prototype.add=g.prototype.push=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this},g.prototype.has=function(t){return this.__data__.has(t)},v.prototype.clear=function(){this.__data__=new j,this.size=0},v.prototype.delete=function(t){
+var e=this.__data__;return t=e.delete(t),this.size=e.size,t},v.prototype.get=function(t){return this.__data__.get(t)},v.prototype.has=function(t){return this.__data__.has(t)},v.prototype.set=function(t,e){var r=this.__data__;if(r instanceof j){var n=r.__data__;if(!Oe||199>n.length)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new _(n)}return r.set(t,e),this.size=r.size,this};var Pe=function(t,e){return function(r,n){if(null==r)return r;if(!jt(r))return t(r,n);for(var o=r.length,c=e?o:-1,u=Object(r);(e?c--:++c<o)&&false!==n(u[c],c,u););
+return r}}(function(t,e){return t&&Ve(t,e,St)}),Ve=function(t){return function(e,r,n){var o=-1,c=Object(e);n=n(e);for(var u=n.length;u--;){var i=n[t?u:++o];if(false===r(c[i],i,c))break}return e}}(),Re=_e?function(t,e){return _e(t,"toString",{configurable:true,enumerable:false,value:kt(e),writable:true})}:xt,Te=ge?function(t){return null==t?[]:(t=Object(t),c(ge(t),function(e){return pe.call(t,e)}))}:Et,Ce=ge?function(t){for(var e=[];t;)u(e,Te(t)),t=be(t);return e}:Et,Ne=I;(me&&"[object DataView]"!=Ne(new me(new ArrayBuffer(1)))||Oe&&"[object Map]"!=Ne(new Oe)||Se&&"[object Promise]"!=Ne(Se.resolve())||ze&&"[object Set]"!=Ne(new ze)||ke&&"[object WeakMap]"!=Ne(new ke))&&(Ne=function(t){
+var e=I(t);if(t=(t="[object Object]"==e?t.constructor:Bt)?bt(t):"")switch(t){case Fe:return"[object DataView]";case Ie:return"[object Map]";case Ee:return"[object Promise]";case Ue:return"[object Set]";case Be:return"[object WeakMap]"}return e});var We=function(t){var e=0,r=0;return function(){var n=we(),o=16-(n-r);if(r=n,0<o){if(800<=++e)return arguments[0]}else e=0;return t.apply(Bt,arguments)}}(Re),Ge=function(t){t=pt(t,function(t){return 500===e.size&&e.clear(),t});var e=t.cache;return t}(function(t){
+var e=[];return Lt.test(t)&&e.push(""),t.replace(Pt,function(t,r,n,o){e.push(n?o.replace(Vt,"$1"):r||t)}),e}),qe=function(t,e){return function(r,o){var c=Je(r)?n:m,u=e?e():{};return c(r,t,Z(o,2),u)}}(function(t,e,r){oe.call(t,r)?t[r].push(e):z(t,r,[e])});pt.Cache=_;var He=E(function(){return arguments}())?E:function(t){return dt(t)&&oe.call(t,"callee")&&!pe.call(t,"callee")},Je=Array.isArray,Ke=ve||Ut,Qe=Zt?s(Zt):M,Xe=function(t){return V(function(e,r){var n=-1,o=r.length,c=1<o?r[o-1]:Bt,u=2<o?r[2]:Bt,c=3<t.length&&typeof c=="function"?(o--,
+c):Bt;for(u&&ut(r[0],r[1],u)&&(c=3>o?Bt:c,o=1),e=Object(e);++n<o;)(u=r[n])&&t(e,u,n,c);return e})}(function(t,e){q(e,zt(e),t)});p.assignIn=Xe,p.constant=kt,p.groupBy=qe,p.iteratee=Ft,p.keys=St,p.keysIn=zt,p.memoize=pt,p.property=It,p.extend=Xe,p.eq=yt,p.forEach=ht,p.get=mt,p.hasIn=Ot,p.identity=xt,p.isArguments=He,p.isArray=Je,p.isArrayLike=jt,p.isBuffer=Ke,p.isFunction=_t,p.isLength=gt,p.isObject=vt,p.isObjectLike=dt,p.isSymbol=At,p.isTypedArray=Qe,p.stubArray=Et,p.stubFalse=Ut,p.some=function(t,e,r){
+var n=Je(t)?a:R;return r&&ut(t,e,r)&&(e=Bt),n(t,Z(e,3))},p.toString=wt,p.each=ht,p.VERSION="4.17.4",typeof define=="function"&&typeof define.amd=="object"&&define.amd&& define(function(){return p})}).call(this); \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/path-to-regexp/LICENSE b/admin/survey/api/apidoc/vendor/path-to-regexp/LICENSE
new file mode 100644
index 0000000..154c9f2
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/path-to-regexp/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/admin/survey/api/apidoc/vendor/path-to-regexp/index.js b/admin/survey/api/apidoc/vendor/path-to-regexp/index.js
new file mode 100644
index 0000000..22c44ac
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/path-to-regexp/index.js
@@ -0,0 +1,204 @@
+var isArray = Array.isArray || function (arr) {
+ return Object.prototype.toString.call(arr) == '[object Array]';
+};
+
+/**
+ * Expose `pathToRegexp`.
+ */
+// module.exports = pathToRegexp
+
+/**
+ * The main path matching regexp utility.
+ *
+ * @type {RegExp}
+ */
+var PATH_REGEXP = new RegExp([
+ // Match escaped characters that would otherwise appear in future matches.
+ // This allows the user to escape special characters that won't transform.
+ '(\\\\.)',
+ // Match Express-style parameters and un-named parameters with a prefix
+ // and optional suffixes. Matches appear as:
+ //
+ // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?"]
+ // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined]
+ '([\\/.])?(?:\\:(\\w+)(?:\\(((?:\\\\.|[^)])*)\\))?|\\(((?:\\\\.|[^)])*)\\))([+*?])?',
+ // Match regexp special characters that are always escaped.
+ '([.+*?=^!:${}()[\\]|\\/])'
+].join('|'), 'g');
+
+/**
+ * Escape the capturing group by escaping special characters and meaning.
+ *
+ * @param {String} group
+ * @return {String}
+ */
+function escapeGroup (group) {
+ return group.replace(/([=!:$\/()])/g, '\\$1');
+}
+
+/**
+ * Attach the keys as a property of the regexp.
+ *
+ * @param {RegExp} re
+ * @param {Array} keys
+ * @return {RegExp}
+ */
+function attachKeys (re, keys) {
+ re.keys = keys;
+ return re;
+}
+
+/**
+ * Get the flags for a regexp from the options.
+ *
+ * @param {Object} options
+ * @return {String}
+ */
+function flags (options) {
+ return options.sensitive ? '' : 'i';
+}
+
+/**
+ * Pull out keys from a regexp.
+ *
+ * @param {RegExp} path
+ * @param {Array} keys
+ * @return {RegExp}
+ */
+function regexpToRegexp (path, keys) {
+ // Use a negative lookahead to match only capturing groups.
+ var groups = path.source.match(/\((?!\?)/g);
+
+ if (groups) {
+ for (var i = 0; i < groups.length; i++) {
+ keys.push({
+ name: i,
+ delimiter: null,
+ optional: false,
+ repeat: false
+ });
+ }
+ }
+
+ return attachKeys(path, keys);
+}
+
+/**
+ * Transform an array into a regexp.
+ *
+ * @param {Array} path
+ * @param {Array} keys
+ * @param {Object} options
+ * @return {RegExp}
+ */
+function arrayToRegexp (path, keys, options) {
+ var parts = [];
+
+ for (var i = 0; i < path.length; i++) {
+ parts.push(pathToRegexp(path[i], keys, options).source);
+ }
+
+ var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));
+ return attachKeys(regexp, keys);
+}
+
+/**
+ * Replace the specific tags with regexp strings.
+ *
+ * @param {String} path
+ * @param {Array} keys
+ * @return {String}
+ */
+function replacePath (path, keys) {
+ var index = 0;
+
+ function replace (_, escaped, prefix, key, capture, group, suffix, escape) {
+ if (escaped) {
+ return escaped;
+ }
+
+ if (escape) {
+ return '\\' + escape;
+ }
+
+ var repeat = suffix === '+' || suffix === '*';
+ var optional = suffix === '?' || suffix === '*';
+
+ keys.push({
+ name: key || index++,
+ delimiter: prefix || '/',
+ optional: optional,
+ repeat: repeat
+ });
+
+ prefix = prefix ? ('\\' + prefix) : '';
+ capture = escapeGroup(capture || group || '[^' + (prefix || '\\/') + ']+?');
+
+ if (repeat) {
+ capture = capture + '(?:' + prefix + capture + ')*';
+ }
+
+ if (optional) {
+ return '(?:' + prefix + '(' + capture + '))?';
+ }
+
+ // Basic parameter support.
+ return prefix + '(' + capture + ')';
+ }
+
+ return path.replace(PATH_REGEXP, replace);
+}
+
+/**
+ * Normalize the given path string, returning a regular expression.
+ *
+ * An empty array can be passed in for the keys, which will hold the
+ * placeholder key descriptions. For example, using `/user/:id`, `keys` will
+ * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
+ *
+ * @param {(String|RegExp|Array)} path
+ * @param {Array} [keys]
+ * @param {Object} [options]
+ * @return {RegExp}
+ */
+function pathToRegexp (path, keys, options) {
+ keys = keys || [];
+
+ if (!isArray(keys)) {
+ options = keys;
+ keys = [];
+ } else if (!options) {
+ options = {};
+ }
+
+ if (path instanceof RegExp) {
+ return regexpToRegexp(path, keys, options);
+ }
+
+ if (isArray(path)) {
+ return arrayToRegexp(path, keys, options);
+ }
+
+ var strict = options.strict;
+ var end = options.end !== false;
+ var route = replacePath(path, keys);
+ var endsWithSlash = path.charAt(path.length - 1) === '/';
+
+ // In non-strict mode we allow a slash at the end of match. If the path to
+ // match already ends with a slash, we remove it for consistency. The slash
+ // is valid at the end of a path match, not in the middle. This is important
+ // in non-ending mode, where "/test/" shouldn't match "/test//route".
+ if (!strict) {
+ route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?';
+ }
+
+ if (end) {
+ route += '$';
+ } else {
+ // In non-ending mode, we need the capturing groups to match as much as
+ // possible by using a positive lookahead to the end or next path segment.
+ route += strict && endsWithSlash ? '' : '(?=\\/|$)';
+ }
+
+ return attachKeys(new RegExp('^' + route, flags(options)), keys);
+}
diff --git a/admin/survey/api/apidoc/vendor/polyfill.js b/admin/survey/api/apidoc/vendor/polyfill.js
new file mode 100644
index 0000000..b0baac8
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/polyfill.js
@@ -0,0 +1,96 @@
+// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
+if (!Object.keys) {
+ Object.keys = (function () {
+ 'use strict';
+ var hasOwnProperty = Object.prototype.hasOwnProperty,
+ hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
+ dontEnums = [
+ 'toString',
+ 'toLocaleString',
+ 'valueOf',
+ 'hasOwnProperty',
+ 'isPrototypeOf',
+ 'propertyIsEnumerable',
+ 'constructor'
+ ],
+ dontEnumsLength = dontEnums.length;
+
+ return function (obj) {
+ if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
+ throw new TypeError('Object.keys called on non-object');
+ }
+
+ var result = [], prop, i;
+
+ for (prop in obj) {
+ if (hasOwnProperty.call(obj, prop)) {
+ result.push(prop);
+ }
+ }
+
+ if (hasDontEnumBug) {
+ for (i = 0; i < dontEnumsLength; i++) {
+ if (hasOwnProperty.call(obj, dontEnums[i])) {
+ result.push(dontEnums[i]);
+ }
+ }
+ }
+ return result;
+ };
+ }());
+}
+
+//Production steps of ECMA-262, Edition 5, 15.4.4.18
+//Reference: http://es5.github.com/#x15.4.4.18
+if (!Array.prototype.forEach) {
+ Array.prototype.forEach = function (callback, thisArg) {
+ var T, k;
+
+ if (this == null) {
+ throw new TypeError(' this is null or not defined');
+ }
+
+ // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
+ var O = Object(this);
+
+ // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
+ // 3. Let len be ToUint32(lenValue).
+ var len = O.length >>> 0;
+
+ // 4. If IsCallable(callback) is false, throw a TypeError exception.
+ // See: http://es5.github.com/#x9.11
+ if (typeof callback !== "function") {
+ throw new TypeError(callback + " is not a function");
+ }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length > 1) {
+ T = thisArg;
+ }
+
+ // 6. Let k be 0
+ k = 0;
+
+ // 7. Repeat, while k < len
+ while (k < len) {
+ var kValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+ // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Call the Call internal method of callback with T as the this value and
+ // argument list containing kValue, k, and O.
+ callback.call(T, kValue, k, O);
+ }
+ // d. Increase k by 1.
+ k++;
+ }
+ // 8. return undefined
+ };
+}
diff --git a/admin/survey/api/apidoc/vendor/prettify.css b/admin/survey/api/apidoc/vendor/prettify.css
new file mode 100644
index 0000000..d964ccc
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify.css
@@ -0,0 +1,51 @@
+/* Pretty printing styles. Used with prettify.js. */
+/* Vim sunburst theme by David Leibovic */
+
+pre .str, code .str { color: #65B042; } /* string - green */
+pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
+pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
+pre .typ, code .typ { color: #89bdff; } /* type - light blue */
+pre .lit, code .lit { color: #3387CC; } /* literal - blue */
+pre .pun, code .pun { color: #fff; } /* punctuation - white */
+pre .pln, code .pln { color: #fff; } /* plaintext - white */
+pre .tag, code .tag { color: #89bdff; } /* html/xml tag - light blue */
+pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name - khaki */
+pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
+pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
+
+pre.prettyprint, code.prettyprint {
+ background-color: #000;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ -o-border-radius: 8px;
+ -ms-border-radius: 8px;
+ -khtml-border-radius: 8px;
+ border-radius: 8px;
+}
+
+pre.prettyprint {
+ width: 95%;
+ margin: 1em auto;
+ padding: 1em;
+ white-space: pre-wrap;
+}
+
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
+li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1,li.L3,li.L5,li.L7,li.L9 { }
+
+@media print {
+ pre .str, code .str { color: #060; }
+ pre .kwd, code .kwd { color: #006; font-weight: bold; }
+ pre .com, code .com { color: #600; font-style: italic; }
+ pre .typ, code .typ { color: #404; font-weight: bold; }
+ pre .lit, code .lit { color: #044; }
+ pre .pun, code .pun { color: #440; }
+ pre .pln, code .pln { color: #000; }
+ pre .tag, code .tag { color: #006; font-weight: bold; }
+ pre .atn, code .atn { color: #404; }
+ pre .atv, code .atv { color: #060; }
+}
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-Splus.js b/admin/survey/api/apidoc/vendor/prettify/lang-Splus.js
new file mode 100644
index 0000000..123004e
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-Splus.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2012 Jeffrey B. Arnold
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],["lit",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],["lit",/^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
+["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-aea.js b/admin/survey/api/apidoc/vendor/prettify/lang-aea.js
new file mode 100644
index 0000000..51b38c3
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-aea.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2009 Onno Hommes.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
+null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-agc.js b/admin/survey/api/apidoc/vendor/prettify/lang-agc.js
new file mode 100644
index 0000000..51b38c3
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-agc.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2009 Onno Hommes.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
+null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-apollo.js b/admin/survey/api/apidoc/vendor/prettify/lang-apollo.js
new file mode 100644
index 0000000..51b38c3
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-apollo.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2009 Onno Hommes.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,
+null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-basic.js b/admin/survey/api/apidoc/vendor/prettify/lang-basic.js
new file mode 100644
index 0000000..365ef1d
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-basic.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2013 Peter Kofler
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/,null,'"'],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^REM[^\r\n]*/,null],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,null],["pln",/^[A-Z][A-Z0-9]?(?:\$|%)?/i,null],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i,
+null,"0123456789"],["pun",/^.[^\s\w\.$%"]*/,null]]),["basic","cbm"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-cbm.js b/admin/survey/api/apidoc/vendor/prettify/lang-cbm.js
new file mode 100644
index 0000000..365ef1d
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-cbm.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2013 Peter Kofler
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/,null,'"'],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^REM[^\r\n]*/,null],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,null],["pln",/^[A-Z][A-Z0-9]?(?:\$|%)?/i,null],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i,
+null,"0123456789"],["pun",/^.[^\s\w\.$%"]*/,null]]),["basic","cbm"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-cl.js b/admin/survey/api/apidoc/vendor/prettify/lang-cl.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-cl.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-clj.js b/admin/survey/api/apidoc/vendor/prettify/lang-clj.js
new file mode 100644
index 0000000..fdf6e98
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-clj.js
@@ -0,0 +1,17 @@
+/*
+ Copyright (C) 2011 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^[\(\{\[]+/,null,"([{"],["clo",/^[\)\}\]]+/,null,")]}"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/,
+null],["typ",/^:[0-9a-zA-Z\-]+/]]),["clj"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-css.js b/admin/survey/api/apidoc/vendor/prettify/lang-css.js
new file mode 100644
index 0000000..4fcb724
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-css.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2009 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']+)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
+["com",/^(?:\x3c!--|--\x3e)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}\b/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-dart.js b/admin/survey/api/apidoc/vendor/prettify/lang-dart.js
new file mode 100644
index 0000000..84cf542
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-dart.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2013 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["com",/^#!(?:.*)/],["kwd",/^\b(?:import|library|part of|part|as|show|hide)\b/i],["com",/^\/\/(?:.*)/],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],["kwd",/^\b(?:class|interface)\b/i],["kwd",/^\b(?:assert|async|await|break|case|catch|continue|default|do|else|finally|for|if|in|is|new|return|super|switch|sync|this|throw|try|while)\b/i],["kwd",/^\b(?:abstract|const|extends|factory|final|get|implements|native|operator|set|static|typedef|var)\b/i],
+["typ",/^\b(?:bool|double|Dynamic|int|num|Object|String|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?[\']{3}[\s|\S]*?[^\\][\']{3}/],["str",/^r?[\"]{3}[\s|\S]*?[^\\][\"]{3}/],["str",/^r?\'(\'|(?:[^\n\r\f])*?[^\\]\')/],["str",/^r?\"(\"|(?:[^\n\r\f])*?[^\\]\")/],["typ",/^[A-Z]\w*/],["pln",/^[a-z_$][a-z0-9_]*/i],["pun",/^[~!%^&*+=|?:<>/-]/],["lit",/^\b0x[0-9a-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",
+/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(){}\[\],.;]/]]),["dart"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-el.js b/admin/survey/api/apidoc/vendor/prettify/lang-el.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-el.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-erl.js b/admin/survey/api/apidoc/vendor/prettify/lang-erl.js
new file mode 100644
index 0000000..816ff87
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-erl.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2013 Andrew Allen
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\f\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^\?[^ \t\n({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
+["kwd",/^-[a-z_]+/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;]/]]),["erlang","erl"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-erlang.js b/admin/survey/api/apidoc/vendor/prettify/lang-erlang.js
new file mode 100644
index 0000000..816ff87
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-erlang.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2013 Andrew Allen
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\f\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^\?[^ \t\n({]+/,null,"?"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\n]*/],["kwd",/^(?:module|attributes|do|let|in|letrec|apply|call|primop|case|of|end|when|fun|try|catch|receive|after|char|integer|float,atom,string,var)\b/],
+["kwd",/^-[a-z_]+/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;]/]]),["erlang","erl"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-fs.js b/admin/survey/api/apidoc/vendor/prettify/lang-fs.js
new file mode 100644
index 0000000..00d2a42
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-fs.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
+["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-go.js b/admin/survey/api/apidoc/vendor/prettify/lang-go.js
new file mode 100644
index 0000000..9a367fd
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-go.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2010 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])+(?:\'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\/\*[\s\S]*?\*\/)/],["pln",/^(?:[^\/\"\'`]|\/(?![\/\*]))+/i]]),["go"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-hs.js b/admin/survey/api/apidoc/vendor/prettify/lang-hs.js
new file mode 100644
index 0000000..71e5a9e
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-hs.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2009 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\x0B\f\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,
+null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-lasso.js b/admin/survey/api/apidoc/vendor/prettify/lang-lasso.js
new file mode 100644
index 0000000..3aac6bf
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-lasso.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2013 Eric Knibbe
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
+["atn",/^-(?!infinity)[a-z_][\w.]*|\.\s*'[a-z_][\w.]*'/i],["lit",/^\d*\.\d+(?:e[-+]?\d+)?|infinity\b|NaN\b/i],["atv",/^::\s*[a-z_][\w.]*/i],["lit",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\b/i],["kwd",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\b/i],
+["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-lassoscript.js b/admin/survey/api/apidoc/vendor/prettify/lang-lassoscript.js
new file mode 100644
index 0000000..3aac6bf
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-lassoscript.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2013 Eric Knibbe
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
+["atn",/^-(?!infinity)[a-z_][\w.]*|\.\s*'[a-z_][\w.]*'/i],["lit",/^\d*\.\d+(?:e[-+]?\d+)?|infinity\b|NaN\b/i],["atv",/^::\s*[a-z_][\w.]*/i],["lit",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\b/i],["kwd",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\b/i],
+["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-latex.js b/admin/survey/api/apidoc/vendor/prettify/lang-latex.js
new file mode 100644
index 0000000..6ae209b
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-latex.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2011 Martin S.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["kwd",/^\\[a-zA-Z@]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[{}()\[\]=]+/]]),["latex","tex"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-lgt.js b/admin/survey/api/apidoc/vendor/prettify/lang-lgt.js
new file mode 100644
index 0000000..4fb4066
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-lgt.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2014 Paulo Moura
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^(?:0'.|0b[0-1]+|0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\r\n]*/,null,"%"],["com",/^\/\*[\s\S]*?\*\//],["kwd",/^\s*:-\s(c(a(lls|tegory)|oinductive)|p(ublic|r(ot(ocol|ected)|ivate))|e(l(if|se)|n(coding|sure_loaded)|xport)|i(f|n(clude|itialization|fo))|alias|d(ynamic|iscontiguous)|m(eta_(non_terminal|predicate)|od(e|ule)|ultifile)|reexport|s(et_(logtalk|prolog)_flag|ynchronized)|o(bject|p)|use(s|_module))/],
+["kwd",/^\s*:-\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;{}:^<>=\\/+*?#!-]/]]),["logtalk","lgt"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-lisp.js b/admin/survey/api/apidoc/vendor/prettify/lang-lisp.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-lisp.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-ll.js b/admin/survey/api/apidoc/vendor/prettify/lang-ll.js
new file mode 100644
index 0000000..2994b30
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-ll.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2013 Nikhil Dabas
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["com",/^;[^\r\n]*/,null,";"]],[["pln",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],["kwd",/^[A-Za-z_][0-9A-Za-z_]*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[xX][a-fA-F0-9]+)/],["pun",/^[()\[\]{},=*<>:]|\.\.\.$/]]),["llvm","ll"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-llvm.js b/admin/survey/api/apidoc/vendor/prettify/lang-llvm.js
new file mode 100644
index 0000000..2994b30
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-llvm.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2013 Nikhil Dabas
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["com",/^;[^\r\n]*/,null,";"]],[["pln",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],["kwd",/^[A-Za-z_][0-9A-Za-z_]*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[xX][a-fA-F0-9]+)/],["pun",/^[()\[\]{},=*<>:]|\.\.\.$/]]),["llvm","ll"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-logtalk.js b/admin/survey/api/apidoc/vendor/prettify/lang-logtalk.js
new file mode 100644
index 0000000..4fb4066
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-logtalk.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2014 Paulo Moura
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["lit",/^[a-z][a-zA-Z0-9_]*/],["lit",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])+\'?/,null,"'"],["lit",/^(?:0'.|0b[0-1]+|0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^%[^\r\n]*/,null,"%"],["com",/^\/\*[\s\S]*?\*\//],["kwd",/^\s*:-\s(c(a(lls|tegory)|oinductive)|p(ublic|r(ot(ocol|ected)|ivate))|e(l(if|se)|n(coding|sure_loaded)|xport)|i(f|n(clude|itialization|fo))|alias|d(ynamic|iscontiguous)|m(eta_(non_terminal|predicate)|od(e|ule)|ultifile)|reexport|s(et_(logtalk|prolog)_flag|ynchronized)|o(bject|p)|use(s|_module))/],
+["kwd",/^\s*:-\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;{}:^<>=\\/+*?#!-]/]]),["logtalk","lgt"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-ls.js b/admin/survey/api/apidoc/vendor/prettify/lang-ls.js
new file mode 100644
index 0000000..3aac6bf
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-ls.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2013 Eric Knibbe
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
+["atn",/^-(?!infinity)[a-z_][\w.]*|\.\s*'[a-z_][\w.]*'/i],["lit",/^\d*\.\d+(?:e[-+]?\d+)?|infinity\b|NaN\b/i],["atv",/^::\s*[a-z_][\w.]*/i],["lit",/^(?:true|false|none|minimal|full|all|void|and|or|not|bw|nbw|ew|new|cn|ncn|lt|lte|gt|gte|eq|neq|rx|nrx|ft)\b/i],["kwd",/^(?:error_code|error_msg|error_pop|error_push|error_reset|cache|database_names|database_schemanames|database_tablenames|define_tag|define_type|email_batch|encode_set|html_comment|handle|handle_error|header|if|inline|iterate|ljax_target|link|link_currentaction|link_currentgroup|link_currentrecord|link_detail|link_firstgroup|link_firstrecord|link_lastgroup|link_lastrecord|link_nextgroup|link_nextrecord|link_prevgroup|link_prevrecord|log|loop|namespace_using|output_none|portal|private|protect|records|referer|referrer|repeating|resultset|rows|search_args|search_arguments|select|sort_args|sort_arguments|thread_atomic|value_list|while|abort|case|else|if_empty|if_false|if_null|if_true|loop_abort|loop_continue|loop_count|params|params_up|return|return_value|run_children|soap_definetag|soap_lastrequest|soap_lastresponse|tag_name|ascending|average|by|define|descending|do|equals|frozen|group|handle_failure|import|in|into|join|let|match|max|min|on|order|parent|protected|provide|public|require|returnhome|skip|split_thread|sum|take|thread|to|trait|type|where|with|yield|yieldhome)\b/i],
+["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-lsp.js b/admin/survey/api/apidoc/vendor/prettify/lang-lsp.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-lsp.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-lua.js b/admin/survey/api/apidoc/vendor/prettify/lang-lua.js
new file mode 100644
index 0000000..1824a67
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-lua.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
+["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-matlab.js b/admin/survey/api/apidoc/vendor/prettify/lang-matlab.js
new file mode 100644
index 0000000..bdbf701
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-matlab.js
@@ -0,0 +1,29 @@
+/*
+
+ Copyright (c) 2013 by Amro <amroamroamro@gmail.com>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+*/
+var a=window.PR,b=[[a.PR_PLAIN,/^[ \t\r\n\v\f\xA0]+/,null," \t\r\n\x0B\f\u00a0"],[a.PR_COMMENT,/^%\{[^%]*%+(?:[^\}%][^%]*%+)*\}/,null],[a.PR_COMMENT,/^%[^\r\n]*/,null,"%"],["syscmd",/^![^\r\n]*/,null,"!"]],c=[["linecont",/^\.\.\.\s*[\r\n]/,null],["err",/^\?\?\? [^\r\n]*/,null],["wrn",/^Warning: [^\r\n]*/,null],["codeoutput",/^>>\s+/,null],["codeoutput",/^octave:\d+>\s+/,null],["lang-matlab-operators",/^((?:[a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*|\)|\]|\}|\.)')/,null],["lang-matlab-identifiers",
+/^([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)(?!')/,null],[a.PR_STRING,/^'(?:[^']|'')*'/,null],[a.PR_LITERAL,/^[+\-]?\.?\d+(?:\.\d*)?(?:[Ee][+\-]?\d+)?[ij]?/,null],[a.PR_TAG,/^(?:\{|\}|\(|\)|\[|\])/,null],[a.PR_PUNCTUATION,/^(?:<|>|=|~|@|&|;|,|:|!|\-|\+|\*|\^|\.|\||\\|\/)/,null]],d=[["lang-matlab-identifiers",/^([a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*)/,null],[a.PR_TAG,/^(?:\{|\}|\(|\)|\[|\])/,null],[a.PR_PUNCTUATION,/^(?:<|>|=|~|@|&|;|,|:|!|\-|\+|\*|\^|\.|\||\\|\/)/,null],["transpose",
+/^'/,null]];
+a.registerLangHandler(a.createSimpleLexer([],[[a.PR_KEYWORD,/^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/,null],["const",/^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/,null],[a.PR_TYPE,/^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/,null],["fun",/^\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\b/,null],
+["fun_tbx",/^\b(?:addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest)\b/,
+null],["fun_tbx",/^\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\b/,
+null],["fun_tbx",/^\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\b/,null],["ident",/^[a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*/,null]]),["matlab-identifiers"]);a.registerLangHandler(a.createSimpleLexer([],d),["matlab-operators"]);a.registerLangHandler(a.createSimpleLexer(b,c),["matlab"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-ml.js b/admin/survey/api/apidoc/vendor/prettify/lang-ml.js
new file mode 100644
index 0000000..00d2a42
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-ml.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],
+["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-mumps.js b/admin/survey/api/apidoc/vendor/prettify/lang-mumps.js
new file mode 100644
index 0000000..905ce7b
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-mumps.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2011 Kitware Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^"]|\\.)*")/,null,'"']],[["com",/^;[^\r\n]*/,null,";"],["dec",/^(?:\$(?:D|DEVICE|EC|ECODE|ES|ESTACK|ET|ETRAP|H|HOROLOG|I|IO|J|JOB|K|KEY|P|PRINCIPAL|Q|QUIT|ST|STACK|S|STORAGE|SY|SYSTEM|T|TEST|TL|TLEVEL|TR|TRESTART|X|Y|Z[A-Z]*|A|ASCII|C|CHAR|D|DATA|E|EXTRACT|F|FIND|FN|FNUMBER|G|GET|J|JUSTIFY|L|LENGTH|NA|NAME|O|ORDER|P|PIECE|QL|QLENGTH|QS|QSUBSCRIPT|Q|QUERY|R|RANDOM|RE|REVERSE|S|SELECT|ST|STACK|T|TEXT|TR|TRANSLATE|NaN))\b/i,
+null],["kwd",/^(?:[^\$]B|BREAK|C|CLOSE|D|DO|E|ELSE|F|FOR|G|GOTO|H|HALT|H|HANG|I|IF|J|JOB|K|KILL|L|LOCK|M|MERGE|N|NEW|O|OPEN|Q|QUIT|R|READ|S|SET|TC|TCOMMIT|TRE|TRESTART|TRO|TROLLBACK|TS|TSTART|U|USE|V|VIEW|W|WRITE|X|XECUTE)\b/i,null],["lit",/^[+-]?(?:(?:\.\d+|\d+(?:\.\d*)?)(?:E[+\-]?\d+)?)/i],["pln",/^[a-z][a-zA-Z0-9]*/i],["pun",/^[^\w\t\n\r\xA0\"\$;%\^]|_/]]),["mumps"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-n.js b/admin/survey/api/apidoc/vendor/prettify/lang-n.js
new file mode 100644
index 0000000..159926d
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-n.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2011 Zimin A.V.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null],["str",/^<#(?:[^#>])*(?:#>|$)/,null],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null],["com",/^\/\/[^\r\n]*/,
+null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
+null],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,null],["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]]),["n","nemerle"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-nemerle.js b/admin/survey/api/apidoc/vendor/prettify/lang-nemerle.js
new file mode 100644
index 0000000..159926d
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-nemerle.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2011 Zimin A.V.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null],["str",/^<#(?:[^#>])*(?:#>|$)/,null],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null],["com",/^\/\/[^\r\n]*/,
+null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["kwd",/^(?:abstract|and|as|base|catch|class|def|delegate|enum|event|extern|false|finally|fun|implements|interface|internal|is|macro|match|matches|module|mutable|namespace|new|null|out|override|params|partial|private|protected|public|ref|sealed|static|struct|syntax|this|throw|true|try|type|typeof|using|variant|virtual|volatile|when|where|with|assert|assert2|async|break|checked|continue|do|else|ensures|for|foreach|if|late|lock|new|nolate|otherwise|regexp|repeat|requires|return|surroundwith|unchecked|unless|using|while|yield)\b/,
+null],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,null],["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]]),["n","nemerle"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-pascal.js b/admin/survey/api/apidoc/vendor/prettify/lang-pascal.js
new file mode 100644
index 0000000..f1a06e5
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-pascal.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2013 Peter Kofler
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$))/,null,"'"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^\(\*[\s\S]*?(?:\*\)|$)|^\{[\s\S]*?(?:\}|$)/,null],["kwd",/^(?:ABSOLUTE|AND|ARRAY|ASM|ASSEMBLER|BEGIN|CASE|CONST|CONSTRUCTOR|DESTRUCTOR|DIV|DO|DOWNTO|ELSE|END|EXTERNAL|FOR|FORWARD|FUNCTION|GOTO|IF|IMPLEMENTATION|IN|INLINE|INTERFACE|INTERRUPT|LABEL|MOD|NOT|OBJECT|OF|OR|PACKED|PROCEDURE|PROGRAM|RECORD|REPEAT|SET|SHL|SHR|THEN|TO|TYPE|UNIT|UNTIL|USES|VAR|VIRTUAL|WHILE|WITH|XOR)\b/i,
+null],["lit",/^(?:true|false|self|nil)/i,null],["pln",/^[a-z][a-z0-9]*/i,null],["lit",/^(?:\$[a-f0-9]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?)/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\/]*/,null]]),["pascal"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-proto.js b/admin/survey/api/apidoc/vendor/prettify/lang-proto.js
new file mode 100644
index 0000000..918fbf8
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-proto.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2006 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-r.js b/admin/survey/api/apidoc/vendor/prettify/lang-r.js
new file mode 100644
index 0000000..123004e
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-r.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2012 Jeffrey B. Arnold
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],["lit",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],["lit",/^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
+["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-rd.js b/admin/survey/api/apidoc/vendor/prettify/lang-rd.js
new file mode 100644
index 0000000..9d13e90
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-rd.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2012 Jeffrey Arnold
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[a-zA-Z@]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[{}()\[\]]+/]]),["Rd","rd"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-rkt.js b/admin/survey/api/apidoc/vendor/prettify/lang-rkt.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-rkt.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-rust.js b/admin/survey/api/apidoc/vendor/prettify/lang-rust.js
new file mode 100644
index 0000000..c70ea82
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-rust.js
@@ -0,0 +1,20 @@
+/*
+
+ Copyright (C) 2015 Chris Morgan
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([],[["pln",/^[\t\n\r \xA0]+/],["com",/^\/\/.*/],["com",/^\/\*[\s\S]*?(?:\*\/|$)/],["str",/^b"(?:[^\\]|\\(?:.|x[\da-fA-F]{2}))*?"/],["str",/^"(?:[^\\]|\\(?:.|x[\da-fA-F]{2}|u\{\[\da-fA-F]{1,6}\}))*?"/],["str",/^b?r(#*)\"[\s\S]*?\"\1/],["str",/^b'([^\\]|\\(.|x[\da-fA-F]{2}))'/],["str",/^'([^\\]|\\(.|x[\da-fA-F]{2}|u\{[\da-fA-F]{1,6}\}))'/],["tag",/^'\w+?\b/],["kwd",/^(?:match|if|else|as|break|box|continue|extern|fn|for|in|if|impl|let|loop|pub|return|super|unsafe|where|while|use|mod|trait|struct|enum|type|move|mut|ref|static|const|crate)\b/],
+["kwd",/^(?:alignof|become|do|offsetof|priv|pure|sizeof|typeof|unsized|yield|abstract|virtual|final|override|macro)\b/],["typ",/^(?:[iu](8|16|32|64|size)|char|bool|f32|f64|str|Self)\b/],["typ",/^(?:Copy|Send|Sized|Sync|Drop|Fn|FnMut|FnOnce|Box|ToOwned|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator|Option|Some|None|Result|Ok|Err|SliceConcatExt|String|ToString|Vec)\b/],["lit",/^(self|true|false|null)\b/],
+["lit",/^\d[0-9_]*(?:[iu](?:size|8|16|32|64))?/],["lit",/^0x[a-fA-F0-9_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^0o[0-7_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^0b[01_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^\d[0-9_]*\.(?![^\s\d.])/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)(?:[eE][+-]?[0-9_]+)?(?:f32|f64)?/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)(?:f32|f64)?/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)?(?:f32|f64)/],
+["atn",/^[a-z_]\w*!/i],["pln",/^[a-z_]\w*/i],["atv",/^#!?\[[\s\S]*?\]/],["pun",/^[+\-/*=^&|!<>%[\](){}?:.,;]/],["pln",/./]]),["rust"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-s.js b/admin/survey/api/apidoc/vendor/prettify/lang-s.js
new file mode 100644
index 0000000..123004e
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-s.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2012 Jeffrey B. Arnold
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"]],[["com",/^#.*/],["kwd",/^(?:if|else|for|while|repeat|in|next|break|return|switch|function)(?![A-Za-z0-9_.])/],["lit",/^0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/],["lit",/^[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?/],["lit",/^(?:NULL|NA(?:_(?:integer|real|complex|character)_)?|Inf|TRUE|FALSE|NaN|\.\.(?:\.|[0-9]+))(?![A-Za-z0-9_.])/],
+["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-scala.js b/admin/survey/api/apidoc/vendor/prettify/lang-scala.js
new file mode 100644
index 0000000..10d019b
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-scala.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2010 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/],
+["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-scm.js b/admin/survey/api/apidoc/vendor/prettify/lang-scm.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-scm.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-sql.js b/admin/survey/api/apidoc/vendor/prettify/lang-sql.js
new file mode 100644
index 0000000..cba6440
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-sql.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONNECT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOLLOWING|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|MATCH|MATCHED|MERGE|NATURAL|NATIONAL|NOCHECK|NONCLUSTERED|NOCYCLE|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PARTITION|PERCENT|PIVOT|PLAN|PRECEDING|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|ROWS?|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|START|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNBOUNDED|UNION|UNIQUE|UNPIVOT|UPDATE|UPDATETEXT|USE|USER|USING|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WITHIN|WRITETEXT|XML)(?=[^\w-]|$)/i,
+null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-ss.js b/admin/survey/api/apidoc/vendor/prettify/lang-ss.js
new file mode 100644
index 0000000..45d8495
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-ss.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2008 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
+null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-swift.js b/admin/survey/api/apidoc/vendor/prettify/lang-swift.js
new file mode 100644
index 0000000..64723ec
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-swift.js
@@ -0,0 +1,16 @@
+/*
+
+ Copyright (C) 2015 Google Inc.
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \n\r\t\v\f\0]+/,null," \n\r\t\v\f\x00"],["str",/^"(?:[^"\\]|(?:\\.)|(?:\\\((?:[^"\\)]|\\.)*\)))*"/,null,'"']],[["lit",/^(?:(?:0x[\da-fA-F][\da-fA-F_]*\.[\da-fA-F][\da-fA-F_]*[pP]?)|(?:\d[\d_]*\.\d[\d_]*[eE]?))[+-]?\d[\d_]*/,null],["lit",/^-?(?:(?:0(?:(?:b[01][01_]*)|(?:o[0-7][0-7_]*)|(?:x[\da-fA-F][\da-fA-F_]*)))|(?:\d[\d_]*))/,null],["lit",/^(?:true|false|nil)\b/,null],["kwd",/^\b(?:__COLUMN__|__FILE__|__FUNCTION__|__LINE__|#available|#else|#elseif|#endif|#if|#line|arch|arm|arm64|associativity|as|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|dynamicType|else|enum|fallthrough|final|for|func|get|import|indirect|infix|init|inout|internal|i386|if|in|iOS|iOSApplicationExtension|is|lazy|left|let|mutating|none|nonmutating|operator|optional|OSX|OSXApplicationExtension|override|postfix|precedence|prefix|private|protocol|Protocol|public|required|rethrows|return|right|safe|self|set|static|struct|subscript|super|switch|throw|try|Type|typealias|unowned|unsafe|var|weak|watchOS|while|willSet|x86_64)\b/,
+null],["com",/^\/\/.*?[\n\r]/,null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["pun",/^<<=|<=|<<|>>=|>=|>>|===|==|\.\.\.|&&=|\.\.<|!==|!=|&=|~=|~|\(|\)|\[|\]|{|}|@|#|;|\.|,|:|\|\|=|\?\?|\|\||&&|&\*|&\+|&-|&=|\+=|-=|\/=|\*=|\^=|%=|\|=|->|`|==|\+\+|--|\/|\+|!|\*|%|<|>|&|\||\^|\?|=|-|_/,null],["typ",/^\b(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null]]),["swift"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-tcl.js b/admin/survey/api/apidoc/vendor/prettify/lang-tcl.js
new file mode 100644
index 0000000..89b938d
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-tcl.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2012 Pyrios
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\{+/,null,"{"],["clo",/^\}+/,null,"}"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
+["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["tcl"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-tex.js b/admin/survey/api/apidoc/vendor/prettify/lang-tex.js
new file mode 100644
index 0000000..6ae209b
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-tex.js
@@ -0,0 +1,17 @@
+/*
+
+ Copyright (C) 2011 Martin S.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["kwd",/^\\[a-zA-Z@]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[{}()\[\]=]+/]]),["latex","tex"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-vb.js b/admin/survey/api/apidoc/vendor/prettify/lang-vb.js
new file mode 100644
index 0000000..f3d0508
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-vb.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2009 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\r\n_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,
+null],["com",/^REM\b[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb",
+"vbs"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-vbs.js b/admin/survey/api/apidoc/vendor/prettify/lang-vbs.js
new file mode 100644
index 0000000..f3d0508
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-vbs.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2009 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019](?:_(?:\r\n?|[^\r]?)|[^\r\n_\u2028\u2029])*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,
+null],["com",/^REM\b[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb",
+"vbs"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-vhd.js b/admin/survey/api/apidoc/vendor/prettify/lang-vhd.js
new file mode 100644
index 0000000..eaa40bc
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-vhd.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2010 benoit@ryder.fr
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
+null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
+["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-vhdl.js b/admin/survey/api/apidoc/vendor/prettify/lang-vhdl.js
new file mode 100644
index 0000000..eaa40bc
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-vhdl.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2010 benoit@ryder.fr
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i,
+null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i],
+["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-wiki.js b/admin/survey/api/apidoc/vendor/prettify/lang-wiki.js
new file mode 100644
index 0000000..fcaf458
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-wiki.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2009 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]);
+PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-xq.js b/admin/survey/api/apidoc/vendor/prettify/lang-xq.js
new file mode 100644
index 0000000..c96c370
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-xq.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2011 Patrick Wied
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["var pln",/^\$[A-Za-z0-9_\-]+/,null,"$"]],[["pln",/^[\s=][<>][\s=]/],["lit",/^\@[\w-]+/],["tag",/^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["com",/^\(:[\s\S]*?:\)/],["pln",/^[\/\{\};,\[\]\(\)]$/],["str",/^(?:\"(?:[^\"\\\{]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\\{]|\\[\s\S])*(?:\'|$))/,null,"\"'"],["kwd",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\b/],
+["typ",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\b/,null],["fun pln",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\b/],
+["pln",/^[A-Za-z0-9_\-\:]+/],["pln",/^[\t\n\r \xA0]+/]]),["xq","xquery"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-xquery.js b/admin/survey/api/apidoc/vendor/prettify/lang-xquery.js
new file mode 100644
index 0000000..c96c370
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-xquery.js
@@ -0,0 +1,19 @@
+/*
+
+ Copyright (C) 2011 Patrick Wied
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["var pln",/^\$[A-Za-z0-9_\-]+/,null,"$"]],[["pln",/^[\s=][<>][\s=]/],["lit",/^\@[\w-]+/],["tag",/^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["com",/^\(:[\s\S]*?:\)/],["pln",/^[\/\{\};,\[\]\(\)]$/],["str",/^(?:\"(?:[^\"\\\{]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\\{]|\\[\s\S])*(?:\'|$))/,null,"\"'"],["kwd",/^(?:xquery|where|version|variable|union|typeswitch|treat|to|then|text|stable|sortby|some|self|schema|satisfies|returns|return|ref|processing-instruction|preceding-sibling|preceding|precedes|parent|only|of|node|namespace|module|let|item|intersect|instance|in|import|if|function|for|follows|following-sibling|following|external|except|every|else|element|descending|descendant-or-self|descendant|define|default|declare|comment|child|cast|case|before|attribute|assert|ascending|as|ancestor-or-self|ancestor|after|eq|order|by|or|and|schema-element|document-node|node|at)\b/],
+["typ",/^(?:xs:yearMonthDuration|xs:unsignedLong|xs:time|xs:string|xs:short|xs:QName|xs:Name|xs:long|xs:integer|xs:int|xs:gYearMonth|xs:gYear|xs:gMonthDay|xs:gDay|xs:float|xs:duration|xs:double|xs:decimal|xs:dayTimeDuration|xs:dateTime|xs:date|xs:byte|xs:boolean|xs:anyURI|xf:yearMonthDuration)\b/,null],["fun pln",/^(?:xp:dereference|xinc:node-expand|xinc:link-references|xinc:link-expand|xhtml:restructure|xhtml:clean|xhtml:add-lists|xdmp:zip-manifest|xdmp:zip-get|xdmp:zip-create|xdmp:xquery-version|xdmp:word-convert|xdmp:with-namespaces|xdmp:version|xdmp:value|xdmp:user-roles|xdmp:user-last-login|xdmp:user|xdmp:url-encode|xdmp:url-decode|xdmp:uri-is-file|xdmp:uri-format|xdmp:uri-content-type|xdmp:unquote|xdmp:unpath|xdmp:triggers-database|xdmp:trace|xdmp:to-json|xdmp:tidy|xdmp:subbinary|xdmp:strftime|xdmp:spawn-in|xdmp:spawn|xdmp:sleep|xdmp:shutdown|xdmp:set-session-field|xdmp:set-response-encoding|xdmp:set-response-content-type|xdmp:set-response-code|xdmp:set-request-time-limit|xdmp:set|xdmp:servers|xdmp:server-status|xdmp:server-name|xdmp:server|xdmp:security-database|xdmp:security-assert|xdmp:schema-database|xdmp:save|xdmp:role-roles|xdmp:role|xdmp:rethrow|xdmp:restart|xdmp:request-timestamp|xdmp:request-status|xdmp:request-cancel|xdmp:request|xdmp:redirect-response|xdmp:random|xdmp:quote|xdmp:query-trace|xdmp:query-meters|xdmp:product-edition|xdmp:privilege-roles|xdmp:privilege|xdmp:pretty-print|xdmp:powerpoint-convert|xdmp:platform|xdmp:permission|xdmp:pdf-convert|xdmp:path|xdmp:octal-to-integer|xdmp:node-uri|xdmp:node-replace|xdmp:node-kind|xdmp:node-insert-child|xdmp:node-insert-before|xdmp:node-insert-after|xdmp:node-delete|xdmp:node-database|xdmp:mul64|xdmp:modules-root|xdmp:modules-database|xdmp:merging|xdmp:merge-cancel|xdmp:merge|xdmp:md5|xdmp:logout|xdmp:login|xdmp:log-level|xdmp:log|xdmp:lock-release|xdmp:lock-acquire|xdmp:load|xdmp:invoke-in|xdmp:invoke|xdmp:integer-to-octal|xdmp:integer-to-hex|xdmp:http-put|xdmp:http-post|xdmp:http-options|xdmp:http-head|xdmp:http-get|xdmp:http-delete|xdmp:hosts|xdmp:host-status|xdmp:host-name|xdmp:host|xdmp:hex-to-integer|xdmp:hash64|xdmp:hash32|xdmp:has-privilege|xdmp:groups|xdmp:group-serves|xdmp:group-servers|xdmp:group-name|xdmp:group-hosts|xdmp:group|xdmp:get-session-field-names|xdmp:get-session-field|xdmp:get-response-encoding|xdmp:get-response-code|xdmp:get-request-username|xdmp:get-request-user|xdmp:get-request-url|xdmp:get-request-protocol|xdmp:get-request-path|xdmp:get-request-method|xdmp:get-request-header-names|xdmp:get-request-header|xdmp:get-request-field-names|xdmp:get-request-field-filename|xdmp:get-request-field-content-type|xdmp:get-request-field|xdmp:get-request-client-certificate|xdmp:get-request-client-address|xdmp:get-request-body|xdmp:get-current-user|xdmp:get-current-roles|xdmp:get|xdmp:function-name|xdmp:function-module|xdmp:function|xdmp:from-json|xdmp:forests|xdmp:forest-status|xdmp:forest-restore|xdmp:forest-restart|xdmp:forest-name|xdmp:forest-delete|xdmp:forest-databases|xdmp:forest-counts|xdmp:forest-clear|xdmp:forest-backup|xdmp:forest|xdmp:filesystem-file|xdmp:filesystem-directory|xdmp:exists|xdmp:excel-convert|xdmp:eval-in|xdmp:eval|xdmp:estimate|xdmp:email|xdmp:element-content-type|xdmp:elapsed-time|xdmp:document-set-quality|xdmp:document-set-property|xdmp:document-set-properties|xdmp:document-set-permissions|xdmp:document-set-collections|xdmp:document-remove-properties|xdmp:document-remove-permissions|xdmp:document-remove-collections|xdmp:document-properties|xdmp:document-locks|xdmp:document-load|xdmp:document-insert|xdmp:document-get-quality|xdmp:document-get-properties|xdmp:document-get-permissions|xdmp:document-get-collections|xdmp:document-get|xdmp:document-forest|xdmp:document-delete|xdmp:document-add-properties|xdmp:document-add-permissions|xdmp:document-add-collections|xdmp:directory-properties|xdmp:directory-locks|xdmp:directory-delete|xdmp:directory-create|xdmp:directory|xdmp:diacritic-less|xdmp:describe|xdmp:default-permissions|xdmp:default-collections|xdmp:databases|xdmp:database-restore-validate|xdmp:database-restore-status|xdmp:database-restore-cancel|xdmp:database-restore|xdmp:database-name|xdmp:database-forests|xdmp:database-backup-validate|xdmp:database-backup-status|xdmp:database-backup-purge|xdmp:database-backup-cancel|xdmp:database-backup|xdmp:database|xdmp:collection-properties|xdmp:collection-locks|xdmp:collection-delete|xdmp:collation-canonical-uri|xdmp:castable-as|xdmp:can-grant-roles|xdmp:base64-encode|xdmp:base64-decode|xdmp:architecture|xdmp:apply|xdmp:amp-roles|xdmp:amp|xdmp:add64|xdmp:add-response-header|xdmp:access|trgr:trigger-set-recursive|trgr:trigger-set-permissions|trgr:trigger-set-name|trgr:trigger-set-module|trgr:trigger-set-event|trgr:trigger-set-description|trgr:trigger-remove-permissions|trgr:trigger-module|trgr:trigger-get-permissions|trgr:trigger-enable|trgr:trigger-disable|trgr:trigger-database-online-event|trgr:trigger-data-event|trgr:trigger-add-permissions|trgr:remove-trigger|trgr:property-content|trgr:pre-commit|trgr:post-commit|trgr:get-trigger-by-id|trgr:get-trigger|trgr:document-scope|trgr:document-content|trgr:directory-scope|trgr:create-trigger|trgr:collection-scope|trgr:any-property-content|thsr:set-entry|thsr:remove-term|thsr:remove-synonym|thsr:remove-entry|thsr:query-lookup|thsr:lookup|thsr:load|thsr:insert|thsr:expand|thsr:add-synonym|spell:suggest-detailed|spell:suggest|spell:remove-word|spell:make-dictionary|spell:load|spell:levenshtein-distance|spell:is-correct|spell:insert|spell:double-metaphone|spell:add-word|sec:users-collection|sec:user-set-roles|sec:user-set-password|sec:user-set-name|sec:user-set-description|sec:user-set-default-permissions|sec:user-set-default-collections|sec:user-remove-roles|sec:user-privileges|sec:user-get-roles|sec:user-get-description|sec:user-get-default-permissions|sec:user-get-default-collections|sec:user-doc-permissions|sec:user-doc-collections|sec:user-add-roles|sec:unprotect-collection|sec:uid-for-name|sec:set-realm|sec:security-version|sec:security-namespace|sec:security-installed|sec:security-collection|sec:roles-collection|sec:role-set-roles|sec:role-set-name|sec:role-set-description|sec:role-set-default-permissions|sec:role-set-default-collections|sec:role-remove-roles|sec:role-privileges|sec:role-get-roles|sec:role-get-description|sec:role-get-default-permissions|sec:role-get-default-collections|sec:role-doc-permissions|sec:role-doc-collections|sec:role-add-roles|sec:remove-user|sec:remove-role-from-users|sec:remove-role-from-role|sec:remove-role-from-privileges|sec:remove-role-from-amps|sec:remove-role|sec:remove-privilege|sec:remove-amp|sec:protect-collection|sec:privileges-collection|sec:privilege-set-roles|sec:privilege-set-name|sec:privilege-remove-roles|sec:privilege-get-roles|sec:privilege-add-roles|sec:priv-doc-permissions|sec:priv-doc-collections|sec:get-user-names|sec:get-unique-elem-id|sec:get-role-names|sec:get-role-ids|sec:get-privilege|sec:get-distinct-permissions|sec:get-collection|sec:get-amp|sec:create-user-with-role|sec:create-user|sec:create-role|sec:create-privilege|sec:create-amp|sec:collections-collection|sec:collection-set-permissions|sec:collection-remove-permissions|sec:collection-get-permissions|sec:collection-add-permissions|sec:check-admin|sec:amps-collection|sec:amp-set-roles|sec:amp-remove-roles|sec:amp-get-roles|sec:amp-doc-permissions|sec:amp-doc-collections|sec:amp-add-roles|search:unparse|search:suggest|search:snippet|search:search|search:resolve-nodes|search:resolve|search:remove-constraint|search:parse|search:get-default-options|search:estimate|search:check-options|prof:value|prof:reset|prof:report|prof:invoke|prof:eval|prof:enable|prof:disable|prof:allowed|ppt:clean|pki:template-set-request|pki:template-set-name|pki:template-set-key-type|pki:template-set-key-options|pki:template-set-description|pki:template-in-use|pki:template-get-version|pki:template-get-request|pki:template-get-name|pki:template-get-key-type|pki:template-get-key-options|pki:template-get-id|pki:template-get-description|pki:need-certificate|pki:is-temporary|pki:insert-trusted-certificates|pki:insert-template|pki:insert-signed-certificates|pki:insert-certificate-revocation-list|pki:get-trusted-certificate-ids|pki:get-template-ids|pki:get-template-certificate-authority|pki:get-template-by-name|pki:get-template|pki:get-pending-certificate-requests-xml|pki:get-pending-certificate-requests-pem|pki:get-pending-certificate-request|pki:get-certificates-for-template-xml|pki:get-certificates-for-template|pki:get-certificates|pki:get-certificate-xml|pki:get-certificate-pem|pki:get-certificate|pki:generate-temporary-certificate-if-necessary|pki:generate-temporary-certificate|pki:generate-template-certificate-authority|pki:generate-certificate-request|pki:delete-template|pki:delete-certificate|pki:create-template|pdf:make-toc|pdf:insert-toc-headers|pdf:get-toc|pdf:clean|p:status-transition|p:state-transition|p:remove|p:pipelines|p:insert|p:get-by-id|p:get|p:execute|p:create|p:condition|p:collection|p:action|ooxml:runs-merge|ooxml:package-uris|ooxml:package-parts-insert|ooxml:package-parts|msword:clean|mcgm:polygon|mcgm:point|mcgm:geospatial-query-from-elements|mcgm:geospatial-query|mcgm:circle|math:tanh|math:tan|math:sqrt|math:sinh|math:sin|math:pow|math:modf|math:log10|math:log|math:ldexp|math:frexp|math:fmod|math:floor|math:fabs|math:exp|math:cosh|math:cos|math:ceil|math:atan2|math:atan|math:asin|math:acos|map:put|map:map|map:keys|map:get|map:delete|map:count|map:clear|lnk:to|lnk:remove|lnk:insert|lnk:get|lnk:from|lnk:create|kml:polygon|kml:point|kml:interior-polygon|kml:geospatial-query-from-elements|kml:geospatial-query|kml:circle|kml:box|gml:polygon|gml:point|gml:interior-polygon|gml:geospatial-query-from-elements|gml:geospatial-query|gml:circle|gml:box|georss:point|georss:geospatial-query|georss:circle|geo:polygon|geo:point|geo:interior-polygon|geo:geospatial-query-from-elements|geo:geospatial-query|geo:circle|geo:box|fn:zero-or-one|fn:years-from-duration|fn:year-from-dateTime|fn:year-from-date|fn:upper-case|fn:unordered|fn:true|fn:translate|fn:trace|fn:tokenize|fn:timezone-from-time|fn:timezone-from-dateTime|fn:timezone-from-date|fn:sum|fn:subtract-dateTimes-yielding-yearMonthDuration|fn:subtract-dateTimes-yielding-dayTimeDuration|fn:substring-before|fn:substring-after|fn:substring|fn:subsequence|fn:string-to-codepoints|fn:string-pad|fn:string-length|fn:string-join|fn:string|fn:static-base-uri|fn:starts-with|fn:seconds-from-time|fn:seconds-from-duration|fn:seconds-from-dateTime|fn:round-half-to-even|fn:round|fn:root|fn:reverse|fn:resolve-uri|fn:resolve-QName|fn:replace|fn:remove|fn:QName|fn:prefix-from-QName|fn:position|fn:one-or-more|fn:number|fn:not|fn:normalize-unicode|fn:normalize-space|fn:node-name|fn:node-kind|fn:nilled|fn:namespace-uri-from-QName|fn:namespace-uri-for-prefix|fn:namespace-uri|fn:name|fn:months-from-duration|fn:month-from-dateTime|fn:month-from-date|fn:minutes-from-time|fn:minutes-from-duration|fn:minutes-from-dateTime|fn:min|fn:max|fn:matches|fn:lower-case|fn:local-name-from-QName|fn:local-name|fn:last|fn:lang|fn:iri-to-uri|fn:insert-before|fn:index-of|fn:in-scope-prefixes|fn:implicit-timezone|fn:idref|fn:id|fn:hours-from-time|fn:hours-from-duration|fn:hours-from-dateTime|fn:floor|fn:false|fn:expanded-QName|fn:exists|fn:exactly-one|fn:escape-uri|fn:escape-html-uri|fn:error|fn:ends-with|fn:encode-for-uri|fn:empty|fn:document-uri|fn:doc-available|fn:doc|fn:distinct-values|fn:distinct-nodes|fn:default-collation|fn:deep-equal|fn:days-from-duration|fn:day-from-dateTime|fn:day-from-date|fn:data|fn:current-time|fn:current-dateTime|fn:current-date|fn:count|fn:contains|fn:concat|fn:compare|fn:collection|fn:codepoints-to-string|fn:codepoint-equal|fn:ceiling|fn:boolean|fn:base-uri|fn:avg|fn:adjust-time-to-timezone|fn:adjust-dateTime-to-timezone|fn:adjust-date-to-timezone|fn:abs|feed:unsubscribe|feed:subscription|feed:subscribe|feed:request|feed:item|feed:description|excel:clean|entity:enrich|dom:set-pipelines|dom:set-permissions|dom:set-name|dom:set-evaluation-context|dom:set-domain-scope|dom:set-description|dom:remove-pipeline|dom:remove-permissions|dom:remove|dom:get|dom:evaluation-context|dom:domains|dom:domain-scope|dom:create|dom:configuration-set-restart-user|dom:configuration-set-permissions|dom:configuration-set-evaluation-context|dom:configuration-set-default-domain|dom:configuration-get|dom:configuration-create|dom:collection|dom:add-pipeline|dom:add-permissions|dls:retention-rules|dls:retention-rule-remove|dls:retention-rule-insert|dls:retention-rule|dls:purge|dls:node-expand|dls:link-references|dls:link-expand|dls:documents-query|dls:document-versions-query|dls:document-version-uri|dls:document-version-query|dls:document-version-delete|dls:document-version-as-of|dls:document-version|dls:document-update|dls:document-unmanage|dls:document-set-quality|dls:document-set-property|dls:document-set-properties|dls:document-set-permissions|dls:document-set-collections|dls:document-retention-rules|dls:document-remove-properties|dls:document-remove-permissions|dls:document-remove-collections|dls:document-purge|dls:document-manage|dls:document-is-managed|dls:document-insert-and-manage|dls:document-include-query|dls:document-history|dls:document-get-permissions|dls:document-extract-part|dls:document-delete|dls:document-checkout-status|dls:document-checkout|dls:document-checkin|dls:document-add-properties|dls:document-add-permissions|dls:document-add-collections|dls:break-checkout|dls:author-query|dls:as-of-query|dbk:convert|dbg:wait|dbg:value|dbg:stopped|dbg:stop|dbg:step|dbg:status|dbg:stack|dbg:out|dbg:next|dbg:line|dbg:invoke|dbg:function|dbg:finish|dbg:expr|dbg:eval|dbg:disconnect|dbg:detach|dbg:continue|dbg:connect|dbg:clear|dbg:breakpoints|dbg:break|dbg:attached|dbg:attach|cvt:save-converted-documents|cvt:part-uri|cvt:destination-uri|cvt:basepath|cvt:basename|cts:words|cts:word-query-weight|cts:word-query-text|cts:word-query-options|cts:word-query|cts:word-match|cts:walk|cts:uris|cts:uri-match|cts:train|cts:tokenize|cts:thresholds|cts:stem|cts:similar-query-weight|cts:similar-query-nodes|cts:similar-query|cts:shortest-distance|cts:search|cts:score|cts:reverse-query-weight|cts:reverse-query-nodes|cts:reverse-query|cts:remainder|cts:registered-query-weight|cts:registered-query-options|cts:registered-query-ids|cts:registered-query|cts:register|cts:query|cts:quality|cts:properties-query-query|cts:properties-query|cts:polygon-vertices|cts:polygon|cts:point-longitude|cts:point-latitude|cts:point|cts:or-query-queries|cts:or-query|cts:not-query-weight|cts:not-query-query|cts:not-query|cts:near-query-weight|cts:near-query-queries|cts:near-query-options|cts:near-query-distance|cts:near-query|cts:highlight|cts:geospatial-co-occurrences|cts:frequency|cts:fitness|cts:field-words|cts:field-word-query-weight|cts:field-word-query-text|cts:field-word-query-options|cts:field-word-query-field-name|cts:field-word-query|cts:field-word-match|cts:entity-highlight|cts:element-words|cts:element-word-query-weight|cts:element-word-query-text|cts:element-word-query-options|cts:element-word-query-element-name|cts:element-word-query|cts:element-word-match|cts:element-values|cts:element-value-ranges|cts:element-value-query-weight|cts:element-value-query-text|cts:element-value-query-options|cts:element-value-query-element-name|cts:element-value-query|cts:element-value-match|cts:element-value-geospatial-co-occurrences|cts:element-value-co-occurrences|cts:element-range-query-weight|cts:element-range-query-value|cts:element-range-query-options|cts:element-range-query-operator|cts:element-range-query-element-name|cts:element-range-query|cts:element-query-query|cts:element-query-element-name|cts:element-query|cts:element-pair-geospatial-values|cts:element-pair-geospatial-value-match|cts:element-pair-geospatial-query-weight|cts:element-pair-geospatial-query-region|cts:element-pair-geospatial-query-options|cts:element-pair-geospatial-query-longitude-name|cts:element-pair-geospatial-query-latitude-name|cts:element-pair-geospatial-query-element-name|cts:element-pair-geospatial-query|cts:element-pair-geospatial-boxes|cts:element-geospatial-values|cts:element-geospatial-value-match|cts:element-geospatial-query-weight|cts:element-geospatial-query-region|cts:element-geospatial-query-options|cts:element-geospatial-query-element-name|cts:element-geospatial-query|cts:element-geospatial-boxes|cts:element-child-geospatial-values|cts:element-child-geospatial-value-match|cts:element-child-geospatial-query-weight|cts:element-child-geospatial-query-region|cts:element-child-geospatial-query-options|cts:element-child-geospatial-query-element-name|cts:element-child-geospatial-query-child-name|cts:element-child-geospatial-query|cts:element-child-geospatial-boxes|cts:element-attribute-words|cts:element-attribute-word-query-weight|cts:element-attribute-word-query-text|cts:element-attribute-word-query-options|cts:element-attribute-word-query-element-name|cts:element-attribute-word-query-attribute-name|cts:element-attribute-word-query|cts:element-attribute-word-match|cts:element-attribute-values|cts:element-attribute-value-ranges|cts:element-attribute-value-query-weight|cts:element-attribute-value-query-text|cts:element-attribute-value-query-options|cts:element-attribute-value-query-element-name|cts:element-attribute-value-query-attribute-name|cts:element-attribute-value-query|cts:element-attribute-value-match|cts:element-attribute-value-geospatial-co-occurrences|cts:element-attribute-value-co-occurrences|cts:element-attribute-range-query-weight|cts:element-attribute-range-query-value|cts:element-attribute-range-query-options|cts:element-attribute-range-query-operator|cts:element-attribute-range-query-element-name|cts:element-attribute-range-query-attribute-name|cts:element-attribute-range-query|cts:element-attribute-pair-geospatial-values|cts:element-attribute-pair-geospatial-value-match|cts:element-attribute-pair-geospatial-query-weight|cts:element-attribute-pair-geospatial-query-region|cts:element-attribute-pair-geospatial-query-options|cts:element-attribute-pair-geospatial-query-longitude-name|cts:element-attribute-pair-geospatial-query-latitude-name|cts:element-attribute-pair-geospatial-query-element-name|cts:element-attribute-pair-geospatial-query|cts:element-attribute-pair-geospatial-boxes|cts:document-query-uris|cts:document-query|cts:distance|cts:directory-query-uris|cts:directory-query-depth|cts:directory-query|cts:destination|cts:deregister|cts:contains|cts:confidence|cts:collections|cts:collection-query-uris|cts:collection-query|cts:collection-match|cts:classify|cts:circle-radius|cts:circle-center|cts:circle|cts:box-west|cts:box-south|cts:box-north|cts:box-east|cts:box|cts:bearing|cts:arc-intersection|cts:and-query-queries|cts:and-query-options|cts:and-query|cts:and-not-query-positive-query|cts:and-not-query-negative-query|cts:and-not-query|css:get|css:convert|cpf:success|cpf:failure|cpf:document-set-state|cpf:document-set-processing-status|cpf:document-set-last-updated|cpf:document-set-error|cpf:document-get-state|cpf:document-get-processing-status|cpf:document-get-last-updated|cpf:document-get-error|cpf:check-transition|alert:spawn-matching-actions|alert:rule-user-id-query|alert:rule-set-user-id|alert:rule-set-query|alert:rule-set-options|alert:rule-set-name|alert:rule-set-description|alert:rule-set-action|alert:rule-remove|alert:rule-name-query|alert:rule-insert|alert:rule-id-query|alert:rule-get-user-id|alert:rule-get-query|alert:rule-get-options|alert:rule-get-name|alert:rule-get-id|alert:rule-get-description|alert:rule-get-action|alert:rule-action-query|alert:remove-triggers|alert:make-rule|alert:make-log-action|alert:make-config|alert:make-action|alert:invoke-matching-actions|alert:get-my-rules|alert:get-all-rules|alert:get-actions|alert:find-matching-rules|alert:create-triggers|alert:config-set-uri|alert:config-set-trigger-ids|alert:config-set-options|alert:config-set-name|alert:config-set-description|alert:config-set-cpf-domain-names|alert:config-set-cpf-domain-ids|alert:config-insert|alert:config-get-uri|alert:config-get-trigger-ids|alert:config-get-options|alert:config-get-name|alert:config-get-id|alert:config-get-description|alert:config-get-cpf-domain-names|alert:config-get-cpf-domain-ids|alert:config-get|alert:config-delete|alert:action-set-options|alert:action-set-name|alert:action-set-module-root|alert:action-set-module-db|alert:action-set-module|alert:action-set-description|alert:action-remove|alert:action-insert|alert:action-get-options|alert:action-get-name|alert:action-get-module-root|alert:action-get-module-db|alert:action-get-module|alert:action-get-description|zero-or-one|years-from-duration|year-from-dateTime|year-from-date|upper-case|unordered|true|translate|trace|tokenize|timezone-from-time|timezone-from-dateTime|timezone-from-date|sum|subtract-dateTimes-yielding-yearMonthDuration|subtract-dateTimes-yielding-dayTimeDuration|substring-before|substring-after|substring|subsequence|string-to-codepoints|string-pad|string-length|string-join|string|static-base-uri|starts-with|seconds-from-time|seconds-from-duration|seconds-from-dateTime|round-half-to-even|round|root|reverse|resolve-uri|resolve-QName|replace|remove|QName|prefix-from-QName|position|one-or-more|number|not|normalize-unicode|normalize-space|node-name|node-kind|nilled|namespace-uri-from-QName|namespace-uri-for-prefix|namespace-uri|name|months-from-duration|month-from-dateTime|month-from-date|minutes-from-time|minutes-from-duration|minutes-from-dateTime|min|max|matches|lower-case|local-name-from-QName|local-name|last|lang|iri-to-uri|insert-before|index-of|in-scope-prefixes|implicit-timezone|idref|id|hours-from-time|hours-from-duration|hours-from-dateTime|floor|false|expanded-QName|exists|exactly-one|escape-uri|escape-html-uri|error|ends-with|encode-for-uri|empty|document-uri|doc-available|doc|distinct-values|distinct-nodes|default-collation|deep-equal|days-from-duration|day-from-dateTime|day-from-date|data|current-time|current-dateTime|current-date|count|contains|concat|compare|collection|codepoints-to-string|codepoint-equal|ceiling|boolean|base-uri|avg|adjust-time-to-timezone|adjust-dateTime-to-timezone|adjust-date-to-timezone|abs)\b/],
+["pln",/^[A-Za-z0-9_\-\:]+/],["pln",/^[\t\n\r \xA0]+/]]),["xq","xquery"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-yaml.js b/admin/survey/api/apidoc/vendor/prettify/lang-yaml.js
new file mode 100644
index 0000000..b6d69c7
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-yaml.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2015 ribrdb @ code.google.com
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^[\w-]+:[ \r\n]/],["pln",
+/^\w+/]]),["yaml","yml"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/lang-yml.js b/admin/survey/api/apidoc/vendor/prettify/lang-yml.js
new file mode 100644
index 0000000..b6d69c7
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/lang-yml.js
@@ -0,0 +1,18 @@
+/*
+
+ Copyright (C) 2015 ribrdb @ code.google.com
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^[\w-]+:[ \r\n]/],["pln",
+/^\w+/]]),["yaml","yml"]);
diff --git a/admin/survey/api/apidoc/vendor/prettify/prettify.css b/admin/survey/api/apidoc/vendor/prettify/prettify.css
new file mode 100644
index 0000000..d44b3a2
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/prettify.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/prettify/prettify.js b/admin/survey/api/apidoc/vendor/prettify/prettify.js
new file mode 100644
index 0000000..b9d0245
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/prettify.js
@@ -0,0 +1,46 @@
+!function(){/*
+
+ Copyright (C) 2006 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function T(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=w[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e=
+[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,g=b.length;a<g;++a){var h=b[a];if(/\\[bdsw]/i.test(h))c.push(h);else{var h=d(h),k;a+2<g&&"-"===b[a+1]?(k=d(b[a+2]),a+=2):k=h;e.push([h,k]);65>k||122<h||(65>k||90<h||e.push([Math.max(65,h)|32,Math.min(k,90)|32]),97>k||122<h||e.push([Math.max(97,h)&-33,Math.min(k,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];g=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=g[1]+1?g[1]=Math.max(g[1],h[1]):b.push(g=h);for(a=0;a<b.length;++a)h=b[a],
+c.push(f(h[0])),h[1]>h[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(f(h[1])));c.push("]");return c.join("")}function v(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],g=0,h=0;g<c;++g){var k=a[g];"("===k?++h:"\\"===k.charAt(0)&&(k=+k.substring(1))&&(k<=h?d[k]=-1:a[g]=f(k))}for(g=1;g<d.length;++g)-1===d[g]&&(d[g]=++A);for(h=g=0;g<c;++g)k=a[g],"("===k?(++h,d[h]||(a[g]="(?:")):"\\"===
+k.charAt(0)&&(k=+k.substring(1))&&k<=h&&(a[g]="\\"+d[k]);for(g=0;g<c;++g)"^"===a[g]&&"^"!==a[g+1]&&(a[g]="");if(e.ignoreCase&&n)for(g=0;g<c;++g)k=a[g],e=k.charAt(0),2<=k.length&&"["===e?a[g]=b(k):"\\"!==e&&(a[g]=k.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var A=0,n=!1,l=!1,m=0,c=a.length;m<c;++m){var p=a[m];if(p.ignoreCase)l=!0;else if(/[a-z]/i.test(p.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){n=!0;
+l=!1;break}}for(var w={b:8,t:9,n:10,v:11,f:12,r:13},r=[],m=0,c=a.length;m<c;++m){p=a[m];if(p.global||p.multiline)throw Error(""+p);r.push("(?:"+v(p)+")")}return new RegExp(r.join("|"),l?"gi":"g")}function U(a,d){function f(a){var c=a.nodeType;if(1==c){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)f(c);c=a.nodeName.toLowerCase();if("br"===c||"li"===c)v[l]="\n",n[l<<1]=A++,n[l++<<1|1]=a}}else if(3==c||4==c)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[ \t\r\n]+/g,
+" "),v[l]=c,n[l<<1]=A,A+=c.length,n[l++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,v=[],A=0,n=[],l=0;f(a);return{a:v.join("").replace(/\n$/,""),c:n}}function J(a,d,f,b,v){f&&(a={h:a,l:1,j:null,m:null,a:f,c:null,i:d,g:null},b(a),v.push.apply(v,a.g))}function V(a){for(var d=void 0,f=a.firstChild;f;f=f.nextSibling)var b=f.nodeType,d=1===b?d?a:f:3===b?W.test(f.nodeValue)?a:d:d;return d===a?void 0:d}function G(a,d){function f(a){for(var l=a.i,m=a.h,c=[l,"pln"],p=0,w=a.a.match(v)||[],r={},e=0,t=w.length;e<
+t;++e){var z=w[e],q=r[z],g=void 0,h;if("string"===typeof q)h=!1;else{var k=b[z.charAt(0)];if(k)g=z.match(k[1]),q=k[0];else{for(h=0;h<A;++h)if(k=d[h],g=z.match(k[1])){q=k[0];break}g||(q="pln")}!(h=5<=q.length&&"lang-"===q.substring(0,5))||g&&"string"===typeof g[1]||(h=!1,q="src");h||(r[z]=q)}k=p;p+=z.length;if(h){h=g[1];var B=z.indexOf(h),D=B+h.length;g[2]&&(D=z.length-g[2].length,B=D-h.length);q=q.substring(5);J(m,l+k,z.substring(0,B),f,c);J(m,l+k+B,h,K(q,h),c);J(m,l+k+D,z.substring(D),f,c)}else c.push(l+
+k,q)}a.g=c}var b={},v;(function(){for(var f=a.concat(d),l=[],m={},c=0,p=f.length;c<p;++c){var w=f[c],r=w[3];if(r)for(var e=r.length;0<=--e;)b[r.charAt(e)]=w;w=w[1];r=""+w;m.hasOwnProperty(r)||(l.push(w),m[r]=null)}l.push(/[\0-\uffff]/);v=T(l)})();var A=d.length;return f}function y(a){var d=[],f=[];a.tripleQuotedStrings?d.push(["str",/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+null,"'\""]):a.multiLineStrings?d.push(["str",/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):d.push(["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);a.verbatimStrings&&f.push(["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var b=a.hashComments;b&&(a.cStyleComments?(1<b?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
+null,"#"]),f.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])):d.push(["com",/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(f.push(["com",/^\/\/[^\r\n]*/,null]),f.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(b=a.regexLiterals){var v=(b=1<b?"":"\n\r")?".":"[\\S\\s]";f.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+v+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+v+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&f.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&f.push(["kwd",new RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),null]);d.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");f.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i,
+null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pln",/^\\[\s\S]?/,null],["pun",new RegExp(b),null]);return G(d,f)}function L(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!A.test(a.className))if("br"===a.nodeName)v(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,q=d.match(n);q&&(c=d.substring(0,q.index),a.nodeValue=c,(d=d.substring(q.index+q[0].length))&&
+a.parentNode.insertBefore(l.createTextNode(d),a.nextSibling),v(a),c||a.parentNode.removeChild(a))}}function v(a){function b(a,c){var d=c?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=b(k,1),e=a.nextSibling;k.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,k.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var A=/(?:^|\s)nocode(?:\s|$)/,n=/\r\n?|\n/,l=a.ownerDocument,m=l.createElement("li");a.firstChild;)m.appendChild(a.firstChild);
+for(var c=[m],p=0;p<c.length;++p)b(c[p]);d===(d|0)&&c[0].setAttribute("value",d);var w=l.createElement("ol");w.className="linenums";d=Math.max(0,d-1|0)||0;for(var p=0,r=c.length;p<r;++p)m=c[p],m.className="L"+(p+d)%10,m.firstChild||m.appendChild(l.createTextNode("\u00a0")),w.appendChild(m);a.appendChild(w)}function t(a,d){for(var f=d.length;0<=--f;){var b=d[f];I.hasOwnProperty(b)?E.console&&console.warn("cannot override language handler %s",b):I[b]=a}}function K(a,d){a&&I.hasOwnProperty(a)||(a=/^\s*</.test(d)?
+"default-markup":"default-code");return I[a]}function M(a){var d=a.j;try{var f=U(a.h,a.l),b=f.a;a.a=b;a.c=f.c;a.i=0;K(d,b)(a);var v=/\bMSIE\s(\d+)/.exec(navigator.userAgent),v=v&&8>=+v[1],d=/\n/g,A=a.a,n=A.length,f=0,l=a.c,m=l.length,b=0,c=a.g,p=c.length,w=0;c[p]=n;var r,e;for(e=r=0;e<p;)c[e]!==c[e+2]?(c[r++]=c[e++],c[r++]=c[e++]):e+=2;p=r;for(e=r=0;e<p;){for(var t=c[e],z=c[e+1],q=e+2;q+2<=p&&c[q+1]===z;)q+=2;c[r++]=t;c[r++]=z;e=q}c.length=r;var g=a.h;a="";g&&(a=g.style.display,g.style.display="none");
+try{for(;b<m;){var h=l[b+2]||n,k=c[w+2]||n,q=Math.min(h,k),B=l[b+1],D;if(1!==B.nodeType&&(D=A.substring(f,q))){v&&(D=D.replace(d,"\r"));B.nodeValue=D;var N=B.ownerDocument,u=N.createElement("span");u.className=c[w+1];var y=B.parentNode;y.replaceChild(u,B);u.appendChild(B);f<h&&(l[b+1]=B=N.createTextNode(A.substring(q,h)),y.insertBefore(B,u.nextSibling))}f=q;f>=h&&(b+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(x){E.console&&console.log(x&&x.stack||x)}}var E=window,C=["break,continue,do,else,for,if,return,while"],
+F=[[C,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],H=[F,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
+O=[F,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],P=[F,"abstract,as,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],F=[F,"debugger,eval,export,function,get,instanceof,null,set,undefined,var,with,Infinity,NaN"],
+Q=[C,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],R=[C,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],C=[C,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],S=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+W=/\S/,X=y({keywords:[H,P,O,F,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",Q,R,C],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),I={};t(X,["default-code"]);t(G([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" "));t(G([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);t(G([],[["atv",/^[\s\S]+/]]),["uq.val"]);t(y({keywords:H,hashComments:!0,cStyleComments:!0,types:S}),"c cc cpp cxx cyc m".split(" "));t(y({keywords:"null,true,false"}),["json"]);t(y({keywords:P,hashComments:!0,cStyleComments:!0,
+verbatimStrings:!0,types:S}),["cs"]);t(y({keywords:O,cStyleComments:!0}),["java"]);t(y({keywords:C,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);t(y({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);t(y({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),
+["perl","pl","pm"]);t(y({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);t(y({keywords:F,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);t(y({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);t(G([],[["str",/^[\s\S]+/]]),["regex"]);
+var Y=E.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:y,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:E.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;f&&L(b,f,!0);M({j:d,m:f,h:b,l:1,a:null,i:null,c:null,
+g:null});return b.innerHTML},prettyPrint:E.prettyPrint=function(a,d){function f(){for(var b=E.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;p<t.length&&c.now()<b;p++){for(var d=t[p],l=g,m=d;m=m.previousSibling;){var n=m.nodeType,u=(7===n||8===n)&&m.nodeValue;if(u?!/^\??prettify\b/.test(u):3!==n||/\S/.test(m.nodeValue))break;if(u){l={};u.replace(/\b(\w+)=([\w:.%+-]+)/g,function(a,b,c){l[b]=c});break}}m=d.className;if((l!==g||r.test(m))&&!e.test(m)){n=!1;for(u=d.parentNode;u;u=u.parentNode)if(q.test(u.tagName)&&
+u.className&&r.test(u.className)){n=!0;break}if(!n){d.className+=" prettyprinted";n=l.lang;if(!n){var n=m.match(w),C;!n&&(C=V(d))&&z.test(C.tagName)&&(n=C.className.match(w));n&&(n=n[1])}if(y.test(d.tagName))u=1;else var u=d.currentStyle,x=v.defaultView,u=(u=u?u.whiteSpace:x&&x.getComputedStyle?x.getComputedStyle(d,null).getPropertyValue("white-space"):0)&&"pre"===u.substring(0,3);x=l.linenums;(x="true"===x||+x)||(x=(x=m.match(/\blinenums\b(?::(\d+))?/))?x[1]&&x[1].length?+x[1]:!0:!1);x&&L(d,x,u);
+M({j:n,h:d,m:x,l:u,a:null,i:null,c:null,g:null})}}}p<t.length?E.setTimeout(f,250):"function"===typeof a&&a()}for(var b=d||document.body,v=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],t=[],n=0;n<b.length;++n)for(var l=0,m=b[n].length;l<m;++l)t.push(b[n][l]);var b=null,c=Date;c.now||(c={now:function(){return+new Date}});var p=0,w=/\blang(?:uage)?-([\w.]+)(?!\S)/,r=/\bprettyprint\b/,e=/\bprettyprinted\b/,y=/pre|xmp/i,z=/^code$/i,
+q=/^(?:pre|code|xmp)$/i,g={};f()}},H=E.define;"function"===typeof H&&H.amd&&H("google-code-prettify",[],function(){return Y})})();}()
diff --git a/admin/survey/api/apidoc/vendor/prettify/run_prettify.js b/admin/survey/api/apidoc/vendor/prettify/run_prettify.js
new file mode 100644
index 0000000..2b9c75d
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/prettify/run_prettify.js
@@ -0,0 +1,63 @@
+!function(){/*
+
+ Copyright (C) 2013 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ Copyright (C) 2006 Google Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+(function(){function ba(g){function k(){try{M.doScroll("left")}catch(g){t.setTimeout(k,50);return}z("poll")}function z(k){if("readystatechange"!=k.type||"complete"==A.readyState)("load"==k.type?t:A)[B](p+k.type,z,!1),!q&&(q=!0)&&g.call(t,k.type||k)}var Y=A.addEventListener,q=!1,C=!0,x=Y?"addEventListener":"attachEvent",B=Y?"removeEventListener":"detachEvent",p=Y?"":"on";if("complete"==A.readyState)g.call(t,"lazy");else{if(A.createEventObject&&M.doScroll){try{C=!t.frameElement}catch(da){}C&&k()}A[x](p+
+"DOMContentLoaded",z,!1);A[x](p+"readystatechange",z,!1);t[x](p+"load",z,!1)}}function U(){V&&ba(function(){var g=N.length;ca(g?function(){for(var k=0;k<g;++k)(function(g){t.setTimeout(function(){t.exports[N[g]].apply(t,arguments)},0)})(k)}:void 0)})}for(var t=window,A=document,M=A.documentElement,O=A.head||A.getElementsByTagName("head")[0]||M,B="",F=A.getElementsByTagName("script"),q=F.length;0<=--q;){var P=F[q],Z=P.src.match(/^[^?#]*\/run_prettify\.js(\?[^#]*)?(?:#.*)?$/);if(Z){B=Z[1]||"";P.parentNode.removeChild(P);
+break}}var V=!0,H=[],Q=[],N=[];B.replace(/[?&]([^&=]+)=([^&]+)/g,function(g,k,z){z=decodeURIComponent(z);k=decodeURIComponent(k);"autorun"==k?V=!/^[0fn]/i.test(z):"lang"==k?H.push(z):"skin"==k?Q.push(z):"callback"==k&&N.push(z)});q=0;for(B=H.length;q<B;++q)(function(){var g=A.createElement("script");g.onload=g.onerror=g.onreadystatechange=function(){!g||g.readyState&&!/loaded|complete/.test(g.readyState)||(g.onerror=g.onload=g.onreadystatechange=null,--T,T||t.setTimeout(U,0),g.parentNode&&g.parentNode.removeChild(g),
+g=null)};g.type="text/javascript";g.src="https://cdn.rawgit.com/google/code-prettify/master/loader/lang-"+encodeURIComponent(H[q])+".js";O.insertBefore(g,O.firstChild)})(H[q]);for(var T=H.length,F=[],q=0,B=Q.length;q<B;++q)F.push("https://cdn.rawgit.com/google/code-prettify/master/loader/skins/"+encodeURIComponent(Q[q])+".css");F.push("https://cdn.rawgit.com/google/code-prettify/master/loader/prettify.css");(function(g){function k(q){if(q!==z){var t=A.createElement("link");t.rel="stylesheet";t.type=
+"text/css";q+1<z&&(t.error=t.onerror=function(){k(q+1)});t.href=g[q];O.appendChild(t)}}var z=g.length;k(0)})(F);var ca=function(){window.PR_SHOULD_USE_CONTINUATION=!0;var g;(function(){function k(a){function d(e){var b=e.charCodeAt(0);if(92!==b)return b;var a=e.charAt(1);return(b=W[a])?b:"0"<=a&&"7">=a?parseInt(e.substring(1),8):"u"===a||"x"===a?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return"\\"===e||"-"===
+e||"]"===e||"^"===e?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[0-9A-Fa-f]{4}|\\x[0-9A-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\s\S]|-|[^-\\]/g);e=[];var a="^"===b[0],c=["["];a&&c.push("^");for(var a=a?1:0,h=b.length;a<h;++a){var l=b[a];if(/\\[bdsw]/i.test(l))c.push(l);else{var l=d(l),n;a+2<h&&"-"===b[a+1]?(n=d(b[a+2]),a+=2):n=l;e.push([l,n]);65>n||122<l||(65>n||90<l||e.push([Math.max(65,l)|32,Math.min(n,90)|32]),97>n||122<l||e.push([Math.max(97,l)&-33,Math.min(n,122)&-33]))}}e.sort(function(e,
+a){return e[0]-a[0]||a[1]-e[1]});b=[];h=[];for(a=0;a<e.length;++a)l=e[a],l[0]<=h[1]+1?h[1]=Math.max(h[1],l[1]):b.push(h=l);for(a=0;a<b.length;++a)l=b[a],c.push(f(l[0])),l[1]>l[0]&&(l[1]+1>l[0]&&c.push("-"),c.push(f(l[1])));c.push("]");return c.join("")}function g(e){for(var a=e.source.match(/(?:\[(?:[^\x5C\x5D]|\\[\s\S])*\]|\\u[A-Fa-f0-9]{4}|\\x[A-Fa-f0-9]{2}|\\[0-9]+|\\[^ux0-9]|\(\?[:!=]|[\(\)\^]|[^\x5B\x5C\(\)\^]+)/g),c=a.length,d=[],h=0,l=0;h<c;++h){var n=a[h];"("===n?++l:"\\"===n.charAt(0)&&(n=
++n.substring(1))&&(n<=l?d[n]=-1:a[h]=f(n))}for(h=1;h<d.length;++h)-1===d[h]&&(d[h]=++k);for(l=h=0;h<c;++h)n=a[h],"("===n?(++l,d[l]||(a[h]="(?:")):"\\"===n.charAt(0)&&(n=+n.substring(1))&&n<=l&&(a[h]="\\"+d[n]);for(h=0;h<c;++h)"^"===a[h]&&"^"!==a[h+1]&&(a[h]="");if(e.ignoreCase&&I)for(h=0;h<c;++h)n=a[h],e=n.charAt(0),2<=n.length&&"["===e?a[h]=b(n):"\\"!==e&&(a[h]=n.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var k=0,I=!1,
+m=!1,J=0,c=a.length;J<c;++J){var r=a[J];if(r.ignoreCase)m=!0;else if(/[a-z]/i.test(r.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){I=!0;m=!1;break}}for(var W={b:8,t:9,n:10,v:11,f:12,r:13},u=[],J=0,c=a.length;J<c;++J){r=a[J];if(r.global||r.multiline)throw Error(""+r);u.push("(?:"+g(r)+")")}return new RegExp(u.join("|"),m?"gi":"g")}function q(a,d){function f(a){var c=a.nodeType;if(1==c){if(!b.test(a.className)){for(c=a.firstChild;c;c=c.nextSibling)f(c);c=a.nodeName.toLowerCase();if("br"===
+c||"li"===c)g[m]="\n",I[m<<1]=k++,I[m++<<1|1]=a}}else if(3==c||4==c)c=a.nodeValue,c.length&&(c=d?c.replace(/\r\n?/g,"\n"):c.replace(/[ \t\r\n]+/g," "),g[m]=c,I[m<<1]=k,k+=c.length,I[m++<<1|1]=a)}var b=/(?:^|\s)nocode(?:\s|$)/,g=[],k=0,I=[],m=0;f(a);return{a:g.join("").replace(/\n$/,""),c:I}}function t(a,d,f,b,g){f&&(a={h:a,l:1,j:null,m:null,a:f,c:null,i:d,g:null},b(a),g.push.apply(g,a.g))}function A(a){for(var d=void 0,f=a.firstChild;f;f=f.nextSibling)var b=f.nodeType,d=1===b?d?a:f:3===b?T.test(f.nodeValue)?
+a:d:d;return d===a?void 0:d}function C(a,d){function f(a){for(var m=a.i,k=a.h,c=[m,"pln"],r=0,W=a.a.match(g)||[],u={},e=0,q=W.length;e<q;++e){var D=W[e],w=u[D],h=void 0,l;if("string"===typeof w)l=!1;else{var n=b[D.charAt(0)];if(n)h=D.match(n[1]),w=n[0];else{for(l=0;l<p;++l)if(n=d[l],h=D.match(n[1])){w=n[0];break}h||(w="pln")}!(l=5<=w.length&&"lang-"===w.substring(0,5))||h&&"string"===typeof h[1]||(l=!1,w="src");l||(u[D]=w)}n=r;r+=D.length;if(l){l=h[1];var E=D.indexOf(l),G=E+l.length;h[2]&&(G=D.length-
+h[2].length,E=G-l.length);w=w.substring(5);t(k,m+n,D.substring(0,E),f,c);t(k,m+n+E,l,F(w,l),c);t(k,m+n+G,D.substring(G),f,c)}else c.push(m+n,w)}a.g=c}var b={},g;(function(){for(var f=a.concat(d),m=[],p={},c=0,r=f.length;c<r;++c){var q=f[c],u=q[3];if(u)for(var e=u.length;0<=--e;)b[u.charAt(e)]=q;q=q[1];u=""+q;p.hasOwnProperty(u)||(m.push(q),p[u]=null)}m.push(/[\0-\uffff]/);g=k(m)})();var p=d.length;return f}function x(a){var d=[],f=[];a.tripleQuotedStrings?d.push(["str",/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+null,"'\""]):a.multiLineStrings?d.push(["str",/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):d.push(["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);a.verbatimStrings&&f.push(["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var b=a.hashComments;b&&(a.cStyleComments?(1<b?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
+null,"#"]),f.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])):d.push(["com",/^#[^\r\n]*/,null,"#"]));a.cStyleComments&&(f.push(["com",/^\/\/[^\r\n]*/,null]),f.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(b=a.regexLiterals){var g=(b=1<b?"":"\n\r")?".":"[\\S\\s]";f.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+
+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+g+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+g+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&f.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&f.push(["kwd",new RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),null]);d.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");f.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i,
+null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pln",/^\\[\s\S]?/,null],["pun",new RegExp(b),null]);return C(d,f)}function B(a,d,f){function b(a){var c=a.nodeType;if(1==c&&!k.test(a.className))if("br"===a.nodeName)g(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((3==c||4==c)&&f){var d=a.nodeValue,p=d.match(q);p&&(c=d.substring(0,p.index),a.nodeValue=c,(d=d.substring(p.index+p[0].length))&&
+a.parentNode.insertBefore(m.createTextNode(d),a.nextSibling),g(a),c||a.parentNode.removeChild(a))}}function g(a){function b(a,c){var d=c?a.cloneNode(!1):a,n=a.parentNode;if(n){var n=b(n,1),e=a.nextSibling;n.appendChild(d);for(var f=e;f;f=e)e=f.nextSibling,n.appendChild(f)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=b(a.nextSibling,0);for(var d;(d=a.parentNode)&&1===d.nodeType;)a=d;c.push(a)}for(var k=/(?:^|\s)nocode(?:\s|$)/,q=/\r\n?|\n/,m=a.ownerDocument,p=m.createElement("li");a.firstChild;)p.appendChild(a.firstChild);
+for(var c=[p],r=0;r<c.length;++r)b(c[r]);d===(d|0)&&c[0].setAttribute("value",d);var t=m.createElement("ol");t.className="linenums";d=Math.max(0,d-1|0)||0;for(var r=0,u=c.length;r<u;++r)p=c[r],p.className="L"+(r+d)%10,p.firstChild||p.appendChild(m.createTextNode("\u00a0")),t.appendChild(p);a.appendChild(t)}function p(a,d){for(var f=d.length;0<=--f;){var b=d[f];X.hasOwnProperty(b)?R.console&&console.warn("cannot override language handler %s",b):X[b]=a}}function F(a,d){a&&X.hasOwnProperty(a)||(a=/^\s*</.test(d)?
+"default-markup":"default-code");return X[a]}function H(a){var d=a.j;try{var f=q(a.h,a.l),b=f.a;a.a=b;a.c=f.c;a.i=0;F(d,b)(a);var g=/\bMSIE\s(\d+)/.exec(navigator.userAgent),g=g&&8>=+g[1],d=/\n/g,p=a.a,k=p.length,f=0,m=a.c,t=m.length,b=0,c=a.g,r=c.length,x=0;c[r]=k;var u,e;for(e=u=0;e<r;)c[e]!==c[e+2]?(c[u++]=c[e++],c[u++]=c[e++]):e+=2;r=u;for(e=u=0;e<r;){for(var A=c[e],D=c[e+1],w=e+2;w+2<=r&&c[w+1]===D;)w+=2;c[u++]=A;c[u++]=D;e=w}c.length=u;var h=a.h;a="";h&&(a=h.style.display,h.style.display="none");
+try{for(;b<t;){var l=m[b+2]||k,n=c[x+2]||k,w=Math.min(l,n),E=m[b+1],G;if(1!==E.nodeType&&(G=p.substring(f,w))){g&&(G=G.replace(d,"\r"));E.nodeValue=G;var aa=E.ownerDocument,v=aa.createElement("span");v.className=c[x+1];var B=E.parentNode;B.replaceChild(v,E);v.appendChild(E);f<l&&(m[b+1]=E=aa.createTextNode(p.substring(w,l)),B.insertBefore(E,v.nextSibling))}f=w;f>=l&&(b+=2);f>=n&&(x+=2)}}finally{h&&(h.style.display=a)}}catch(y){R.console&&console.log(y&&y.stack||y)}}var R=window,K=["break,continue,do,else,for,if,return,while"],
+L=[[K,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],S=[L,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
+M=[L,"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],N=[L,"abstract,as,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],L=[L,"debugger,eval,export,function,get,instanceof,null,set,undefined,var,with,Infinity,NaN"],
+O=[K,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],P=[K,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],K=[K,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],Q=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/,
+T=/\S/,U=x({keywords:[S,N,M,L,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",O,P,K],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),X={};p(U,["default-code"]);p(C([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",
+/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),"default-markup htm html mxml xhtml xml xsl".split(" "));p(C([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+["pun",/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\s\S]+/]]),["uq.val"]);p(x({keywords:S,hashComments:!0,cStyleComments:!0,types:Q}),"c cc cpp cxx cyc m".split(" "));p(x({keywords:"null,true,false"}),["json"]);p(x({keywords:N,hashComments:!0,cStyleComments:!0,
+verbatimStrings:!0,types:Q}),["cs"]);p(x({keywords:M,cStyleComments:!0}),["java"]);p(x({keywords:K,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(x({keywords:O,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(x({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),
+["perl","pl","pm"]);p(x({keywords:P,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(x({keywords:L,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(x({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(C([],[["str",/^[\s\S]+/]]),["regex"]);
+var V=R.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:function(a,d,f){f=f||!1;d=d||null;var b=document.createElement("div");b.innerHTML="<pre>"+a+"</pre>";b=b.firstChild;f&&B(b,f,!0);H({j:d,m:f,h:b,l:1,a:null,i:null,c:null,g:null});return b.innerHTML},
+prettyPrint:g=g=function(a,d){function f(){for(var b=R.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity;r<p.length&&c.now()<b;r++){for(var d=p[r],k=h,q=d;q=q.previousSibling;){var m=q.nodeType,v=(7===m||8===m)&&q.nodeValue;if(v?!/^\??prettify\b/.test(v):3!==m||/\S/.test(q.nodeValue))break;if(v){k={};v.replace(/\b(\w+)=([\w:.%+-]+)/g,function(a,b,c){k[b]=c});break}}q=d.className;if((k!==h||u.test(q))&&!e.test(q)){m=!1;for(v=d.parentNode;v;v=v.parentNode)if(w.test(v.tagName)&&v.className&&u.test(v.className)){m=
+!0;break}if(!m){d.className+=" prettyprinted";m=k.lang;if(!m){var m=q.match(t),C;!m&&(C=A(d))&&z.test(C.tagName)&&(m=C.className.match(t));m&&(m=m[1])}if(x.test(d.tagName))v=1;else var v=d.currentStyle,y=g.defaultView,v=(v=v?v.whiteSpace:y&&y.getComputedStyle?y.getComputedStyle(d,null).getPropertyValue("white-space"):0)&&"pre"===v.substring(0,3);y=k.linenums;(y="true"===y||+y)||(y=(y=q.match(/\blinenums\b(?::(\d+))?/))?y[1]&&y[1].length?+y[1]:!0:!1);y&&B(d,y,v);H({j:m,h:d,m:y,l:v,a:null,i:null,c:null,
+g:null})}}}r<p.length?R.setTimeout(f,250):"function"===typeof a&&a()}for(var b=d||document.body,g=b.ownerDocument||document,b=[b.getElementsByTagName("pre"),b.getElementsByTagName("code"),b.getElementsByTagName("xmp")],p=[],k=0;k<b.length;++k)for(var m=0,q=b[k].length;m<q;++m)p.push(b[k][m]);var b=null,c=Date;c.now||(c={now:function(){return+new Date}});var r=0,t=/\blang(?:uage)?-([\w.]+)(?!\S)/,u=/\bprettyprint\b/,e=/\bprettyprinted\b/,x=/pre|xmp/i,z=/^code$/i,w=/^(?:pre|code|xmp)$/i,h={};f()}},
+S=R.define;"function"===typeof S&&S.amd&&S("google-code-prettify",[],function(){return V})})();return g}();T||t.setTimeout(U,0)})();}()
diff --git a/admin/survey/api/apidoc/vendor/require.min.js b/admin/survey/api/apidoc/vendor/require.min.js
new file mode 100644
index 0000000..017c66e
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/require.min.js
@@ -0,0 +1,37 @@
+/*
+ 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
+*/
+var requirejs,require,define;
+(function(ha){function L(b){return"[object Function]"===R.call(b)}function M(b){return"[object Array]"===R.call(b)}function x(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+=1);}}function Y(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b));--d);}}function w(b,c){return la.call(b,c)}function g(b,c){return w(b,c)&&b[c]}function E(b,c){for(var d in b)if(w(b,d)&&c(b[d],d))break}function Z(b,c,d,k){c&&E(c,function(c,g){if(d||!w(b,g))!k||"object"!==typeof c||!c||M(c)||L(c)||c instanceof
+RegExp?b[g]=c:(b[g]||(b[g]={}),Z(b[g],c,d,k))});return b}function y(b,c){return function(){return c.apply(b,arguments)}}function ia(b){throw b;}function ja(b){if(!b)return b;var c=ha;x(b.split("."),function(b){c=c[b]});return c}function G(b,c,d,g){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"+b);c.requireType=b;c.requireModules=g;d&&(c.originalError=d);return c}function ma(b){function c(a,n,b){var f,l,c,d,h,k,e,A;n=n&&n.split("/");var q=m.map,p=q&&q["*"];if(a){a=a.split("/");l=a.length-1;m.nodeIdCompat&&
+V.test(a[l])&&(a[l]=a[l].replace(V,""));"."===a[0].charAt(0)&&n&&(l=n.slice(0,n.length-1),a=l.concat(a));l=a;for(c=0;c<l.length;c++)d=l[c],"."===d?(l.splice(c,1),--c):".."===d&&0!==c&&(1!==c||".."!==l[2])&&".."!==l[c-1]&&0<c&&(l.splice(c-1,2),c-=2);a=a.join("/")}if(b&&q&&(n||p)){l=a.split("/");c=l.length;a:for(;0<c;--c){h=l.slice(0,c).join("/");if(n)for(d=n.length;0<d;--d)if(b=g(q,n.slice(0,d).join("/")))if(b=g(b,h)){f=b;k=c;break a}!e&&p&&g(p,h)&&(e=g(p,h),A=c)}!f&&e&&(f=e,k=A);f&&(l.splice(0,k,
+f),a=l.join("/"))}return(f=g(m.pkgs,a))?f:a}function d(a){F&&x(document.getElementsByTagName("script"),function(n){if(n.getAttribute("data-requiremodule")===a&&n.getAttribute("data-requirecontext")===h.contextName)return n.parentNode.removeChild(n),!0})}function p(a){var n=g(m.paths,a);if(n&&M(n)&&1<n.length)return n.shift(),h.require.undef(a),h.makeRequire(null,{skipMap:!0})([a]),!0}function e(a){var n,b=a?a.indexOf("!"):-1;-1<b&&(n=a.substring(0,b),a=a.substring(b+1,a.length));return[n,a]}function q(a,
+n,b,f){var l,d,z=null,k=n?n.name:null,m=a,q=!0,A="";a||(q=!1,a="_@r"+(R+=1));a=e(a);z=a[0];a=a[1];z&&(z=c(z,k,f),d=g(r,z));a&&(z?A=d&&d.normalize?d.normalize(a,function(a){return c(a,k,f)}):-1===a.indexOf("!")?c(a,k,f):a:(A=c(a,k,f),a=e(A),z=a[0],A=a[1],b=!0,l=h.nameToUrl(A)));b=!z||d||b?"":"_unnormalized"+(U+=1);return{prefix:z,name:A,parentMap:n,unnormalized:!!b,url:l,originalName:m,isDefine:q,id:(z?z+"!"+A:A)+b}}function u(a){var b=a.id,c=g(t,b);c||(c=t[b]=new h.Module(a));return c}function v(a,
+b,c){var f=a.id,l=g(t,f);if(!w(r,f)||l&&!l.defineEmitComplete)if(l=u(a),l.error&&"error"===b)c(l.error);else l.on(b,c);else"defined"===b&&c(r[f])}function B(a,b){var c=a.requireModules,f=!1;if(b)b(a);else if(x(c,function(b){if(b=g(t,b))b.error=a,b.events.error&&(f=!0,b.emit("error",a))}),!f)k.onError(a)}function C(){W.length&&(x(W,function(a){var b=a[0];"string"===typeof b&&(h.defQueueMap[b]=!0);H.push(a)}),W=[])}function D(a){delete t[a];delete aa[a]}function K(a,b,c){var f=a.map.id;a.error?a.emit("error",
+a.error):(b[f]=!0,x(a.depMaps,function(f,d){var h=f.id,k=g(t,h);!k||a.depMatched[d]||c[h]||(g(b,h)?(a.defineDep(d,r[h]),a.check()):K(k,b,c))}),c[f]=!0)}function I(){var a,b,c=(a=1E3*m.waitSeconds)&&h.startTime+a<(new Date).getTime(),f=[],l=[],k=!1,g=!0;if(!ba){ba=!0;E(aa,function(a){var h=a.map,e=h.id;if(a.enabled&&(h.isDefine||l.push(a),!a.error))if(!a.inited&&c)p(e)?k=b=!0:(f.push(e),d(e));else if(!a.inited&&a.fetched&&h.isDefine&&(k=!0,!h.prefix))return g=!1});if(c&&f.length)return a=G("timeout",
+"Load timeout for modules: "+f,null,f),a.contextName=h.contextName,B(a);g&&x(l,function(a){K(a,{},{})});c&&!b||!k||!F&&!ka||ca||(ca=setTimeout(function(){ca=0;I()},50));ba=!1}}function J(a){w(r,a[0])||u(q(a[0],null,!0)).init(a[1],a[2])}function P(a){a=a.currentTarget||a.srcElement;var b=h.onScriptLoad;a.detachEvent&&!da?a.detachEvent("onreadystatechange",b):a.removeEventListener("load",b,!1);b=h.onScriptError;a.detachEvent&&!da||a.removeEventListener("error",b,!1);return{node:a,id:a&&a.getAttribute("data-requiremodule")}}
+function Q(){var a;for(C();H.length;){a=H.shift();if(null===a[0])return B(G("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));J(a)}h.defQueueMap={}}var ba,ea,h,S,ca,m={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},t={},aa={},fa={},H=[],r={},X={},ga={},R=1,U=1;S={require:function(a){return a.require?a.require:a.require=h.makeRequire(a.map)},exports:function(a){a.usingExports=!0;if(a.map.isDefine)return a.exports?r[a.map.id]=a.exports:a.exports=r[a.map.id]=
+{}},module:function(a){return a.module?a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return g(m.config,a.map.id)||{}},exports:a.exports||(a.exports={})}}};ea=function(a){this.events=g(fa,a.id)||{};this.map=a;this.shim=g(m.shim,a.id);this.depExports=[];this.depMaps=[];this.depMatched=[];this.pluginMaps={};this.depCount=0};ea.prototype={init:function(a,b,c,f){f=f||{};if(!this.inited){this.factory=b;if(c)this.on("error",c);else this.events.error&&(c=y(this,function(a){this.emit("error",
+a)}));this.depMaps=a&&a.slice(0);this.errback=c;this.inited=!0;this.ignore=f.ignore;f.enabled||this.enabled?this.enable():this.check()}},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,--this.depCount,this.depExports[a]=b)},fetch:function(){if(!this.fetched){this.fetched=!0;h.startTime=(new Date).getTime();var a=this.map;if(this.shim)h.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],y(this,function(){return a.prefix?this.callPlugin():this.load()}));else return a.prefix?
+this.callPlugin():this.load()}},load:function(){var a=this.map.url;X[a]||(X[a]=!0,h.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id;b=this.depExports;var f=this.exports,l=this.factory;if(!this.inited)w(h.defQueueMap,c)||this.fetch();else if(this.error)this.emit("error",this.error);else if(!this.defining){this.defining=!0;if(1>this.depCount&&!this.defined){if(L(l)){try{f=h.execCb(c,l,b,f)}catch(d){a=d}this.map.isDefine&&void 0===f&&((b=this.module)?f=b.exports:
+this.usingExports&&(f=this.exports));if(a){if(this.events.error&&this.map.isDefine||k.onError!==ia)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",B(this.error=a);if("undefined"!==typeof console&&console.error)console.error(a);else k.onError(a)}}else f=l;this.exports=f;if(this.map.isDefine&&!this.ignore&&(r[c]=f,k.onResourceLoad)){var e=[];x(this.depMaps,function(a){e.push(a.normalizedMap||a)});k.onResourceLoad(h,
+this.map,e)}D(c);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}},callPlugin:function(){var a=this.map,b=a.id,d=q(a.prefix);this.depMaps.push(d);v(d,"defined",y(this,function(f){var l,d,e=g(ga,this.map.id),N=this.map.name,p=this.map.parentMap?this.map.parentMap.name:null,r=h.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(f.normalize&&(N=f.normalize(N,function(a){return c(a,
+p,!0)})||""),d=q(a.prefix+"!"+N,this.map.parentMap),v(d,"defined",y(this,function(a){this.map.normalizedMap=d;this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),f=g(t,d.id)){this.depMaps.push(d);if(this.events.error)f.on("error",y(this,function(a){this.emit("error",a)}));f.enable()}}else e?(this.map.url=h.nameToUrl(e),this.load()):(l=y(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),l.error=y(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];
+E(t,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&D(a.map.id)});B(a)}),l.fromText=y(this,function(f,c){var d=a.name,e=q(d),N=T;c&&(f=c);N&&(T=!1);u(e);w(m.config,b)&&(m.config[d]=m.config[b]);try{k.exec(f)}catch(g){return B(G("fromtexteval","fromText eval for "+b+" failed: "+g,g,[b]))}N&&(T=!0);this.depMaps.push(e);h.completeLoad(d);r([d],l)}),f.load(a.name,r,l,m))}));h.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){aa[this.map.id]=this;this.enabling=this.enabled=!0;x(this.depMaps,
+y(this,function(a,b){var c,f;if("string"===typeof a){a=q(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=g(S,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;v(a,"defined",y(this,function(a){this.undefed||(this.defineDep(b,a),this.check())}));this.errback?v(a,"error",y(this,this.errback)):this.events.error&&v(a,"error",y(this,function(a){this.emit("error",a)}))}c=a.id;f=t[c];w(S,c)||!f||f.enabled||h.enable(a,this)}));E(this.pluginMaps,y(this,function(a){var b=
+g(t,a.id);b&&!b.enabled&&h.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){x(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};h={config:m,contextName:b,registry:t,defined:r,urlFetched:X,defQueue:H,defQueueMap:{},Module:ea,makeModuleMap:q,nextTick:k.nextTick,onError:B,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=m.shim,c={paths:!0,
+bundles:!0,config:!0,map:!0};E(a,function(a,b){c[b]?(m[b]||(m[b]={}),Z(m[b],a,!0,!0)):m[b]=a});a.bundles&&E(a.bundles,function(a,b){x(a,function(a){a!==b&&(ga[a]=b)})});a.shim&&(E(a.shim,function(a,c){M(a)&&(a={deps:a});!a.exports&&!a.init||a.exportsFn||(a.exportsFn=h.makeShimExports(a));b[c]=a}),m.shim=b);a.packages&&x(a.packages,function(a){var b;a="string"===typeof a?{name:a}:a;b=a.name;a.location&&(m.paths[b]=a.location);m.pkgs[b]=a.name+"/"+(a.main||"main").replace(na,"").replace(V,"")});E(t,
+function(a,b){a.inited||a.map.unnormalized||(a.map=q(b,null,!0))});(a.deps||a.callback)&&h.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ha,arguments));return b||a.exports&&ja(a.exports)}},makeRequire:function(a,n){function e(c,d,g){var m,p;n.enableBuildCallback&&d&&L(d)&&(d.__requireJsBuild=!0);if("string"===typeof c){if(L(d))return B(G("requireargs","Invalid require call"),g);if(a&&w(S,c))return S[c](t[a.id]);if(k.get)return k.get(h,
+c,a,e);m=q(c,a,!1,!0);m=m.id;return w(r,m)?r[m]:B(G("notloaded",'Module name "'+m+'" has not been loaded yet for context: '+b+(a?"":". Use require([])")))}Q();h.nextTick(function(){Q();p=u(q(null,a));p.skipMap=n.skipMap;p.init(c,d,g,{enabled:!0});I()});return e}n=n||{};Z(e,{isBrowser:F,toUrl:function(b){var d,e=b.lastIndexOf("."),n=b.split("/")[0];-1!==e&&("."!==n&&".."!==n||1<e)&&(d=b.substring(e,b.length),b=b.substring(0,e));return h.nameToUrl(c(b,a&&a.id,!0),d,!0)},defined:function(b){return w(r,
+q(b,a,!1,!0).id)},specified:function(b){b=q(b,a,!1,!0).id;return w(r,b)||w(t,b)}});a||(e.undef=function(b){C();var c=q(b,a,!0),e=g(t,b);e.undefed=!0;d(b);delete r[b];delete X[c.url];delete fa[b];Y(H,function(a,c){a[0]===b&&H.splice(c,1)});delete h.defQueueMap[b];e&&(e.events.defined&&(fa[b]=e.events),D(b))});return e},enable:function(a){g(t,a.id)&&u(a).enable()},completeLoad:function(a){var b,c,d=g(m.shim,a)||{},e=d.exports;for(C();H.length;){c=H.shift();if(null===c[0]){c[0]=a;if(b)break;b=!0}else c[0]===
+a&&(b=!0);J(c)}h.defQueueMap={};c=g(t,a);if(!b&&!w(r,a)&&c&&!c.inited)if(!m.enforceDefine||e&&ja(e))J([a,d.deps||[],d.exportsFn]);else return p(a)?void 0:B(G("nodefine","No define call for "+a,null,[a]));I()},nameToUrl:function(a,b,c){var d,e,p;(d=g(m.pkgs,a))&&(a=d);if(d=g(ga,a))return h.nameToUrl(d,b,c);if(k.jsExtRegExp.test(a))d=a+(b||"");else{d=m.paths;a=a.split("/");for(e=a.length;0<e;--e)if(p=a.slice(0,e).join("/"),p=g(d,p)){M(p)&&(p=p[0]);a.splice(0,e,p);break}d=a.join("/");d+=b||(/^data\:|\?/.test(d)||
+c?"":".js");d=("/"===d.charAt(0)||d.match(/^[\w\+\.\-]+:/)?"":m.baseUrl)+d}return m.urlArgs?d+((-1===d.indexOf("?")?"?":"&")+m.urlArgs):d},load:function(a,b){k.load(h,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||oa.test((a.currentTarget||a.srcElement).readyState))O=null,a=P(a),h.completeLoad(a.id)},onScriptError:function(a){var b=P(a);if(!p(b.id)){var c=[];E(t,function(a,d){0!==d.indexOf("_@r")&&x(a.depMaps,function(a){a.id===b.id&&c.push(d);return!0})});
+return B(G("scripterror",'Script error for "'+b.id+(c.length?'", needed by: '+c.join(", "):'"'),a,[b.id]))}}};h.require=h.makeRequire();return h}function pa(){if(O&&"interactive"===O.readyState)return O;Y(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return O=b});return O}var k,C,D,I,P,J,O,Q,u,U,qa=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,ra=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,V=/\.js$/,na=/^\.\//;C=Object.prototype;var R=C.toString,la=C.hasOwnProperty,
+F=!("undefined"===typeof window||"undefined"===typeof navigator||!window.document),ka=!F&&"undefined"!==typeof importScripts,oa=F&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,da="undefined"!==typeof opera&&"[object Opera]"===opera.toString(),K={},v={},W=[],T=!1;if("undefined"===typeof define){if("undefined"!==typeof requirejs){if(L(requirejs))return;v=requirejs;requirejs=void 0}"undefined"===typeof require||L(require)||(v=require,require=void 0);k=requirejs=function(b,
+c,d,p){var e,q="_";M(b)||"string"===typeof b||(e=b,M(c)?(b=c,c=d,d=p):b=[]);e&&e.context&&(q=e.context);(p=g(K,q))||(p=K[q]=k.s.newContext(q));e&&p.configure(e);return p.require(b,c,d)};k.config=function(b){return k(b)};k.nextTick="undefined"!==typeof setTimeout?function(b){setTimeout(b,4)}:function(b){b()};require||(require=k);k.version="2.1.22";k.jsExtRegExp=/^\/|:|\?|\.js$/;k.isBrowser=F;C=k.s={contexts:K,newContext:ma};k({});x(["toUrl","undef","defined","specified"],function(b){k[b]=function(){var c=
+K._;return c.require[b].apply(c,arguments)}});F&&(D=C.head=document.getElementsByTagName("head")[0],I=document.getElementsByTagName("base")[0])&&(D=C.head=I.parentNode);k.onError=ia;k.createNode=function(b,c,d){c=b.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");c.type=b.scriptType||"text/javascript";c.charset="utf-8";c.async=!0;return c};k.load=function(b,c,d){var g=b&&b.config||{},e;if(F){e=k.createNode(g,c,d);if(g.onNodeCreated)g.onNodeCreated(e,
+g,c,d);e.setAttribute("data-requirecontext",b.contextName);e.setAttribute("data-requiremodule",c);!e.attachEvent||e.attachEvent.toString&&0>e.attachEvent.toString().indexOf("[native code")||da?(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)):(T=!0,e.attachEvent("onreadystatechange",b.onScriptLoad));e.src=d;Q=e;I?D.insertBefore(e,I):D.appendChild(e);Q=null;return e}if(ka)try{importScripts(d),b.completeLoad(c)}catch(q){b.onError(G("importscripts","importScripts failed for "+
+c+" at "+d,q,[c]))}};F&&!v.skipDataMain&&Y(document.getElementsByTagName("script"),function(b){D||(D=b.parentNode);if(P=b.getAttribute("data-main"))return u=P,v.baseUrl||(J=u.split("/"),u=J.pop(),U=J.length?J.join("/")+"/":"./",v.baseUrl=U),u=u.replace(V,""),k.jsExtRegExp.test(u)&&(u=P),v.deps=v.deps?v.deps.concat(u):[u],!0});define=function(b,c,d){var g,e;"string"!==typeof b&&(d=c,c=b,b=null);M(c)||(d=c,c=null);!c&&L(d)&&(c=[],d.length&&(d.toString().replace(qa,"").replace(ra,function(b,d){c.push(d)}),
+c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));T&&(g=Q||pa())&&(b||(b=g.getAttribute("data-requiremodule")),e=K[g.getAttribute("data-requirecontext")]);e?(e.defQueue.push([b,c,d]),e.defQueueMap[b]=!0):W.push([b,c,d])};define.amd={jQuery:!0};k.exec=function(b){return eval(b)};k(v)}})(this);
diff --git a/admin/survey/api/apidoc/vendor/semver.min.js b/admin/survey/api/apidoc/vendor/semver.min.js
new file mode 100644
index 0000000..c2b3ff4
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/semver.min.js
@@ -0,0 +1 @@
+(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=K;e.SEMVER_SPEC_VERSION="2.0.0";var r=256;var t=Number.MAX_SAFE_INTEGER||9007199254740991;var n=e.re=[];var i=e.src=[];var s=0;var o=s++;i[o]="0|[1-9]\\d*";var a=s++;i[a]="[0-9]+";var f=s++;i[f]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var u=s++;i[u]="("+i[o]+")\\."+"("+i[o]+")\\."+"("+i[o]+")";var l=s++;i[l]="("+i[a]+")\\."+"("+i[a]+")\\."+"("+i[a]+")";var p=s++;i[p]="(?:"+i[o]+"|"+i[f]+")";var h=s++;i[h]="(?:"+i[a]+"|"+i[f]+")";var c=s++;i[c]="(?:-("+i[p]+"(?:\\."+i[p]+")*))";var v=s++;i[v]="(?:-?("+i[h]+"(?:\\."+i[h]+")*))";var m=s++;i[m]="[0-9A-Za-z-]+";var g=s++;i[g]="(?:\\+("+i[m]+"(?:\\."+i[m]+")*))";var w=s++;var y="v?"+i[u]+i[c]+"?"+i[g]+"?";i[w]="^"+y+"$";var d="[v=\\s]*"+i[l]+i[v]+"?"+i[g]+"?";var j=s++;i[j]="^"+d+"$";var b=s++;i[b]="((?:<|>)?=?)";var E=s++;i[E]=i[a]+"|x|X|\\*";var $=s++;i[$]=i[o]+"|x|X|\\*";var k=s++;i[k]="[v=\\s]*("+i[$]+")"+"(?:\\.("+i[$]+")"+"(?:\\.("+i[$]+")"+"(?:"+i[c]+")?"+i[g]+"?"+")?)?";var R=s++;i[R]="[v=\\s]*("+i[E]+")"+"(?:\\.("+i[E]+")"+"(?:\\.("+i[E]+")"+"(?:"+i[v]+")?"+i[g]+"?"+")?)?";var S=s++;i[S]="^"+i[b]+"\\s*"+i[k]+"$";var x=s++;i[x]="^"+i[b]+"\\s*"+i[R]+"$";var I=s++;i[I]="(?:~>?)";var T=s++;i[T]="(\\s*)"+i[I]+"\\s+";n[T]=new RegExp(i[T],"g");var V="$1~";var A=s++;i[A]="^"+i[I]+i[k]+"$";var C=s++;i[C]="^"+i[I]+i[R]+"$";var M=s++;i[M]="(?:\\^)";var N=s++;i[N]="(\\s*)"+i[M]+"\\s+";n[N]=new RegExp(i[N],"g");var _="$1^";var z=s++;i[z]="^"+i[M]+i[k]+"$";var P=s++;i[P]="^"+i[M]+i[R]+"$";var X=s++;i[X]="^"+i[b]+"\\s*("+d+")$|^$";var Z=s++;i[Z]="^"+i[b]+"\\s*("+y+")$|^$";var q=s++;i[q]="(\\s*)"+i[b]+"\\s*("+d+"|"+i[k]+")";n[q]=new RegExp(i[q],"g");var L="$1$2$3";var F=s++;i[F]="^\\s*("+i[k]+")"+"\\s+-\\s+"+"("+i[k]+")"+"\\s*$";var G=s++;i[G]="^\\s*("+i[R]+")"+"\\s+-\\s+"+"("+i[R]+")"+"\\s*$";var O=s++;i[O]="(<|>)?=?\\s*\\*";for(var B=0;B<s;B++){if(!n[B])n[B]=new RegExp(i[B])}e.parse=D;function D(e,t){if(e instanceof K)return e;if(typeof e!=="string")return null;if(e.length>r)return null;var i=t?n[j]:n[w];if(!i.test(e))return null;try{return new K(e,t)}catch(s){return null}}e.valid=H;function H(e,r){var t=D(e,r);return t?t.version:null}e.clean=J;function J(e,r){var t=D(e.trim().replace(/^[=v]+/,""),r);return t?t.version:null}e.SemVer=K;function K(e,i){if(e instanceof K){if(e.loose===i)return e;else e=e.version}else if(typeof e!=="string"){throw new TypeError("Invalid Version: "+e)}if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof K))return new K(e,i);this.loose=i;var s=e.trim().match(i?n[j]:n[w]);if(!s)throw new TypeError("Invalid Version: "+e);this.raw=e;this.major=+s[1];this.minor=+s[2];this.patch=+s[3];if(this.major>t||this.major<0)throw new TypeError("Invalid major version");if(this.minor>t||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>t||this.patch<0)throw new TypeError("Invalid patch version");if(!s[4])this.prerelease=[];else this.prerelease=s[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r<t)return r}return e});this.build=s[5]?s[5].split("."):[];this.format()}K.prototype.format=function(){this.version=this.major+"."+this.minor+"."+this.patch;if(this.prerelease.length)this.version+="-"+this.prerelease.join(".");return this.version};K.prototype.inspect=function(){return'<SemVer "'+this+'">'};K.prototype.toString=function(){return this.version};K.prototype.compare=function(e){if(!(e instanceof K))e=new K(e,this.loose);return this.compareMain(e)||this.comparePre(e)};K.prototype.compareMain=function(e){if(!(e instanceof K))e=new K(e,this.loose);return Y(this.major,e.major)||Y(this.minor,e.minor)||Y(this.patch,e.patch)};K.prototype.comparePre=function(e){if(!(e instanceof K))e=new K(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Y(t,n)}while(++r)};K.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=Q;function Q(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new K(e,t).inc(r,n).version}catch(i){return null}}e.diff=U;function U(e,r){if(pr(e,r)){return null}else{var t=D(e);var n=D(r);if(t.prerelease.length||n.prerelease.length){for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return"pre"+i}}}return"prerelease"}for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return i}}}}}e.compareIdentifiers=Y;var W=/^[0-9]+$/;function Y(e,r){var t=W.test(e);var n=W.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:e<r?-1:e>r?1:0}e.rcompareIdentifiers=er;function er(e,r){return Y(r,e)}e.major=rr;function rr(e,r){return new K(e,r).major}e.minor=tr;function tr(e,r){return new K(e,r).minor}e.patch=nr;function nr(e,r){return new K(e,r).patch}e.compare=ir;function ir(e,r,t){return new K(e,t).compare(r)}e.compareLoose=sr;function sr(e,r){return ir(e,r,true)}e.rcompare=or;function or(e,r,t){return ir(r,e,t)}e.sort=ar;function ar(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=fr;function fr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=ur;function ur(e,r,t){return ir(e,r,t)>0}e.lt=lr;function lr(e,r,t){return ir(e,r,t)<0}e.eq=pr;function pr(e,r,t){return ir(e,r,t)===0}e.neq=hr;function hr(e,r,t){return ir(e,r,t)!==0}e.gte=cr;function cr(e,r,t){return ir(e,r,t)>=0}e.lte=vr;function vr(e,r,t){return ir(e,r,t)<=0}e.cmp=mr;function mr(e,r,t,n){var i;switch(r){case"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e!==t;break;case"":case"=":case"==":i=pr(e,t,n);break;case"!=":i=hr(e,t,n);break;case">":i=ur(e,t,n);break;case">=":i=cr(e,t,n);break;case"<":i=lr(e,t,n);break;case"<=":i=vr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=gr;function gr(e,r){if(e instanceof gr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof gr))return new gr(e,r);this.loose=r;this.parse(e);if(this.semver===wr)this.value="";else this.value=this.operator+this.semver.version}var wr={};gr.prototype.parse=function(e){var r=this.loose?n[X]:n[Z];var t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1];if(this.operator==="=")this.operator="";if(!t[2])this.semver=wr;else this.semver=new K(t[2],this.loose)};gr.prototype.inspect=function(){return'<SemVer Comparator "'+this+'">'};gr.prototype.toString=function(){return this.value};gr.prototype.test=function(e){if(this.semver===wr)return true;if(typeof e==="string")e=new K(e,this.loose);return mr(e,this.operator,this.semver,this.loose)};e.Range=yr;function yr(e,r){if(e instanceof yr&&e.loose===r)return e;if(!(this instanceof yr))return new yr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}yr.prototype.inspect=function(){return'<SemVer Range "'+this.range+'">'};yr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};yr.prototype.toString=function(){return this.range};yr.prototype.parseRange=function(e){var r=this.loose;e=e.trim();var t=r?n[G]:n[F];e=e.replace(t,Tr);e=e.replace(n[q],L);e=e.replace(n[T],V);e=e.replace(n[N],_);e=e.split(/\s+/).join(" ");var i=r?n[X]:n[Z];var s=e.split(" ").map(function(e){return jr(e,r)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new gr(e,r)});return s};e.toComparators=dr;function dr(e,r){return new yr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function jr(e,r){e=kr(e,r);e=Er(e,r);e=Sr(e,r);e=Ir(e,r);return e}function br(e){return!e||e.toLowerCase()==="x"||e==="*"}function Er(e,r){return e.trim().split(/\s+/).map(function(e){return $r(e,r)}).join(" ")}function $r(e,r){var t=r?n[C]:n[A];return e.replace(t,function(e,r,t,n,i){var s;if(br(r))s="";else if(br(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(br(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0";return s})}function kr(e,r){return e.trim().split(/\s+/).map(function(e){return Rr(e,r)}).join(" ")}function Rr(e,r){var t=r?n[P]:n[z];return e.replace(t,function(e,r,t,n,i){var s;if(br(r))s="";else if(br(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(br(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function Sr(e,r){return e.split(/\s+/).map(function(e){return xr(e,r)}).join(" ")}function xr(e,r){e=e.trim();var t=r?n[x]:n[S];return e.replace(t,function(e,r,t,n,i,s){var o=br(t);var a=o||br(n);var f=a||br(i);var u=f;if(r==="="&&u)r="";if(o){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(a)n=0;if(f)i=0;if(r===">"){r=">=";if(a){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(a)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(a){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function Ir(e,r){return e.trim().replace(n[O],"")}function Tr(e,r,t,n,i,s,o,a,f,u,l,p,h){if(br(t))r="";else if(br(n))r=">="+t+".0.0";else if(br(i))r=">="+t+"."+n+".0";else r=">="+r;if(br(f))a="";else if(br(u))a="<"+(+f+1)+".0.0";else if(br(l))a="<"+f+"."+(+u+1)+".0";else if(p)a="<="+f+"."+u+"."+l+"-"+p;else a="<="+a;return(r+" "+a).trim()}yr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new K(e,this.loose);for(var r=0;r<this.set.length;r++){if(Vr(this.set[r],e))return true}return false};function Vr(e,r){for(var t=0;t<e.length;t++){if(!e[t].test(r))return false}if(r.prerelease.length){for(var t=0;t<e.length;t++){if(e[t].semver===wr)return true;if(e[t].semver.prerelease.length>0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=Ar;function Ar(e,r,t){try{r=new yr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Cr;function Cr(e,r,t){return e.filter(function(e){return Ar(e,r,t)}).sort(function(e,r){return or(e,r,t)})[0]||null}e.validRange=Mr;function Mr(e,r){try{return new yr(e,r).range||"*"}catch(t){return null}}e.ltr=Nr;function Nr(e,r,t){return zr(e,r,"<",t)}e.gtr=_r;function _r(e,r,t){return zr(e,r,">",t)}e.outside=zr;function zr(e,r,t,n){e=new K(e,n);r=new yr(r,n);var i,s,o,a,f;switch(t){case">":i=ur;s=vr;o=lr;a=">";f=">=";break;case"<":i=lr;s=cr;o=ur;a="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Ar(e,r,n)){return false}for(var u=0;u<r.set.length;++u){var l=r.set[u];var p=null;var h=null;l.forEach(function(e){p=p||e;h=h||e;if(i(e.semver,p.semver,n)){p=e}else if(o(e.semver,h.semver,n)){h=e}});if(p.operator===a||p.operator===f){return false}if((!h.operator||h.operator===a)&&s(e,h.semver)){return false}else if(h.operator===f&&o(e,h.semver)){return false}}return true}if(typeof define==="function"&&define.amd)define(e)})(typeof exports==="object"?exports:typeof define==="function"&&define.amd?{}:semver={}); \ No newline at end of file
diff --git a/admin/survey/api/apidoc/vendor/webfontloader.js b/admin/survey/api/apidoc/vendor/webfontloader.js
new file mode 100644
index 0000000..4381e74
--- /dev/null
+++ b/admin/survey/api/apidoc/vendor/webfontloader.js
@@ -0,0 +1,17 @@
+/* Web Font Loader v1.6.24 - (c) Adobe Systems, Google. License: Apache 2.0 */
+(function(){function aa(a,b,d){return a.call.apply(a.bind,arguments)}function ba(a,b,d){if(!a)throw Error();if(2<arguments.length){var c=Array.prototype.slice.call(arguments,2);return function(){var d=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(d,c);return a.apply(b,d)}}return function(){return a.apply(b,arguments)}}function p(a,b,d){p=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?aa:ba;return p.apply(null,arguments)}var q=Date.now||function(){return+new Date};function ca(a,b){this.a=a;this.m=b||a;this.c=this.m.document}var da=!!window.FontFace;function t(a,b,d,c){b=a.c.createElement(b);if(d)for(var e in d)d.hasOwnProperty(e)&&("style"==e?b.style.cssText=d[e]:b.setAttribute(e,d[e]));c&&b.appendChild(a.c.createTextNode(c));return b}function u(a,b,d){a=a.c.getElementsByTagName(b)[0];a||(a=document.documentElement);a.insertBefore(d,a.lastChild)}function v(a){a.parentNode&&a.parentNode.removeChild(a)}
+function w(a,b,d){b=b||[];d=d||[];for(var c=a.className.split(/\s+/),e=0;e<b.length;e+=1){for(var f=!1,g=0;g<c.length;g+=1)if(b[e]===c[g]){f=!0;break}f||c.push(b[e])}b=[];for(e=0;e<c.length;e+=1){f=!1;for(g=0;g<d.length;g+=1)if(c[e]===d[g]){f=!0;break}f||b.push(c[e])}a.className=b.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")}function y(a,b){for(var d=a.className.split(/\s+/),c=0,e=d.length;c<e;c++)if(d[c]==b)return!0;return!1}
+function z(a){if("string"===typeof a.f)return a.f;var b=a.m.location.protocol;"about:"==b&&(b=a.a.location.protocol);return"https:"==b?"https:":"http:"}function ea(a){return a.m.location.hostname||a.a.location.hostname}
+function A(a,b,d){function c(){k&&e&&f&&(k(g),k=null)}b=t(a,"link",{rel:"stylesheet",href:b,media:"all"});var e=!1,f=!0,g=null,k=d||null;da?(b.onload=function(){e=!0;c()},b.onerror=function(){e=!0;g=Error("Stylesheet failed to load");c()}):setTimeout(function(){e=!0;c()},0);u(a,"head",b)}
+function B(a,b,d,c){var e=a.c.getElementsByTagName("head")[0];if(e){var f=t(a,"script",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(g=!0,d&&d(null),f.onload=f.onreadystatechange=null,"HEAD"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);setTimeout(function(){g||(g=!0,d&&d(Error("Script load timeout")))},c||5E3);return f}return null};function C(){this.a=0;this.c=null}function D(a){a.a++;return function(){a.a--;E(a)}}function F(a,b){a.c=b;E(a)}function E(a){0==a.a&&a.c&&(a.c(),a.c=null)};function G(a){this.a=a||"-"}G.prototype.c=function(a){for(var b=[],d=0;d<arguments.length;d++)b.push(arguments[d].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.a)};function H(a,b){this.c=a;this.f=4;this.a="n";var d=(b||"n4").match(/^([nio])([1-9])$/i);d&&(this.a=d[1],this.f=parseInt(d[2],10))}function fa(a){return I(a)+" "+(a.f+"00")+" 300px "+J(a.c)}function J(a){var b=[];a=a.split(/,\s*/);for(var d=0;d<a.length;d++){var c=a[d].replace(/['"]/g,"");-1!=c.indexOf(" ")||/^\d/.test(c)?b.push("'"+c+"'"):b.push(c)}return b.join(",")}function K(a){return a.a+a.f}function I(a){var b="normal";"o"===a.a?b="oblique":"i"===a.a&&(b="italic");return b}
+function ga(a){var b=4,d="n",c=null;a&&((c=a.match(/(normal|oblique|italic)/i))&&c[1]&&(d=c[1].substr(0,1).toLowerCase()),(c=a.match(/([1-9]00|normal|bold)/i))&&c[1]&&(/bold/i.test(c[1])?b=7:/[1-9]00/.test(c[1])&&(b=parseInt(c[1].substr(0,1),10))));return d+b};function ha(a,b){this.c=a;this.f=a.m.document.documentElement;this.h=b;this.a=new G("-");this.j=!1!==b.events;this.g=!1!==b.classes}function ia(a){a.g&&w(a.f,[a.a.c("wf","loading")]);L(a,"loading")}function M(a){if(a.g){var b=y(a.f,a.a.c("wf","active")),d=[],c=[a.a.c("wf","loading")];b||d.push(a.a.c("wf","inactive"));w(a.f,d,c)}L(a,"inactive")}function L(a,b,d){if(a.j&&a.h[b])if(d)a.h[b](d.c,K(d));else a.h[b]()};function ja(){this.c={}}function ka(a,b,d){var c=[],e;for(e in b)if(b.hasOwnProperty(e)){var f=a.c[e];f&&c.push(f(b[e],d))}return c};function N(a,b){this.c=a;this.f=b;this.a=t(this.c,"span",{"aria-hidden":"true"},this.f)}function O(a){u(a.c,"body",a.a)}function P(a){return"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+J(a.c)+";"+("font-style:"+I(a)+";font-weight:"+(a.f+"00")+";")};function Q(a,b,d,c,e,f){this.g=a;this.j=b;this.a=c;this.c=d;this.f=e||3E3;this.h=f||void 0}Q.prototype.start=function(){var a=this.c.m.document,b=this,d=q(),c=new Promise(function(c,e){function k(){q()-d>=b.f?e():a.fonts.load(fa(b.a),b.h).then(function(a){1<=a.length?c():setTimeout(k,25)},function(){e()})}k()}),e=new Promise(function(a,c){setTimeout(c,b.f)});Promise.race([e,c]).then(function(){b.g(b.a)},function(){b.j(b.a)})};function R(a,b,d,c,e,f,g){this.v=a;this.B=b;this.c=d;this.a=c;this.s=g||"BESbswy";this.f={};this.w=e||3E3;this.u=f||null;this.o=this.j=this.h=this.g=null;this.g=new N(this.c,this.s);this.h=new N(this.c,this.s);this.j=new N(this.c,this.s);this.o=new N(this.c,this.s);a=new H(this.a.c+",serif",K(this.a));a=P(a);this.g.a.style.cssText=a;a=new H(this.a.c+",sans-serif",K(this.a));a=P(a);this.h.a.style.cssText=a;a=new H("serif",K(this.a));a=P(a);this.j.a.style.cssText=a;a=new H("sans-serif",K(this.a));a=
+P(a);this.o.a.style.cssText=a;O(this.g);O(this.h);O(this.j);O(this.o)}var S={D:"serif",C:"sans-serif"},T=null;function U(){if(null===T){var a=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);T=!!a&&(536>parseInt(a[1],10)||536===parseInt(a[1],10)&&11>=parseInt(a[2],10))}return T}R.prototype.start=function(){this.f.serif=this.j.a.offsetWidth;this.f["sans-serif"]=this.o.a.offsetWidth;this.A=q();la(this)};
+function ma(a,b,d){for(var c in S)if(S.hasOwnProperty(c)&&b===a.f[S[c]]&&d===a.f[S[c]])return!0;return!1}function la(a){var b=a.g.a.offsetWidth,d=a.h.a.offsetWidth,c;(c=b===a.f.serif&&d===a.f["sans-serif"])||(c=U()&&ma(a,b,d));c?q()-a.A>=a.w?U()&&ma(a,b,d)&&(null===a.u||a.u.hasOwnProperty(a.a.c))?V(a,a.v):V(a,a.B):na(a):V(a,a.v)}function na(a){setTimeout(p(function(){la(this)},a),50)}function V(a,b){setTimeout(p(function(){v(this.g.a);v(this.h.a);v(this.j.a);v(this.o.a);b(this.a)},a),0)};function W(a,b,d){this.c=a;this.a=b;this.f=0;this.o=this.j=!1;this.s=d}var X=null;W.prototype.g=function(a){var b=this.a;b.g&&w(b.f,[b.a.c("wf",a.c,K(a).toString(),"active")],[b.a.c("wf",a.c,K(a).toString(),"loading"),b.a.c("wf",a.c,K(a).toString(),"inactive")]);L(b,"fontactive",a);this.o=!0;oa(this)};
+W.prototype.h=function(a){var b=this.a;if(b.g){var d=y(b.f,b.a.c("wf",a.c,K(a).toString(),"active")),c=[],e=[b.a.c("wf",a.c,K(a).toString(),"loading")];d||c.push(b.a.c("wf",a.c,K(a).toString(),"inactive"));w(b.f,c,e)}L(b,"fontinactive",a);oa(this)};function oa(a){0==--a.f&&a.j&&(a.o?(a=a.a,a.g&&w(a.f,[a.a.c("wf","active")],[a.a.c("wf","loading"),a.a.c("wf","inactive")]),L(a,"active")):M(a.a))};function pa(a){this.j=a;this.a=new ja;this.h=0;this.f=this.g=!0}pa.prototype.load=function(a){this.c=new ca(this.j,a.context||this.j);this.g=!1!==a.events;this.f=!1!==a.classes;qa(this,new ha(this.c,a),a)};
+function ra(a,b,d,c,e){var f=0==--a.h;(a.f||a.g)&&setTimeout(function(){var a=e||null,k=c||null||{};if(0===d.length&&f)M(b.a);else{b.f+=d.length;f&&(b.j=f);var h,m=[];for(h=0;h<d.length;h++){var l=d[h],n=k[l.c],r=b.a,x=l;r.g&&w(r.f,[r.a.c("wf",x.c,K(x).toString(),"loading")]);L(r,"fontloading",x);r=null;null===X&&(X=window.FontFace?(x=/Gecko.*Firefox\/(\d+)/.exec(window.navigator.userAgent))?42<parseInt(x[1],10):!0:!1);X?r=new Q(p(b.g,b),p(b.h,b),b.c,l,b.s,n):r=new R(p(b.g,b),p(b.h,b),b.c,l,b.s,a,
+n);m.push(r)}for(h=0;h<m.length;h++)m[h].start()}},0)}function qa(a,b,d){var c=[],e=d.timeout;ia(b);var c=ka(a.a,d,a.c),f=new W(a.c,b,e);a.h=c.length;b=0;for(d=c.length;b<d;b++)c[b].load(function(b,c,d){ra(a,f,b,c,d)})};function sa(a,b){this.c=a;this.a=b}function ta(a,b,d){var c=z(a.c);a=(a.a.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+a+"/"+b+".js"+(d?"?v="+d:"")}
+sa.prototype.load=function(a){function b(){if(e["__mti_fntLst"+d]){var c=e["__mti_fntLst"+d](),g=[],k;if(c)for(var h=0;h<c.length;h++){var m=c[h].fontfamily;void 0!=c[h].fontStyle&&void 0!=c[h].fontWeight?(k=c[h].fontStyle+c[h].fontWeight,g.push(new H(m,k))):g.push(new H(m))}a(g)}else setTimeout(function(){b()},50)}var d=this.a.projectId,c=this.a.version;if(d){var e=this.c.m;B(this.c,ta(this,d,c),function(c){c?a([]):b()}).id="__MonotypeAPIScript__"+d}else a([])};function ua(a,b){this.c=a;this.a=b}ua.prototype.load=function(a){var b,d,c=this.a.urls||[],e=this.a.families||[],f=this.a.testStrings||{},g=new C;b=0;for(d=c.length;b<d;b++)A(this.c,c[b],D(g));var k=[];b=0;for(d=e.length;b<d;b++)if(c=e[b].split(":"),c[1])for(var h=c[1].split(","),m=0;m<h.length;m+=1)k.push(new H(c[0],h[m]));else k.push(new H(c[0]));F(g,function(){a(k,f)})};function va(a,b,d){a?this.c=a:this.c=b+wa;this.a=[];this.f=[];this.g=d||""}var wa="//fonts.googleapis.com/css";function xa(a,b){for(var d=b.length,c=0;c<d;c++){var e=b[c].split(":");3==e.length&&a.f.push(e.pop());var f="";2==e.length&&""!=e[1]&&(f=":");a.a.push(e.join(f))}}
+function ya(a){if(0==a.a.length)throw Error("No fonts to load!");if(-1!=a.c.indexOf("kit="))return a.c;for(var b=a.a.length,d=[],c=0;c<b;c++)d.push(a.a[c].replace(/ /g,"+"));b=a.c+"?family="+d.join("%7C");0<a.f.length&&(b+="&subset="+a.f.join(","));0<a.g.length&&(b+="&text="+encodeURIComponent(a.g));return b};function za(a){this.f=a;this.a=[];this.c={}}
+var Aa={latin:"BESbswy",cyrillic:"\u0439\u044f\u0416",greek:"\u03b1\u03b2\u03a3",khmer:"\u1780\u1781\u1782",Hanuman:"\u1780\u1781\u1782"},Ba={thin:"1",extralight:"2","extra-light":"2",ultralight:"2","ultra-light":"2",light:"3",regular:"4",book:"4",medium:"5","semi-bold":"6",semibold:"6","demi-bold":"6",demibold:"6",bold:"7","extra-bold":"8",extrabold:"8","ultra-bold":"8",ultrabold:"8",black:"9",heavy:"9",l:"3",r:"4",b:"7"},Ca={i:"i",italic:"i",n:"n",normal:"n"},Da=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;
+function Ea(a){for(var b=a.f.length,d=0;d<b;d++){var c=a.f[d].split(":"),e=c[0].replace(/\+/g," "),f=["n4"];if(2<=c.length){var g;var k=c[1];g=[];if(k)for(var k=k.split(","),h=k.length,m=0;m<h;m++){var l;l=k[m];if(l.match(/^[\w-]+$/)){var n=Da.exec(l.toLowerCase());if(null==n)l="";else{l=n[2];l=null==l||""==l?"n":Ca[l];n=n[1];if(null==n||""==n)n="4";else var r=Ba[n],n=r?r:isNaN(n)?"4":n.substr(0,1);l=[l,n].join("")}}else l="";l&&g.push(l)}0<g.length&&(f=g);3==c.length&&(c=c[2],g=[],c=c?c.split(","):
+g,0<c.length&&(c=Aa[c[0]])&&(a.c[e]=c))}a.c[e]||(c=Aa[e])&&(a.c[e]=c);for(c=0;c<f.length;c+=1)a.a.push(new H(e,f[c]))}};function Fa(a,b){this.c=a;this.a=b}var Ga={Arimo:!0,Cousine:!0,Tinos:!0};Fa.prototype.load=function(a){var b=new C,d=this.c,c=new va(this.a.api,z(d),this.a.text),e=this.a.families;xa(c,e);var f=new za(e);Ea(f);A(d,ya(c),D(b));F(b,function(){a(f.a,f.c,Ga)})};function Ha(a,b){this.c=a;this.a=b}Ha.prototype.load=function(a){var b=this.a.id,d=this.c.m;b?B(this.c,(this.a.api||"https://use.typekit.net")+"/"+b+".js",function(b){if(b)a([]);else if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){b=d.Typekit.config.fn;for(var e=[],f=0;f<b.length;f+=2)for(var g=b[f],k=b[f+1],h=0;h<k.length;h++)e.push(new H(g,k[h]));try{d.Typekit.load({events:!1,classes:!1,async:!0})}catch(m){}a(e)}},2E3):a([])};function Ia(a,b){this.c=a;this.f=b;this.a=[]}Ia.prototype.load=function(a){var b=this.f.id,d=this.c.m,c=this;b?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[b]=function(b,d){for(var g=0,k=d.fonts.length;g<k;++g){var h=d.fonts[g];c.a.push(new H(h.name,ga("font-weight:"+h.weight+";font-style:"+h.style)))}a(c.a)},B(this.c,z(this.c)+(this.f.api||"//f.fontdeck.com/s/css/js/")+ea(this.c)+"/"+b+".js",function(b){b&&a([])})):a([])};var Y=new pa(window);Y.a.c.custom=function(a,b){return new ua(b,a)};Y.a.c.fontdeck=function(a,b){return new Ia(b,a)};Y.a.c.monotype=function(a,b){return new sa(b,a)};Y.a.c.typekit=function(a,b){return new Ha(b,a)};Y.a.c.google=function(a,b){return new Fa(b,a)};var Z={load:p(Y.load,Y)};"function"===typeof define&&define.amd?define(function(){return Z}):"undefined"!==typeof module&&module.exports?module.exports=Z:(window.WebFont=Z,window.WebFontConfig&&Y.load(window.WebFontConfig));}());
diff --git a/admin/survey/api/class.ApiController.php b/admin/survey/api/class.ApiController.php
new file mode 100644
index 0000000..b35d867
--- /dev/null
+++ b/admin/survey/api/class.ApiController.php
@@ -0,0 +1,210 @@
+<?php
+
+/**
+ *
+ * Class ki skrbi za povezavo z API-jem
+ *
+ */
+
+class ApiController{
+
+ var $method; // Metoda klica (post, get, delete...)
+ var $params; // Parametri v url-ju
+ var $data; // Podatki poslani preko post-a
+
+ function __construct(){
+ global $site_url;
+ global $global_user_id;
+
+ // Preberemo poslane podatke
+ $this->processCall();
+
+ // Preverimo userja (geslo)
+ $user_id = $this->checkLogin();
+
+ if($user_id != 0){
+
+ // Nastavimo userja za katerega gre
+ $global_user_id = $user_id;
+
+ // Izvedemo akcijo
+ $survey = new ApiSurvey();
+ //spredaj je @ -> to suppress all error messages
+ @$survey->executeAction($this->params, $this->data);
+ }
+ }
+
+
+ // Preberemo poslane podatke
+ private function processCall(){
+
+ // Metoda - POST, GET, DELETE...
+ $this->method = $_SERVER['REQUEST_METHOD'];
+
+ // Preberemo parametre iz url-ja
+ $request = parse_url($_SERVER['REQUEST_URI']);
+ parse_str($request['query'], $this->params);
+
+ // Poberemo parametre iz headerja, ce so
+ if(isset($_SERVER['HTTP_TOKEN']))
+ $this->params['token'] = $_SERVER['HTTP_TOKEN'];
+ if(isset($_SERVER['HTTP_IDENTIFIER']))
+ $this->params['identifier'] = $_SERVER['HTTP_IDENTIFIER'];
+
+ //pridobimo action iz GET v lepem linku, ce obstaja
+ if(isset($_GET['action'])){
+ $requestParts = explode('/',$_GET['action']);
+ $this->params['action'] = $requestParts[0];
+ }
+
+ //pridobimo id ankete iz GET v lepem linku, ce obstaja
+ if(isset($_GET['ank_id'])){
+ $requestParts = explode('/',$_GET['ank_id']);
+ $this->params['ank_id'] = $requestParts[0];
+ }
+
+ // Preberemo podatke iz post-a
+ $this->data = json_decode(file_get_contents('php://input'), true);
+ }
+
+ // Preveri username in pass ce sta ok za login
+ private function checkLogin(){
+ global $lang;
+ global $pass_salt;
+
+ $login_check = false;
+
+ // Ce smo prejeli podatke za autentikacijo
+ if(isset($this->params['identifier']) && isset($this->params['token'])){
+
+ $sql = sisplet_query("SELECT * FROM srv_api_auth WHERE identifier='".$this->params['identifier']."'");
+ if(mysqli_num_rows($sql) > 0){
+ $row = mysqli_fetch_array($sql);
+
+ // Ce postamo ga preberemo
+ $raw_post_data = '';
+ if($this->method == 'POST' && $this->data){
+ //@Uros pri mobilnih se ne kreira query - pretvori v json string
+ if(in_array($this->params['identifier'], array('mobileApp', 'mazaApp')))
+ $raw_post_data = json_encode($this->data, JSON_UNESCAPED_UNICODE);
+ else
+ $raw_post_data = http_build_query($this->data);
+ }
+
+ // Dobimo request (brez id in token)
+ $request = ($_SERVER["HTTPS"] == 'on') ? 'https://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] : 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
+ if(!isset($_SERVER['HTTP_IDENTIFIER']))
+ $request = preg_replace('/([?&])identifier=[^&]+(&|$)/', '$1', $request);
+ if(!isset($_SERVER['HTTP_TOKEN']))
+ $request = preg_replace('/([?&])token=[^&]+(&|$)/', '$1', $request);
+ if(!isset($_SERVER['HTTP_TOKEN']) || !isset($_SERVER['HTTP_IDENTIFIER']))
+ $request = substr($request, 0, -1);
+
+ // Na nasi strani naredimo hmac podatkov z ustreznim private key-em
+ $data = $this->method . $request . $raw_post_data;
+ $token = hash_hmac('sha256', $data, $row['private_key']);
+
+ if($this->params['token'] == $token)
+ $login_check = true;
+ else
+ echo '{error: "Authentication failed"}';
+ }
+ else
+ echo '{error: "User does not exist"}';
+
+
+ // Ce se logira iz 1ka mobilne aplikacije je treba preveriti posebej user mail in password ce se ujemata
+ if($this->params['identifier'] == 'mobileApp' && $login_check){
+
+ $sm = new SurveyMobile();
+ $user_id = 0;
+
+ // TUKAJ PRIDE DODATEN POGOJ CE GRE ZA PRIJAVO PREKO GOOGLA, FB... - V TEM PRIMERU NIMAMO PASSWORDA
+ if(!isset($this->data['Login']['password']) && isset($this->data['Login']['special_login'])){
+ global $APP_special_login_key;
+
+ // DODATI FUNKCIJO checkSpecialLogin v SurveyMobile, kjer se pogleda samo če obstaja mail in nastavi ustrezno user id
+ if($this->data['Login']['special_login'] == 'nekajzavsakslucajv4x7in6' ||
+ $this->data['Login']['special_login'] == $APP_special_login_key){
+ $user_id = $sm->googleLogin($this->data['Login']['username']);
+ }
+ }
+ else if(isset($this->data['Login']['password'])){
+ // Preverimo ce so v mobilni aplikaciji podatki za prijavo pravilni in pridobimo ustrezen user id
+ $user_id = $sm->checkLogin($this->data['Login']['password'], $this->data['Login']['username']);
+ }
+
+ // Podatki za prijavo (email in pass) so v mobilni aplikaciji vredu nastavljeni - vrnemo user id
+ if($user_id > 0){
+
+ //ce se samo preverja login, vrni user_id = 0, zato da ne gre v akcije
+ if($this->params['action'] == "checkLoginApp" || $this->params['action'] == "getMobileAppVersion"){
+ //pri checkLoginApp ze kreiramo response objekt v primeru, da je login OK
+ echo '{note: "login OK"}';
+ return 0;
+ }
+
+ return $user_id;
+ }
+
+ if($user_id == -1){
+ echo '{error: "user not allowed"}';
+ return 0;
+ }
+ // Token je ok, podatki za prijavo pa NE
+ else{
+ echo '{error: "login error"}';
+ return 0;
+ }
+ }
+ // Ce se logira iz MAZA mobilne aplikacije je treba preveriti posebej identifikator respondenta, ce obstaja
+ else if($this->params['identifier'] == 'mazaApp' && $login_check){
+
+ $sm = new SurveyMobile();
+ $user_id = 0;
+
+ if(isset($this->data['Login']['identifier'])){
+ // Preverimo ce so v mobilni aplikaciji podatki za prijavo pravilni in pridobimo ustrezen user id
+ $user_id = $sm->checkMazaLogin(($this->params['action'] == "checkLoginApp" || $this->params['action'] == "mazaGetSurveysInfoByIdentifier"),
+ $this->data['Login']['identifier'], $this->data['Login']['id_server'],
+ $this->data['Login']['registration_id']);
+ }
+
+ // Podatki za prijavo (email in pass) so v mobilni aplikaciji vredu nastavljeni - vrnemo user id
+ if($user_id > 0){
+ //ce se samo preverja login, vrni user_id = 0, zato da ne gre v akcije
+ if($this->params['action'] == "checkLoginApp"){
+ if(isset($user_id['note']))
+ //pri checkLoginApp ze kreiramo response objekt v primeru, da je login OK
+ echo json_encode($user_id, true);
+
+ //vrnemo 0, da ne gre v ApiSurvey
+ return 0;
+ }
+ return $user_id;
+ }
+ // Token je ok, podatki za prijavo pa NE
+ else{
+ echo '{error: "login error"}';
+ return 0;
+ }
+
+ }
+ // Vrne user id ce NE GRE za mobilno aplikacijo in je autentikacija uspesna
+ else if($login_check && $row['usr_id'] > 0){
+ return $row['usr_id'];
+ }
+ else{
+ return 0;
+ }
+ }
+ //UNSECURED CALLS!!! only use for internal usage and inserting (do not use for editing or deleting!) - this calls are done from client side (ajax) without credentials (user doesnt have account - not loged in)
+ else if($this->params['identifier'] == 'wpn'){
+ $this->data = $_POST;
+ return -1;
+ }
+ else
+ return 0;
+ }
+
+} \ No newline at end of file
diff --git a/admin/survey/api/class.ApiSurvey.php b/admin/survey/api/class.ApiSurvey.php
new file mode 100644
index 0000000..36b8d85
--- /dev/null
+++ b/admin/survey/api/class.ApiSurvey.php
@@ -0,0 +1,4121 @@
+<?php
+
+/**
+ *
+ * Class ki vsebuje funkcije APIJA (branje iz ankete, ustvarjanje ankete, pisanje v anketo...)
+ *
+ */
+class ApiSurvey {
+
+ function __construct() {
+ global $site_url;
+ global $global_user_id;
+ }
+
+
+ // Izvedemo akcijo
+ public function executeAction($params, $data) {
+ global $site_url;
+ global $global_user_id;
+ global $lang;
+
+ $json_array = array();
+
+ // Preverimo ce ima user dostop do ankete
+ $survey_access = false;
+
+ if (isset($params['ank_id'])) {
+ Common::getInstance()->Init($params['ank_id']);
+
+ $d = new Dostop();
+ if ($d->checkDostopSub('edit', $params['ank_id'])) {
+ $survey_access = true;
+ }
+
+ $lang_admin = $this->getLang($params['ank_id']);
+ } else {
+ $survey_access = true;
+ $lang_admin = $this->getLang(0);
+ }
+
+ //include right language
+ $file = '../../../lang/' . $lang_admin . '.php';
+ include($file);
+
+ if (!$survey_access) {
+ $json_array['error'] = 'User does not have access to this survey';
+ } elseif (!isset($params['action'])) {
+ $json_array['error'] = 'Action is not defined';
+ } else {
+ /*
+ * $kategorija - uporabljeno za kategoriziranje akcij za api (mobile app)
+ * 0 - default - app level - splosne akcije, ki se jih naceloma ne da kategorizirat
+ * npr. seznami anket, sprememba jezika,...
+ * 1 - kreiranje in urejanje anket - akcije, za katere je potreben tool za kreiranje anket
+ * npr. sprememba kategorije, sprememba uvoda, vrstni red vprasanj, brisanje vprasanja...
+ * 2 - pregled ankete - vse, kar se dela z anketami, ko so ze zbirajo ali so ze zbrani podatki
+ * npr. status, dashboard, urejanje hashlink, rezultati,...
+ * 3 - nastavitve ankete - vse nastavitve ankete, za katera se ne potrebuje tool za kreiranje anket
+ * npr. kopiranje ankete, aktivacija/deaktivacija, brisanje ankete, blokiranje ip 24ur,...
+ */
+ $kategorija = 0;
+
+ Common::start();
+
+ switch ($params['action']) {
+
+ // BRANJE
+ case 'getSurveyList':
+ $json_array = $this->getSurveyList(isset($params['limit']) ? $params['limit'] : ''
+ , isset($params['mobile_created']) ? $params['mobile_created'] : -1);
+ break;
+
+ case 'getSurveyInfo':
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyInfo($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyQuestions':
+ $kategorija = 1;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyQuestions($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurvey':
+ $kategorija = 1;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurvey($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyStatuses':
+ $kategorija = 2;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyStatuses($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyAnswerState':
+ $kategorija = 2;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyAnswerState($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyDateTimeRange':
+ $kategorija = 2;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyDateTimeRange($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyRedirections':
+ $kategorija = 2;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyRedirections($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyParadata':
+ $kategorija = 2;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyParadata($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyDashboard':
+ $kategorija = 2;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->getSurveyDashboard($params['ank_id']);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyFrequencies':
+ $kategorija = 2;
+ if (isset($params['ank_id']))
+ $json_array = $this->getSurveyFrequencies($params['ank_id']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyHashes':
+ $kategorija = 2;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->getSurveyHashes($params['ank_id']);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'getSurveyResponses':
+ $json_array = $this->getSurveyResponses($data);
+ break;
+
+ case 'getSurveyResponseData':
+ $kategorija = 2;
+ $usr_param = (isset($params['usr_param'])) ? $params['usr_param'] : '';
+ if (isset($params['ank_id']) && isset($params['usr_id']))
+ $json_array = $this->getSurveyResponseData($params['ank_id'], $params['usr_id'], $usr_param);
+ else
+ $json_array['error'] = 'Survey ID or respondent ID missing';
+ break;
+
+
+ // PISANJE
+ case 'createSurvey':
+ $kategorija = 1;
+ $json_array = $this->createSurvey($data);
+ break;
+
+ case 'deleteSurvey':
+ $kategorija = 3;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->deleteSurvey($params['ank_id']);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'deleteQuestion':
+ $kategorija = 1;
+ if (isset($params['ank_id']) && isset($data['que_id'])) {
+ $json_array = $this->deleteQuestion($params['ank_id'], $data['que_id']);
+ } else
+ $json_array['error'] = 'Survey or question ID missing';
+ break;
+
+ case 'createQuestion':
+ $kategorija = 1;
+ if (isset($params['ank_id']))
+ $json_array = $this->createQuestion($params['ank_id'], $data['question']);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'updateQuestion':
+ $kategorija = 1;
+ if (isset($params['ank_id']) && isset($data['question']['id_que']))
+ $json_array = $this->updateQuestion($params['ank_id'], $data['question']);
+ else
+ $json_array['error'] = 'Survey or question ID missing';
+ break;
+
+ case 'copySurvey':
+ $kategorija = 3;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->copySurvey($params['ank_id']);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'copyQuestion':
+ $kategorija = 1;
+ if (isset($params['ank_id']) && isset($data['que_id'])) {
+ $json_array = $this->copyQuestion($params['ank_id'], $data['que_id']);
+ } else
+ $json_array['error'] = 'Survey or question ID missing';
+ break;
+
+ case 'updateOrCreateOption':
+ $kategorija = 1;
+ if (isset($params['ank_id']))
+ $json_array = $this->updateOrCreateOption($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'deleteOption':
+ $kategorija = 1;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->deleteOption($params['ank_id'], $data['option_id']);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'updateSurvey':
+ $kategorija = 1;
+ if (isset($params['ank_id']))
+ $json_array = $this->updateSurvey($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ //rather use updateOrCreateOption
+ case 'addQuestionVrednost':
+ $kategorija = 1;
+ if (isset($params['ank_id']) && isset($params['spr_id'])){
+ if($this->isQuestionSiblingOfSurvey($params['ank_id'], $params['spr_id']))
+ $json_array = $this->addQuestionVrednost($params['ank_id'], $params['spr_id'], $data);
+ else
+ $json_array['error'] = "Question does not exist or does not belong to this survey";
+ }
+ else
+ $json_array['error'] = 'Survey ID or question ID missing';
+ break;
+
+ case 'SurveyActivation':
+ $kategorija = 3;
+ if (isset($params['ank_id']))
+ $json_array = $this->SurveyActivation($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'BlockRepeatedIP':
+ $kategorija = 3;
+ if (isset($params['ank_id']))
+ $json_array = $this->BlockRepeatedIP($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'deleteLink':
+ $kategorija = 2;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->deleteLink($params['ank_id'], $data['hash']);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'addLink':
+ $kategorija = 2;
+ if (isset($params['ank_id'])) {
+ $json_array = $this->addLink($params['ank_id'], $data);
+ } else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'sendEmailInvitation':
+ if (isset($params['ank_id']))
+ $json_array = $this->sendEmailInvitation($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'addGroup':
+ $kategorija = 1;
+ if (isset($params['ank_id']))
+ $json_array = $this->addGroup($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'languageChange':
+ if (isset($data['lang'])) {
+ //change user interface language (interface settings)
+ sisplet_query("UPDATE users SET lang = '" . $data['lang'] . "' WHERE id = '$global_user_id'");
+ $json_array['note'] = 'Language changed';
+ } else
+ $json_array['error'] = 'Language code missing';
+ break;
+
+ case 'deleteSurveyUnit':
+ if (isset($params['ank_id']) && isset($data['srv_unit_id'])) {
+ $json_array = $this->deleteSurveyUnit($params['ank_id'], $data['srv_unit_id']);
+ } else
+ $json_array['error'] = 'Survey ID or/and unit ID is missing';
+ break;
+
+ // EVOLI modul
+ case 'addGroupTeamMeter':
+ if (isset($params['ank_id']))
+ $json_array = $this->addGroupTeamMeter($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'sendEmailInvitationTeamMeter':
+ if (isset($params['ank_id']))
+ $json_array = $this->sendEmailInvitationTeamMeter($params['ank_id'], $data);
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ case 'createEvoliPass':
+ if (isset($params['ank_id']) && isset($params['email']))
+ $json_array = $this->createEvoliPass($params['ank_id'], $params['email']);
+ else
+ $json_array['error'] = 'Survey ID or customer email missing';
+ break;
+
+ case 'getEvoliPass':
+ if (isset($params['ank_id']) && isset($params['email']))
+ $json_array = $this->getEvoliPass($params['ank_id'], $params['email']);
+ else
+ $json_array['error'] = 'Survey ID or customer email missing';
+ break;
+
+
+ // GORENJE modul
+ case 'createUser':
+ // Zaenkrat se lahko dodaja uporabnike samo na gorenje instalaciji (narejeno posebej za njih)
+ if(Common::checkModule('gorenje'))
+ $json_array = $this->createUser($data);
+ break;
+
+
+ // MOBILE APP ONLY
+ case 'getMobileAppVersion':
+ $json_array = $this->getMobileAppVersion();
+ break;
+
+ case 'updateQuestionOrder':
+ $kategorija = 1;
+ if (isset($params['ank_id'])){
+ $sm = new SurveyMobile();
+ $json_array = $sm->updateQuestionOrder($params['ank_id'], $data);
+ }
+ else
+ $json_array['error'] = 'Survey ID missing';
+ break;
+
+ // MAZA APP only
+ case 'mazaUpdateDeviceInfo':
+ if (isset($data['deviceInfo'])) {
+ $sm = new SurveyMobile();
+ $json_array = $sm->mazaUpdateDeviceInfo($data['deviceInfo']);
+ } else
+ $json_array['error'] = 'Param deviceInfo missing';
+ break;
+
+ case 'mazaInsertTrackingLocations':
+ if (isset($data['locations']) && !empty($data['locations'])) {
+ $sm = new SurveyMobile();
+ $sm->mazaInsertTrackingLocations($data['locations']);
+ $json_array['note'] = 'Locations inserted';
+ }
+ if (isset($data['activity_recognition']) && !empty($data['activity_recognition'])) {
+ $sm = new SurveyMobile();
+ $sm->mazaInsertTrackingAR($data['activity_recognition']);
+ $json_array['note'] .= ' AR inserted';
+ }
+ if (isset($data['edit_locations']) && !empty($data['edit_locations'])) {
+ $sm = new SurveyMobile();
+ $sm->mazaEditTrackingLocations($data['edit_locations']);
+ $json_array['note'] .= ' locations edited';
+ }
+ break;
+
+ case 'mazaUpdateTrackingLog':
+ if (isset($data['trackingLog'])) {
+ $sm = new SurveyMobile();
+ $sm->mazaUpdateTrackingLog($data['trackingLog']);
+ $json_array['note'] = 'Tracking log updated';
+ } else
+ $json_array['error'] = 'Param trackingLog missing';
+ break;
+
+ case 'mazaInsertTriggeredGeofences':
+ if (isset($data['triggeredGeofences'])) {
+ $sm = new SurveyMobile();
+ $new_tgeof_id = $sm->mazaInsertTriggeredGeofences($data['triggeredGeofences']);
+ if($new_tgeof_id != 0)
+ $json_array['tgeof_id'] = $new_tgeof_id;
+ $json_array['note'] = 'Geofences updated';
+ } else
+ $json_array['error'] = 'Param triggeredGeofences missing';
+ break;
+
+ case 'mazaUpdateRegistrationId':
+ if (isset($data['registration_id'])) {
+ sisplet_query("UPDATE maza_app_users SET registration_id = '" . $data['registration_id'] . "' WHERE id = '$global_user_id'");
+ $json_array['note'] = 'Registration ID info updated';
+ } else
+ $json_array['error'] = 'Param registration_id missing';
+ break;
+
+ case 'mazaGetAlarms':
+ $sm = new SurveyMobile();
+ $json_array['alarms'] = $sm -> mazaGetAlarms();
+ break;
+
+ case 'mazaGetGeofences':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaGetGeofences();
+ break;
+
+ case 'mazaGetActivities':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaGetActivities();
+ break;
+
+ case 'mazaGetTracking':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaGetTracking();
+ break;
+
+ case 'mazaGetEntries':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaGetEntries();
+ break;
+
+ case 'mazaGetMyLocations':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaGetMyLocations();
+ break;
+
+ case 'mazaSetNextpinTrackingPermission':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaSetNextpinTrackingPermission($data);
+ break;
+
+ case 'mazaSetTrackingPermission':
+ $sm = new SurveyMobile();
+ $json_array = $sm -> mazaSetTrackingPermission($data);
+ break;
+
+ case 'mazaUnsubscribeSurvey':
+ $sm = new SurveyMobile();
+ if(isset($data['ank_id']))
+ $json_array = $sm -> mazaUnsubscribeSurvey($data['ank_id']);
+ else
+ $json_array['error'] = "Param ank_id missing";
+ break;
+
+ case 'mazaGetSurveyList':
+ if(isset($data['timeZone'])){
+ $sm = new SurveyMobile();
+ $json_array = array_values($sm->mazaGetSurveyList($data['timeZone'], $data['srv_id']));
+ } else
+ $json_array['error'] = 'Param timeZone missing';
+ break;
+
+ case 'mazaGetSubscriptionsList':
+ if(isset($data['timeZone'])){
+ $sm = new SurveyMobile();
+ $json_array = $sm->mazaGetSubscriptionsList($data['timeZone']);
+ } else
+ $json_array['error'] = 'Param timeZone missing';
+ break;
+
+ case 'mazaMergeIdentifier':
+ if(isset($data['identifierToMerge'])){
+ $sm = new SurveyMobile();
+ $json_array = $sm->mazaMergeIdentifier($data['identifierToMerge']);
+ } else
+ $json_array['error'] = 'Param identifierToMerge missing';
+ break;
+
+ case 'mazaGetSurveysInfoByIdentifier':
+ if(isset($data['identifierToMerge'])){
+ $sm = new SurveyMobile();
+ $json_array = $sm->mazaGetSurveysInfoByIdentifier($data['identifierToMerge']);
+ } else
+ $json_array['error'] = 'Param identifierToMerge missing';
+ break;
+
+ case 'mazaDeleteSurveyUnit':
+ if (isset($data['ank_id']) && isset($data['srv_unit_id'])) {
+ $json_array = $this->deleteSurveyUnit($data['ank_id'], $data['srv_unit_id']);
+ } else
+ $json_array['error'] = 'Survey ID or/and unit ID is missing';
+ break;
+
+ // WPN - web push notifications
+ case 'wpnAddSubscription':
+ if (isset($data['endpoint']) && isset($data['keys'])) {
+ $wpn = new WPN();
+ $json_array = $wpn->ajax_wpn_save_subscription($data);
+ } else
+ $json_array['error'] = 'Params missing';
+ break;
+ }
+
+ Common::stop();
+
+ //zaenkrat spremljamo samo mobile app, brez preverbe logina
+ if ($params['identifier'] == 'mobileApp' && $params['action'] != 'getMobileAppVersion')
+ $this->tracking_api($params['ank_id'], $global_user_id, $params['action'], $kategorija);
+ }
+
+ $response = json_encode($json_array, true);
+ echo $response;
+ }
+
+ /**
+ * Saves log of api functions usage tracking
+ * @param type $ank_id - survey ID
+ * @param type $user - user ID
+ * @param type $action - function
+ * @param type $kategorija - category of function
+ */
+ private function tracking_api($ank_id, $user, $action, $kategorija) {
+ $ank_id = $ank_id != null ? $ank_id : 0;
+ sisplet_query("INSERT INTO srv_tracking_api (ank_id, datetime, ip, user, action, kategorija) VALUES ('$ank_id', NOW(), '" . GetIP() . "', '$user', '$action', '$kategorija')");
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyHashes/survey/:id getSurveyHashes
+ * @apiName getSurveyHashes
+ * @apiGroup Data and analysis
+ * @apiDescription Get all hash links of survey. Example of hash (public) link: https://www.1ka.si/podatki/50/5BABEC6D/ ([SITE_ROOT]/podatki/[SURVEY_ID]/[HASH_CODE]/)
+ *
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess (Main Fields) {String} hash Hash code for link
+ * @apiSuccess (Main Fields) {String} comment Comment of hash link
+ * @apiSuccess (Main Fields) {String} refresh 0-refresh mode off, 1-auto refresh site every x seconds
+ * @apiSuccess (Main Fields) {String} access_password If not NULL or "", this password is needed to access public link
+ * @apiSuccess (Main Fields) {String} page Broad type of content of hash link (analysis, data)
+ * @apiSuccess (Main Fields) {String} add_date Date of creation
+ * @apiSuccess (Main Fields) {String} add_time Time of creation
+ * @apiSuccess (Main Fields) {String} email Email of author
+ * @apiSuccess (Main Fields) {Object} properties Properties of hash link
+ * @apiSuccess (Hash link Fields) {String} anketa ID of survey that hash link belong to
+ * @apiSuccess (Hash link Fields) {String} a Broad type of content of hash link (analysis, data)
+ * @apiSuccess (Hash link Fields) {String} m Specific type of content of hash link (analysis_creport, descriptor, frequency, charts, sumarnik)
+ * @apiSuccess (Hash link Fields) {String} profile_id_status
+ * @apiSuccess (Hash link Fields) {String} profile_id_variable
+ * @apiSuccess (Hash link Fields) {String} profile_id_condition
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * [{
+ "hash": "179A60BA",
+ "properties": {
+ "anketa": "50",
+ "a": "analysis",
+ "m": "frequency",
+ "profile_id_status": 2,
+ "profile_id_variable": 0,
+ "profile_id_condition": 1
+ },
+ "comment": "Frequencies",
+ "refresh": "0",
+ "access_password": "",
+ "page": "analysis",
+ "add_date": "17.05.2019",
+ "add_time": "12:38",
+ "email": "admin"
+ }, {
+ "hash": "F3FB9720",
+ "properties": {
+ "anketa": "50",
+ "a": "analysis",
+ "m": "charts",
+ "profile_id_status": 2,
+ "profile_id_variable": 0,
+ "profile_id_condition": 1
+ },
+ "comment": "Charts",
+ "refresh": "0",
+ "access_password": "",
+ "page": "analysis",
+ "add_date": "17.05.2019",
+ "add_time": "12:37",
+ "email": "admin"
+ }, {
+ "hash": "2D704440",
+ "properties": {
+ "anketa": "50",
+ "a": "data",
+ "m": "",
+ "profile_id_status": 2,
+ "profile_id_variable": 0,
+ "profile_id_condition": 1
+ },
+ "comment": "",
+ "refresh": "0",
+ "access_password": null,
+ "page": "data",
+ "add_date": "17.05.2019",
+ "add_time": "12:37",
+ "email": "admin"
+ }, {
+ "hash": "7A96B2C7",
+ "properties": {
+ "anketa": "50",
+ "a": "analysis",
+ "m": "sumarnik",
+ "profile_id_status": 2,
+ "profile_id_variable": 0,
+ "profile_id_condition": 1
+ },
+ "comment": "Summary",
+ "refresh": "0",
+ "access_password": "",
+ "page": "analysis",
+ "add_date": "17.05.2019",
+ "add_time": "12:36",
+ "email": "admin"
+ }]
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyHashes($ank_id){
+ $hashUrl = new HashUrl($ank_id);
+ return $hashUrl->getSurveyHashes();
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyQuestions/survey/:id getSurveyQuestions
+ * @apiName getSurveyQuestions
+ * @apiGroup Questions and variables
+ * @apiDescription Get info of all questions of survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess (Main Fields) {String} id Id of question
+ * @apiSuccess (Main Fields) {String} tip Type of question (verbal)
+ * @apiSuccess (Main Fields) {String} naslov Title of question
+ * @apiSuccess (Main Fields) {String} info Additional information of question (e.g. "Multiple answers are possible")
+ * @apiSuccess (Main Fields) {String} variable Short mark of question (question name)
+ * @apiSuccess (Main Fields) {String} stran_id Id of page
+ * @apiSuccess (Main Fields) {String} stran_naslov Title of page
+ * @apiSuccess (Main Fields) {String} vrstni_red Sequence number of the question
+ * @apiSuccess (Main Fields) {Object} vrednosti Values o questions (possible answers)
+ * @apiSuccess (Value Fields) {String} id Id of value in question
+ * @apiSuccess (Value Fields) {String} naslov Title of value in question
+ * @apiSuccess (Value Fields) {String} variable Short mark of value in question (value name)
+ * @apiSuccess (Value Fields) {String} vrstni_red Sequence number of value in the question
+ * @apiSuccessExample {json} Success-Response:
+ * {"1234":{
+ * "id":"1234",
+ * "tip":"One answer",
+ * "naslov":"Question tittle 1",
+ * "info":"",
+ * "variable":"Q1",
+ * "stran_id":"2890",
+ * "stran_naslov":"Page 1",
+ * "vrstni_red":"1",
+ * "vrednosti":{
+ * "48495":{
+ * "id":"48495",
+ * "naslov":"Write text 1",
+ * "variable":"1",
+ * "vrstni_red":"1"},
+ * "48496":{
+ * "id":"48496",
+ * "naslov":"Write text 2",
+ * "variable":"2",
+ * "vrstni_red":"2"}
+ * }
+ * }},
+ * {"1235"...
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyQuestions($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $json_array = array();
+
+ // Napolnimo podatke o vseh vprasanjih v anketi
+ $sql = sisplet_query("SELECT s.id, s.tip, s.naslov, s.info, s.variable, s.gru_id, s.vrstni_red, g.naslov as gru_naslov FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='$ank_id' ORDER BY g.vrstni_red ASC, s.vrstni_red ASC");
+ while ($row = mysqli_fetch_assoc($sql)) {
+
+ // Vrednosti v vprasanju
+ $vrednosti = array();
+ $sqlV = sisplet_query("SELECT id, naslov, variable, vrstni_red FROM srv_vrednost WHERE spr_id='" . $row['id'] . "' ORDER BY vrstni_red ASC");
+ while ($rowV = mysqli_fetch_assoc($sqlV)) {
+ $vrednosti[$rowV['id']] = array(
+ 'id' => $rowV['id'],
+ 'naslov' => $rowV['naslov'],
+ 'variable' => $rowV['variable'],
+ 'vrstni_red' => $rowV['vrstni_red']
+ );
+ }
+
+ $json_array[$row['id']] = array(
+ 'id' => $row['id'],
+ 'tip' => $lang['srv_vprasanje_tip_' . $row['tip']],
+ 'naslov' => $row['naslov'],
+ 'info' => $row['info'],
+ 'variable' => $row['variable'],
+ 'stran_id' => $row['gru_id'],
+ 'stran_naslov' => $row['gru_naslov'],
+ 'vrstni_red' => $row['vrstni_red'],
+ 'vrednosti' => $vrednosti
+ );
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurvey/survey/:id getSurvey
+ * @apiName getSurvey
+ * @apiGroup Surveys
+ * @apiDescription Get info of survey and its questions
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess (Main Fields) {String} link Link of survey
+ * @apiSuccess (Main Fields) {String} title Title of survey
+ * @apiSuccess (Main Fields) {String} intro Introduction text ("" means default)
+ * @apiSuccess (Main Fields) {String} concl Conclusion text ("" means default)
+ * @apiSuccess (Main Fields) {String} show_intro Hide or show introduction (0-hide, 1-show)
+ * @apiSuccess (Main Fields) {String} show_concl Hide or show conclusion (0-hide, 1-show)
+ * @apiSuccess (Main Fields) {String} page_id ID of last page in survey
+ * @apiSuccess (Main Fields) {Object[]} questions Array of all questions in survey
+ * @apiSuccess (Question Fields) {String} id Id of question in survey
+ * @apiSuccess (Question Fields) {String} type Type in text of question in survey
+ * @apiSuccess (Question Fields) {String} type_code Type in code of question in survey
+ * @apiSuccess (Question Fields) {String} title Title/text of question in survey
+ * @apiSuccess (Question Fields) {String} info Additional information of question (e.g. "Multiple answers are possible")
+ * @apiSuccess (Question Fields) {String} variable Short mark of question in survey (question name)
+ * @apiSuccess (Question Fields) {String} page_id ID of page that question is at
+ * @apiSuccess (Question Fields) {String} page_title Name/text of page that question is at
+ * @apiSuccess (Question Fields) {String} reminder Reminder of question (0-no reminder, 1-soft reminder, 2-hard reminder)
+ * @apiSuccess (Question Fields) {String} order Sequence number of question in page
+ * @apiSuccess (Question Fields) {String} params Additional params as string for question
+ * @apiSuccess (Question Fields) {Object[]} options Array of options/answers/values of question
+ * @apiSuccess (Value Fields) {String} id Id of value in question
+ * @apiSuccess (Value Fields) {String} title Title of value in question
+ * @apiSuccess (Value Fields) {String} variable Short mark of value in question (value name)
+ * @apiSuccess (Value Fields) {String} other Is this value other (0-basic, 1-other)
+ * @apiSuccess (Value Fields) {String} order Sequence number of value in the question
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * {
+ "link": "http:\/\/192.168.0.101\/1ka\/a\/109",
+ "title": "A survey",
+ "intro": "",
+ "concl": "",
+ "show_intro": "1",
+ "show_concl": "1",
+ "page_id": "135",
+ "questions": [{
+ "id": "487",
+ "type": "Single answer",
+ "type_code": "1",
+ "title": "City",
+ "info": "",
+ "variable": "Q1",
+ "page_id": "134",
+ "page_title": "Stran 1",
+ "reminder": "0",
+ "orientation": "1",
+ "order": "1",
+ "params": [],
+ "options": [{
+ "id": "1438",
+ "title": "Ljubljana",
+ "variable": "1",
+ "other": "0",
+ "order": "1"
+ }, {
+ "id": "1439",
+ "title": "Berlin",
+ "variable": "2",
+ "other": "0",
+ "order": "2"
+ }, {
+ "id": "1440",
+ "title": "London",
+ "variable": "3",
+ "other": "0",
+ "order": "3"
+ }, {
+ "id": "1445",
+ "title": "Other:",
+ "variable": "4",
+ "other": "1",
+ "order": "4"
+ }]
+ }, {
+ "id": "488",
+ "type": "Multiple answer",
+ "type_code": "2",
+ "title": "Country",
+ "info": "Multiple answers possible",
+ "variable": "Q2",
+ "page_id": "134",
+ "page_title": "Stran 1",
+ "reminder": "0",
+ "orientation": "1",
+ "order": "2",
+ "params": [],
+ "options": [{
+ "id": "1441",
+ "title": "Slovenia",
+ "variable": "Q2a",
+ "other": "0",
+ "order": "1"
+ }, {
+ "id": "1442",
+ "title": "Germany",
+ "variable": "Q2b",
+ "other": "0",
+ "order": "2"
+ }, {
+ "id": "1443",
+ "title": "UK",
+ "variable": "Q2c",
+ "other": "0",
+ "order": "3"
+ }, {
+ "id": "1446",
+ "title": "Other:",
+ "variable": "Q2d",
+ "other": "1",
+ "order": "4"
+ }]
+ }, {
+ "id": "489",
+ "type": "Text input",
+ "type_code": "21",
+ "title": "Write a name",
+ "info": "",
+ "variable": "Q3",
+ "page_id": "135",
+ "page_title": "Page 2",
+ "reminder": "0",
+ "orientation": "1",
+ "order": "1",
+ "params": {
+ "taWidth": "-1",
+ "taSize": "1",
+ "captcha": "0",
+ "emailVerify": "0",
+ "prevAnswers": "0",
+ "disabled_vprasanje": "0"
+ },
+ "options": [{
+ "id": "1444",
+ "title": "Input text",
+ "variable": "Q3a",
+ "other": "0",
+ "order": "1"
+ }]
+ }]
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurvey($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $sqlank = sisplet_query("SELECT naslov, introduction, conclusion, show_intro, show_concl FROM srv_anketa WHERE id='$ank_id'");
+ $rowank = mysqli_fetch_assoc($sqlank);
+
+ $sqlgru = sisplet_query("SELECT g.id as gru_id FROM srv_grupa g WHERE g.ank_id='$ank_id'");
+ $rowgru = mysqli_fetch_assoc($sqlgru);
+
+ SurveyInfo::getInstance()->SurveyInit($ank_id);
+ $link = SurveyInfo::getSurveyLink();
+
+ $json_array = array('link' => $link, 'title' => $rowank['naslov'], 'intro' => $rowank['introduction'], 'concl' => $rowank['conclusion'],
+ 'show_intro' => $rowank['show_intro'], 'show_concl' => $rowank['show_concl'], 'page_id' => $rowgru['gru_id'], 'questions' => array());
+
+ $vprasanja = array();
+ // Napolnimo podatke o vseh vprasanjih v anketi
+ $sql = sisplet_query("SELECT s.*, g.naslov as gru_naslov, g.id as gru_id FROM srv_spremenljivka s, srv_grupa g WHERE s.gru_id=g.id AND g.ank_id='$ank_id' ORDER BY g.vrstni_red ASC, s.vrstni_red ASC");
+ while ($row = mysqli_fetch_assoc($sql)) {
+ $spremenljivkaParams = new enkaParameters($row['params']);
+ $json_array['page_id'] = $row['gru_id'];
+ // Vrednosti v vprasanju
+ $vrednosti = array();
+ $sqlV = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='" . $row['id'] . "' ORDER BY vrstni_red ASC");
+ while ($rowV = mysqli_fetch_assoc($sqlV)) {
+ array_push($vrednosti, array(
+ 'id' => $rowV['id'],
+ 'title' => strip_tags($rowV['naslov']),
+ 'variable' => $rowV['variable'],
+ 'other' => $rowV['other'],
+ 'order' => $rowV['vrstni_red']
+ ));
+ }
+
+ array_push($json_array['questions'], array(
+ 'id' => $row['id'],
+ 'type' => $lang['srv_vprasanje_tip_' . $row['tip']],
+ 'type_code' => $row['tip'],
+ 'title' => strip_tags($row['naslov']),
+ 'info' => $row['info'],
+ 'variable' => $row['variable'],
+ 'page_id' => $row['gru_id'],
+ 'page_title' => $row['gru_naslov'],
+ 'reminder' => $row['reminder'],
+ 'orientation' => $row['orientation'],
+ 'order' => $row['vrstni_red'],
+ 'params' => $spremenljivkaParams->toArray(),
+ 'options' => $vrednosti
+ ));
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyStatuses/survey/:id getSurveyStatuses
+ * @apiName getSurveyStatuses
+ * @apiGroup Dashboard
+ * @apiDescription Get statuses of responses of survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess {Object} valid 6-finished surveys, 5-partially finished surveys
+ * @apiSuccess {Object} nonvalid 6l-lurkers, 5l-lurkers, 4-click on survey, 3-click on intro, -1-unknown status
+ * @apiSuccess {Object} invitation (non-surveyed units) 2-email sent (error), 1-email sent (non-response), 0-email not sent
+ * @apiSuccessExample {json} Success-Response:
+ * {"valid":{"6":50,"5":0},
+ * "nonvalid":{"6l":0,"5l":0,"4":0,"3":0,"-1":0},
+ * "invitation":{"2":0,"1":0,"0":0}}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyStatuses($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $ss = new SurveyStatistic();
+ $ss->Init($ank_id);
+ $ss->prepareStatusView();
+
+ $json_array = $ss->getUserByStatus();
+
+ return $json_array;
+ }
+
+ // Vrne response rate za anketo
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyAnswerState/survey/:id getSurveyAnswerState
+ * @apiName getSurveyAnswerState
+ * @apiGroup Dashboard
+ * @apiDescription Get response rate for survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess (Main Fields) {Object[]} status Basic status of answers (3ll-entered intro, 4ll-entered frist page, 5ll-started responding, 5-partially completed, 6-completed)
+ * @apiSuccess (Main Fields) {Object[]} usability Unit usability (unit (bottom usable limit/top usable limit))
+ * @apiSuccess (Main Fields) {Object[]} breakoffs Data of responents breakoffs
+ * @apiSuccess (Data Fields) {Number} freq Frequency
+ * @apiSuccess (Data Fields) {String} state Realtive frequency
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "status": {
+ "3ll": {
+ "freq": 29,
+ "state": "100%"
+ },
+ "4ll": {
+ "freq": 27,
+ "state": "93%"
+ },
+ "5ll": {
+ "freq": 20,
+ "state": "69%"
+ },
+ "5": {
+ "freq": 18,
+ "state": "62%"
+ },
+ "6": {
+ "freq": 18,
+ "state": "62%"
+ }
+ },
+ "usability": {
+ "unit": "(50%\/80%)",
+ "usable": {
+ "freq": 1,
+ "state": "5%"
+ },
+ "partusable": {
+ "freq": 6,
+ "state": "30%"
+ },
+ "unusable": {
+ "freq": 13,
+ "state": "65%"
+ }
+ },
+ "breakoffs": {
+ "intro": {
+ "freq": 9,
+ "state": "31%"
+ },
+ "questionnaire": {
+ "freq": 0,
+ "state": "0% (neto 0%)"
+ },
+ "total": {
+ "freq": 9,
+ "state": "31%"
+ }
+ }
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyAnswerState($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $ss = new SurveyStatistic();
+ $ss->Init($ank_id);
+ $ss->prepareStatusView();
+
+ $json_array = $ss->JsonAnswerStateView();
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyRedirections/survey/:id getSurveyRedirections
+ * @apiName getSurveyRedirections
+ * @apiGroup Dashboard
+ * @apiDescription Get all redirections of survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "3": 0,
+ "4": 0,
+ "5": 0,
+ "6": 0,
+ "valid": {
+ "email": 86,
+ "www.1ka.si": 23,
+ "www.customsite.si": 1
+ },
+ "email": 86,
+ "direct": 4,
+ "cntAll": 0
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyRedirections($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $ss = new SurveyStatistic();
+ $ss->Init($ank_id);
+ $ss->prepareStatusView();
+
+ $json_array = $ss->getUserRedirections();
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyDateTimeRange/survey/:id getSurveyDateTimeRange
+ * @apiName getSurveyDateTimeRange
+ * @apiGroup Dashboard
+ * @apiDescription Get object of nubers of all responses by date and hour in day (keys as date and hour in day, values as number of answers at that time)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "2017-10-02 09": "10",
+ "2017-10-03 13": "1",
+ "2017-11-10 11": "3",
+ "2017-11-10 12": "7",
+ "2017-11-10 13": "1",
+ "2017-11-10 14": "7",
+ "2017-11-10 17": "2"
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyDateTimeRange($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $ss = new SurveyStatistic();
+ $ss->Init($ank_id);
+ $ss->setPeriod(PERIOD_HOUR_PERIOD);
+ $ss->PrepareDateView();
+
+ $json_array = $ss->getArrayRange();
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyParadata/survey/:id getSurveyParadata
+ * @apiName getSurveyParadata
+ * @apiGroup Dashboard
+ * @apiDescription Get paradata of responses of survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess {Object[]} valid Paradata of valid answers/respondents
+ * @apiSuccess {Object[]} all Paradata of all (valid and nonvalid) answers/respondents
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "valid": {
+ "unfilteredCount": 3,
+ "allCount": 2,
+ "pcCount": "2",
+ "mobiCount": 0,
+ "tabletCount": 0,
+ "robotCount": 0,
+ "jsActive": 2,
+ "jsNonActive": 0,
+ "jsUndefined": 0,
+ "browser": {
+ "Other": "2"
+ },
+ "os": {
+ "Other": "2"
+ }
+ },
+ "all": {
+ "unfilteredCount": 3,
+ "allCount": 3,
+ "pcCount": "3",
+ "mobiCount": 0,
+ "tabletCount": 0,
+ "robotCount": 0,
+ "jsActive": 3,
+ "jsNonActive": 0,
+ "jsUndefined": 0,
+ "browser": {
+ "Other": "3"
+ },
+ "os": {
+ "Other": "3"
+ }
+ }
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyParadata($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $spg = new SurveyParaGraph($ank_id);
+ $spg->setParaGraphFilter(array('status' => 1, 'pc' => 1, 'tablet' => 1, 'mobi' => 1, 'robot' => 1));
+ $json_array_valid = $spg->collectParaGraphDataNew();
+ $spg->setParaGraphFilter(array('status' => 0, 'pc' => 1, 'tablet' => 1, 'mobi' => 1, 'robot' => 1));
+ $json_array_all = $spg->collectParaGraphDataNew();
+
+ return (array('valid' => $json_array_valid, 'all' => $json_array_all));
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyDashboard/survey/:id getSurveyDashboard
+ * @apiName getSurveyDashboard
+ * @apiGroup Dashboard
+ * @apiDescription Get all dashboard data of survey (if survey has no responses, only survey info is returned)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess {Object[]} info Info of survey (basic dashboard info)
+ * @apiSuccess {Object[]} [statuses] Statuses of responses of survey (optional)
+ * @apiSuccess {Object[]} [datetime] Object of nubers of all responses by date and hour in day (optional)
+ * @apiSuccess {Object[]} [redirections] Redirections of survey (optional)
+ * @apiSuccess {Object[]} [paradata] Paradata of responses of survey (optional)
+ * @apiSuccess {Object[]} [responserate] Response rate of survey (optional)
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "info": [SEE OUTPUT OF FUNCTION getSurveyInfo],
+ "statuses": [SEE OUTPUT OF FUNCTION getSurveyStatuses],
+ "datetime": [SEE OUTPUT OF FUNCTION getSurveyDateTimeRange],
+ "redirections": [SEE OUTPUT OF FUNCTION getSurveyDateTimeRange],
+ "paradata": [SEE OUTPUT OF FUNCTION getSurveyParadata],
+ "responserate": [SEE OUTPUT OF FUNCTION getSurveyAnswerState]
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyDashboard($ank_id){
+ $json_array = array();
+ $json_array['info'] = $this->getSurveyInfo($ank_id);
+
+ //if there are no answers, no need for dashboard, only info needed
+ if ($json_array['info']['surveys'][0]['answers'] > 0) {
+ $json_array['statuses'] = $this->getSurveyStatuses($ank_id);
+ $json_array['datetime'] = $this->getSurveyDateTimeRange($ank_id);
+ $json_array['redirections'] = $this->getSurveyRedirections($ank_id);
+ $json_array['paradata'] = $this->getSurveyParadata($ank_id);
+ $json_array['responserate'] = $this->getSurveyAnswerState($ank_id);
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyFrequencies/survey/:id getSurveyFrequencies
+ * @apiName getSurveyFrequencies
+ * @apiGroup Data and analysis
+ * @apiDescription Get frequencies for all radio, checkbox, dropdown and plain text questions in the survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess (Question Fields) {String} besedilo_vprasanja Text of question
+ * @apiSuccess (Question Fields) {String} id_vprasanja Id of question (left side of '_' is actual ID of question, right side is ID of sequence within question)
+ * @apiSuccess (Question Fields) {String} vrsta_vprasanja Code of question type: 0-single choice (radio, dropdown), 1-multiple choice (checkbox), 2-text
+ * @apiSuccess (Question Fields) {Object} odgovori Answers
+ * @apiSuccess (Answer Fields) {Object} invalid Invalid answers
+ * @apiSuccess (Answer Fields) {Number} invalidCnt Count of all invalid answers
+ * @apiSuccess (Answer Fields) {Number} allCnt Count of all answers
+ * @apiSuccess (Answer Fields) {Number} validCnt Count of all valid answers
+ * @apiSuccess (Answer Fields) {Object[]} valid Array of all valid asnwers
+ * @apiSuccess (Answer Fields) {String} naslov Text/name/title of answer/choice (not in single choice)
+ * @apiSuccess (Valid answer Fields - single choice) {String} text Text/name/title of answer/choice
+ * @apiSuccess (Valid answer Fields - single choice) {String} text_graf Text of answer/choice in graph
+ * @apiSuccess (Valid answer Fields - single choice) {String} cnt Count of choices for this answer
+ * @apiSuccess (Valid answer Fields - single choice) {Number} vrednost Value of answer/choice
+ * @apiSuccess (Valid answer Fields - multiple choice) {String} text 0-not checked, 1-checked
+ * @apiSuccess (Valid answer Fields - text) {String} text Actual text asnwer
+ * @apiSuccess (Valid answer Fields - text) {Number} cnt Count of same asnwer
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * [{
+ "besedilo_vprasanja": "Best counrty in Europe",
+ "id_vprasanja": "118_0",
+ "vrsta_vprasanja": "0",
+ "odgovori": {
+ "invalid": {
+ "-1": {"text": "Unanswered question","cnt": "1"},
+ "-2": {"text": "Skipped question (IF logic)","cnt": 0},
+ "-3": {"text": "Drop-out","cnt": 0},
+ "-4": {"text": "Subsequent question","cnt": 0},
+ "-5": {"text": "Empty unit","cnt": 0},
+ "-97": {"text": "Invalid","cnt": 0},
+ "-98": {"text": "Refused","cnt": 0},
+ "-99": {"text": "Don&#39;t know","cnt": 0}
+ },
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "validCnt": 4,
+ "valid": [{
+ "text": "Slovenia",
+ "text_graf": "Slovenia",
+ "cnt": "1",
+ "vrednost": 1
+ }, {
+ "text": "Spain",
+ "text_graf": "Spain",
+ "cnt": 0,
+ "vrednost": 2
+ }, {
+ "text": "Germany",
+ "text_graf": "Germany",
+ "cnt": "2",
+ "vrednost": 3
+ }, {
+ "text": "Other:",
+ "text_graf": "Other:",
+ "cnt": "1",
+ "vrednost": 4
+ }, {
+ "text": "estonia",
+ "cnt": 1,
+ "text_graf": null,
+ "other": "Other:",
+ "vrednost": "estonia"
+ }]
+ }
+ }, {
+ "besedilo_vprasanja": "Cities you visited",
+ "id_vprasanja": "119_0",
+ "vrsta_vprasanja": "1",
+ "odgovori": [{
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "valid": [{
+ "text": "0",
+ "text_graf": null,
+ "cnt": "1"
+ }, {
+ "text": "1",
+ "text_graf": null,
+ "cnt": "3"
+ }],
+ "validCnt": 4,
+ "naslov": "Ljubljana"
+ }, {
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "valid": [{
+ "text": "0",
+ "text_graf": null,
+ "cnt": "3"
+ }, {
+ "text": "1",
+ "text_graf": null,
+ "cnt": "1"
+ }],
+ "validCnt": 4,
+ "naslov": "Berlin"
+ }, {
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "valid": [{
+ "text": "0",
+ "text_graf": null,
+ "cnt": "2"
+ }, {
+ "text": "1",
+ "text_graf": null,
+ "cnt": "2"
+ }],
+ "validCnt": 4,
+ "naslov": "Madrid"
+ }, {
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "valid": [{
+ "text": "0",
+ "text_graf": null,
+ "cnt": "3"
+ }, {
+ "text": "1",
+ "text_graf": null,
+ "cnt": "1"
+ }],
+ "validCnt": 4,
+ "naslov": "London"
+ }, {
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "valid": [{
+ "text": "0",
+ "text_graf": null,
+ "cnt": 0
+ }, {
+ "text": "1",
+ "text_graf": null,
+ "cnt": "4"
+ }],
+ "validCnt": 4,
+ "naslov": "Other:"
+ }, {
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "validCnt": 4,
+ "average": null,
+ "valid": [{
+ "text": "paris",
+ "cnt": 1,
+ "text_graf": null,
+ "other": "Other:"
+ }, {
+ "text": "zagreb",
+ "cnt": 1,
+ "text_graf": null,
+ "other": "Other:"
+ }, {
+ "text": "lisbon",
+ "cnt": 2,
+ "text_graf": null,
+ "other": "Other:"
+ }],
+ "other": "Other:"
+ }]
+ }, {
+ "besedilo_vprasanja": "Write a name",
+ "id_vprasanja": "120_0",
+ "vrsta_vprasanja": "2",
+ "odgovori": [{
+ "invalid": {[SEE FIRST QUESTION]},
+ "invalidCnt": 1,
+ "allCnt": 5,
+ "validCnt": 4,
+ "average": null,
+ "valid": [{
+ "text": "lucy",
+ "cnt": 1,
+ "text_graf": null
+ }, {
+ "text": "crish",
+ "cnt": 2,
+ "text_graf": null
+ }, {
+ "text": "marie",
+ "cnt": 1,
+ "text_graf": null
+ }]
+ }]
+ }]
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyFrequencies($ank_id) {
+ global $lang;
+ global $global_user_id;
+
+ $_GET['a'] = 'getSurveyFrequenciesAPI';
+ SurveyAnalysis::Init($ank_id);
+
+ $json_array = array();
+
+ // Zracunamo frekvence
+ $frequencies = SurveyAnalysis::getFrequencys();
+
+ //error_log(serialize($frequencies));
+ // Loop cez vsa vprasanja
+ $cnt = 0;
+ foreach (SurveyAnalysis::$_HEADERS AS $spid => $spremenljivka) {
+ if ($spremenljivka['tip'] != 'm' && $spremenljivka['tip'] != 'sm' && isset($spremenljivka['tip']) && in_array($spremenljivka['tip'], array('1', '2', '3', '21'))) {
+
+ // Naslov vprasanja
+ $json_array[$cnt]['besedilo_vprasanja'] = $spremenljivka['naslov'];
+ $json_array[$cnt]['id_vprasanja'] = $spid;
+
+ // text
+ if ($spremenljivka['tip'] == 21) {
+ $json_array[$cnt]['vrsta_vprasanja'] = '2';
+
+ $variables = explode('_', $spremenljivka['sequences']);
+ $i = 0;
+ foreach ($variables as $variable) {
+
+ // Frekvence vprasanja - vsako polje posebej
+ $json_array[$cnt]['odgovori'][$i] = $frequencies[$variable];
+
+ // Popravimo da je lahko json array
+ $valid_array = array();
+ if (count($json_array[$cnt]['odgovori'][$i]['valid']) > 0) {
+ $j = 0;
+ foreach ($json_array[$cnt]['odgovori'][$i]['valid'] as $key => $val) {
+ $valid_array[$j] = $val;
+
+ $j++;
+ }
+ }
+
+ unset($json_array[$cnt]['odgovori'][$i]['valid']);
+ $json_array[$cnt]['odgovori'][$i]['valid'] = $valid_array;
+
+ $i++;
+ }
+ }
+ // checkbox
+ else if ($spremenljivka['tip'] == 2) {
+ $json_array[$cnt]['vrsta_vprasanja'] = '1';
+
+ $variables = explode('_', $spremenljivka['sequences']);
+ $i = 0;
+ foreach ($variables as $variable) {
+ //var_dump($spremenljivka['grids'][0]['variables']);
+ //$out = array_values($frequencies[$variable]);
+ // Frekvence vprasanja - vsak checkbox posebej
+ $json_array[$cnt]['odgovori'][$i] = $frequencies[$variable];
+ //$json_array[$cnt]['odgovori'][$i] = array_values($frequencies[$variable]);
+ //je navadni checkbox
+ if ($json_array[$cnt]['odgovori'][$i]['valid'][0] != null) {
+ // Dodamo se text checkboxa
+ $json_array[$cnt]['odgovori'][$i]['naslov'] = $spremenljivka['grids'][0]['variables'][$i]['naslov'];
+ }
+ //so vnesene opcije "Drugo:"
+ else {
+ // Popravimo da je lahko json array
+ $valid_array = array();
+ if (count($json_array[$cnt]['odgovori'][$i]['valid']) > 0) {
+ $j = 0;
+ foreach ($json_array[$cnt]['odgovori'][$i]['valid'] as $key => $val) {
+ $valid_array[$j] = $val;
+ $j++;
+ }
+ }
+
+ //ce obstajajo odgovori na opcijo other, jih izpisi
+ if ($valid_array != null) {
+ unset($json_array[$cnt]['odgovori'][$i]['valid']);
+ $json_array[$cnt]['odgovori'][$i]['valid'] = $valid_array;
+ //dodamo znacko da je other
+ $json_array[$cnt]['odgovori'][$i]['other'] = $spremenljivka['grids'][0]['variables'][$i]['naslov'];
+ // Dodamo se text checkboxa
+ //$json_array[$cnt]['odgovori'][$i]['naslov'] = $spremenljivka['grids'][0]['variables'][$i]['naslov'];
+ }
+ //ce ne obstajajo odgovori na opcijo other, sploh ne posiljaj tega objekta
+ else {
+ unset($json_array[$cnt]['odgovori'][$i]);
+ }
+ }
+ $i++;
+ }
+ }
+ // radio
+ else {
+ $json_array[$cnt]['vrsta_vprasanja'] = '0';
+
+ // Frekvence vprasanja
+ $variable = explode('_', $spremenljivka['sequences']);
+ $json_array[$cnt]['odgovori'] = $frequencies[$variable[0]];
+
+ // Popravimo da je lahko json array
+ $valid_array = array();
+ $i = 0;
+ foreach ($json_array[$cnt]['odgovori']['valid'] as $key => $val) {
+ $valid_array[$i] = $val;
+ $valid_array[$i]['vrednost'] = $key;
+
+ $i++;
+ }
+
+ if (isset($frequencies[$variable[1]]['valid'])) {
+ foreach ($frequencies[$variable[1]]['valid'] as $key => $val) {
+ $valid_array[$i] = $val;
+ $valid_array[$i]['vrednost'] = $key;
+ //$valid_array[$i]['other'] = 1;//zdaj se po defaultu izpise other: [String drugo]
+ $i++;
+ }
+ }
+
+ unset($json_array[$cnt]['odgovori']['valid']);
+ $json_array[$cnt]['odgovori']['valid'] = $valid_array;
+ }
+
+ $cnt++;
+ }
+ }
+ return $json_array;
+ }
+
+ /**
+ * Vrne seznam anket za uporabnika ali info dolocene ankete
+ * @param type $ank_id
+ * @param type $limit - limit koliko anket vrne (zadnji vnos DESC)
+ * @param type $mobile_created - 0=vse ankete, 1=samo mobilne ankete
+ * @return array
+ */
+ private function getSurveyListInfo($ank_id = 0, $limit = '', $mobile_created = -1) {
+ $SL = new SurveyList();
+
+ $surveys = $SL->getSurveysSimple($ank_id, $limit, $mobile_created, true);
+
+ $json_array = array();
+ $json_array['count'] = count($surveys);
+ $json_array['surveys'] = $surveys;
+ if($ank_id > 0){
+ SurveyInfo::getInstance()->SurveyInit($ank_id);
+ $json_array['link'] = SurveyInfo::getSurveyLink();
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyInfo/survey/:id getSurveyInfo
+ * @apiName getSurveyInfo
+ * @apiGroup Surveys
+ * @apiDescription Get info of survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} id Id of survey
+ *
+ * @apiSuccess {Number} count Number of surveys in list
+ * @apiSuccess {String} link Access link of survey for respondents
+ * @apiSuccess {Object[]} surveys Array of surveys
+ * @apiSuccess {String} id ID of survey
+ * @apiSuccess {String} naslov Title of survey
+ * @apiSuccess {String} active Current activity of survey (1 – survey is active, 0 – survey is not active)
+ * @apiSuccess {String} block_ip Blocked IP in minutes – 0 off (1440 = 24h) - if on, respondent can not access to survey again for given minutes
+ * @apiSuccess {String} e_name Name of editor of survey
+ * @apiSuccess {String} i_name Name of author of survey
+ * @apiSuccess {String} e_time Last edited
+ * @apiSuccess {String} i_time Created
+ * @apiSuccess {String} v_time_first First entry
+ * @apiSuccess {String} v_time_last Last entry
+ * @apiSuccess {String} answers Number of units
+ * @apiSuccess {String} variables Number of questions
+ * @apiSuccess {String} lastingfrom Date of start survey duration
+ * @apiSuccess {String} lastinguntill Date of end survey duration
+ * @apiSuccess {String} survey_type Type of survey (2-survey, 0-voting, 1-form)
+ * @apiSuccess {String} link Link of survey
+ * @apiSuccessExample {json} Success-Response:
+ * {"count":1,
+ * "surveys":[
+ * {"id":"29",
+ * "folder":"1",
+ * "del":"1",
+ * "naslov":"Test 111",
+ * "active":"1",
+ * "mobile_created":"0",
+ * "block_ip":"0",
+ * "edit_uid":"1045",
+ * "e_name":"admin",
+ * "e_surname":"admin",
+ * "e_email":"admin",
+ * "insert_uid":"1045",
+ * "i_name":"admin",
+ * "i_surname":"admin",
+ * "i_email":"admin",
+ * "e_time":"08.11.18 11:36",
+ * "i_time":"27.07.18 11:36",
+ * "v_time_first":"27.07.18 14:31",
+ * "v_time_last":"20.08.18 9:33",
+ * "answers":"8",
+ * "approp":"7",
+ * "variables":"12",
+ * "trajanjeod":"08.11.18",
+ * "trajanjedo":"08.02.19",
+ * "survey_type":"2"}
+ * ],
+ * "link":"http:\/\/www.1ka.si\/a\/109"
+ * }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyInfo($ank_id) {
+ return $this->getSurveyListInfo($ank_id);
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyList?limit=3 getSurveyList
+ * @apiName getSurveyList
+ * @apiGroup Surveys
+ * @apiDescription Get list of info of all surveys
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam {Number} limit Optional Limit of surveys to return, DESC order by time of new input (answer)
+ *
+ * @apiSuccess {Number} count Number of surveys in list
+ * @apiSuccess {Object[]} surveys Array of surveys
+ * @apiSuccess {String} id ID of survey
+ * @apiSuccess {String} naslov Title of survey
+ * @apiSuccess {String} active Current activity of survey (1 – survey is active, 0 – survey is not active)
+ * @apiSuccess {String} block_ip Blocked IP in minutes – 0 off (1440 = 24h) - if on, respondent can not access to survey again for given minutes
+ * @apiSuccess {String} e_name Name of editor of survey
+ * @apiSuccess {String} i_name Name of author of survey
+ * @apiSuccess {String} e_time Last edited
+ * @apiSuccess {String} i_time Created
+ * @apiSuccess {String} v_time_first First entry
+ * @apiSuccess {String} v_time_last Last entry
+ * @apiSuccess {String} answers Number of units
+ * @apiSuccess {String} variables Number of questions
+ * @apiSuccess {String} lastingfrom Date of start survey duration
+ * @apiSuccess {String} lastinguntill Date of end survey duration
+ * @apiSuccess {String} survey_type Type of survey (2-survey, 0-voting, 1-form)
+ * @apiSuccessExample {json} Success-Response:
+ * {"count":3,
+ * "surveys":[
+ * {"id":"29",
+ * "folder":"1",
+ * "del":"1",
+ * "naslov":"Test 111",
+ * "active":"1",
+ * "mobile_created":"0",
+ * "block_ip":"0",
+ * "edit_uid":"1045",
+ * "e_name":"admin",
+ * "e_surname":"admin",
+ * "e_email":"admin",
+ * "insert_uid":"1045",
+ * "i_name":"admin",
+ * "i_surname":"admin",
+ * "i_email":"admin",
+ * "e_time":"08.11.18 11:36",
+ * "i_time":"27.07.18 11:36",
+ * "v_time_first":"27.07.18 14:31",
+ * "v_time_last":"20.08.18 9:33",
+ * "answers":"8",
+ * "approp":"7",
+ * "variables":"12",
+ * "trajanjeod":"08.11.18",
+ * "trajanjedo":"08.02.19",
+ * "survey_type":"2"},...
+ * ]}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyList($limit = '', $mobile_created = -1) {
+ return $this->getSurveyListInfo(0, $limit, $mobile_created);
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyResponses getSurveyResponses
+ * @apiName getSurveyResponses
+ * @apiGroup Surveys
+ * @apiDescription Get list of numbers of all surveys responses (and info about activity) with keys as survey ID
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiSuccess {String} answers Number of all responses
+ * @apiSuccess {String} active Is survey active right now (1-active, 0-unactive)
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "4401": {
+ "answers": "1103",
+ "active": "0"
+ },
+ "5012": {
+ "answers": "190",
+ "active": "1"
+ },
+ "5330": {
+ "answers": "88",
+ "active": "1"
+ }
+ *}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyResponses($data) {
+ global $global_user_id;
+
+ $result = array();
+
+ // ce imas hkrati dostop do ankete (srv_dostop) in preko managerskega dostopa (srv_dostop_manage) se brez DISTINCT podvajajo ankete
+ $stringSurveyList = "SELECT DISTINCT sa.id, sa.active, ";
+ $stringSurveyList .= "sal.answers as answers "; // vedno prestejemo odgovore
+
+ $stringSurveyList .= "FROM srv_anketa sa ";
+ $stringSurveyList .= "LEFT OUTER JOIN srv_survey_list AS sal ON sal.id = sa.id ";
+
+ # kdo lahko ureja anketo (briše)
+ // tega substringy se ne da dodatno razbit z prepareSubquery, ker selectamo 2 elementa...
+ $stringSurveyList .= "LEFT OUTER JOIN (SELECT 1 AS canEdit, ank_id FROM srv_dostop WHERE FIND_IN_SET('edit', dostop ) ='1' AND aktiven = '1' AND uid = '$global_user_id' OR uid IN (" . SurveyCopy::prepareSubquery(sisplet_query("SELECT user FROM srv_dostop_manage WHERE manager = '" . $global_user_id . "'")) . ")) AS sd ON sd.ank_id = sa.id ";
+
+ $stringSurveyList .= "WHERE sa.backup='0' AND sa.id>0 AND active >= '0' AND invisible = '0' ";
+
+ if (isset($data['mobile_created']) && $data['mobile_created'] != -1)
+ $stringSurveyList .= "AND sa.mobile_created='" . $data['mobile_created'] . "' ";
+
+ $stringSurveyList .= "AND NOT EXISTS (SELECT * FROM srv_mysurvey_anketa sma WHERE sma.ank_id=sa.id AND sma.usr_id='$global_user_id') ";
+
+ $sqlSurveyList = sisplet_query($stringSurveyList);
+
+ while ($rowSurveyList = mysqli_fetch_assoc($sqlSurveyList)) {
+ $result[$rowSurveyList['id']]['answers'] = $rowSurveyList['answers'];
+ $result[$rowSurveyList['id']]['active'] = $rowSurveyList['active'];
+ }
+
+ return $result;
+ }
+
+ /**
+ * @api {get} https://www.1ka.si/api/getSurveyResponseData/survey/:id?usr_id=333 getSurveyResponseData
+ * @apiName getSurveyResponseData
+ * @apiGroup Data and analysis
+ * @apiDescription Get basic info and all values/answers of response
+ *
+ * @apiParam {Number} id ID of survey
+ * @apiParam {Number} usr_id ID of response to analyse
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiSuccess {String} relevance Relevance of response (1-valid, 0-unvalid)
+ * @apiSuccess {String} status Status code of response (6-Completed, 5-partially completed, 4-entered first page, 3-entered intro)
+ * @apiSuccess {String} recnum Record number (sequence of response in survey)
+ * @apiSuccess {String} itime Date of response
+ * @apiSuccess {String} [ALL_OTHERS] Keys as names of values, values as answers
+ * @apiSuccessExample {json} Success-Response:
+ *{
+ "relevance (Relevance)": "1",
+ "status (Status)": "6",
+ "recnum (Record number)": "1",
+ "itime (Date)": "20.05.2019",
+ "Q1 (City)": "1",
+ "Q1_4_text (Other:)": "-2",
+ "Q2a (Slovenia)": "1",
+ "Q2b (Germany)": "1",
+ "Q2c (UK)": "0",
+ "Q2d (Other:)": "0",
+ "Q2d_text (Other:)": "-2",
+ "Q3 (Vpi\u0161ite besedilo)": "Manja"
+ }
+ *
+ * @apiVersion 1.0.0
+ */
+ private function getSurveyResponseData($ank_id, $usr_id, $usr_param='') {
+ global $site_path;
+
+ $json_array = array();
+
+ // Preverimo ce je user id ok nastavljen
+ if ($usr_id <= 0) {
+ $json_array['error'] = 'Error! User ID is not set!';
+ return $json_array;
+ }
+
+
+ // Poskrbimo za datoteko s podatki
+ $SDF = SurveyDataFile::get_instance();
+ $SDF->init($ank_id);
+ $SDF->prepareFiles();
+
+ $_headFileName = $SDF->getHeaderFileName();
+ $_dataFileName = $SDF->getDataFileName();
+ $_fileStatus = $SDF->getStatus();
+
+ // Preverimo ce je ok ustvarjena datoteka s podatki in nastavimo header
+ if ($_fileStatus >= 0 && $_dataFileName !== null && $_dataFileName !== '' && $_headFileName !== null && $_headFileName !== '') {
+ $_HEADERS = unserialize(file_get_contents($_headFileName));
+ }
+ else {
+ $json_array['error'] = 'Error! Data file is missing!';
+
+ return $json_array;
+ }
+
+
+ // Nastavimo na katerem mestu je user id - po defaultu jemljemo usr_id, ki je na 1. mestu
+ $user_position = '1';
+
+ # naredimo header row
+ $header_array = array();
+ $cnt_header = 2;
+ foreach ($_HEADERS AS $spid => $spremenljivka) {
+ if (count($spremenljivka['grids']) > 0) {
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ foreach ($grid['variables'] AS $vid => $variable ){
+ if ($spremenljivka['tip'] !== 'sm' && !($variable['variable'] == 'uid' && $variable['naslov'] == 'User ID')){
+
+ $header_array[] = strip_tags($variable['variable']) . ' ('.strip_tags($variable['naslov']).')';
+
+ // Ce ne primerjamo z usr_id ampak s posebno sistemsko spremenljivko ki belezi id
+ if($usr_param != '' && $usr_param == strip_tags($variable['variable']))
+ $user_position = $cnt_header;
+
+ $cnt_header++;
+ }
+ }
+ }
+ }
+ }
+
+ // Podatke sfiltriramo glede na user id
+ $user_filter = '($'.$user_position.'=='.$usr_id.')';
+ //$status_filter = '('.STATUS_FIELD.'==6)&&('.LURKER_FIELD.'==0)';
+
+ //$start_sequence = $_HEADERS['_settings']['dataSequence'];
+ $start_sequence = 1;
+ $end_sequence = $_HEADERS['_settings']['metaSequence']-1;
+
+ $field_delimit = ';';
+
+ // Filtriramo podatke po statusu in jih zapisemo v temp folder
+ $tmp_folder = $site_path . EXPORT_FOLDER.'/';
+
+ if (IS_WINDOWS) {
+ $out = shell_exec('awk -F"|" "BEGIN {{OFS=\",\"} {ORS=\"\n\"}} '.$user_filter.'" '.$_dataFileName.' | cut -d "|" -f '.$start_sequence.'-'.$end_sequence.' >> '.$tmp_folder.'/temp_api_'.$ank_id.'_'.$usr_id.'.dat');
+ }
+ else {
+ $out = shell_exec('awk -F"|" \'BEGIN {{OFS=","} {ORS="\n"}} '.$user_filter.'\' '.$_dataFileName.' | cut -d \'|\' -f '.$start_sequence.'-'.$end_sequence.' >> '.$tmp_folder.'/temp_api_'.$ank_id.'_'.$usr_id.'.dat');
+ }
+
+
+ if ($fd = fopen($tmp_folder.'/temp_api_'.$ank_id.'_'.$usr_id.'.dat', "r")) {
+
+ $data_array = array();
+
+ // Loop cez vrstice/respondente (ce jih je slucajno vec)
+ $cnt = 0;
+ while ($line = fgets($fd)) {
+
+ $temp = array();
+ $temp = explode('|', $line);
+
+ // Pobrisemo prvo polje user id), ker ga ne rabimo vec
+ $line = substr($line, strpos($line, '|')+1);
+
+ $line = str_replace(array("\r","\n","\"","|", "\'", "\""), array("","","",'";"', "'", ""), $line);
+
+ $data_array = explode(';', $line);
+
+ $cnt++;
+ }
+ }
+ fclose($fd);
+
+ // Na koncu pobrisemo temp datoteko
+ if (file_exists($tmp_folder.'/temp_api_'.$ank_id.'_'.$usr_id.'.dat')) {
+ unlink($tmp_folder.'/temp_api_'.$ank_id.'_'.$usr_id.'.dat');
+ }
+
+
+ // Ce respondent ne obstaja
+ if($cnt == 0){
+ $json_array['error'] = 'Error! Respondent '.$usr_id.' does not exist!';
+ return $json_array;
+ }
+ // Drugace pripravimo odgovor
+ else{
+
+ foreach($header_array as $key => $header_el){
+
+ // Pocistimo dolocena polja (invitation, lurker...)
+ if(!in_array($key, array(1,3,4,6)))
+ $json_array[$header_el] = $data_array[$key];
+ }
+ }
+
+
+ return $json_array;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/createSurvey createSurvey
+ * @apiName createSurvey
+ * @apiGroup Surveys
+ * @apiDescription Create survey with questions
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (Survey fields) {String} naslov_vprasalnika Title/name of survey
+ * @apiParam (Survey fields) {Number} survey_type Type of survey (0-voting, 2-survey)
+ * @apiParam (Survey fields) {Object} uvod Introducrion data
+ * @apiParam (Survey fields) {Number} [hide_uvod] Do we hide introduction (0-show, 1-hide, default is 0)
+ * @apiParam (Survey fields) {Object} zakljucek Conclusion data
+ * @apiParam (Survey fields) {Number} [hide_zakljucek] Do we hide conclusion (0-show, 1-hide, default is 0)
+ * @apiParam (Survey fields) {String} besedilo Text of introduction or conclusion (set it on "" for default text)
+ * @apiParam (Survey fields) {Object[]} [vprasanja] Array of all questions to add to survey
+ * @apiParam (Question fields) {String} besedilo_vprasanja Text of question
+ * @apiParam (Question fields) {Number} mesto_vprasanja Order of question sequence to place this question in page
+ * @apiParam (Question fields) {Number} vrsta_vprasanja Type of question (0-radio, 1-checkbox, 2-text)
+ * @apiParam (Question fields) {Number} [reminder] Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder) (default is 0)
+ * @apiParam (Question fields) {String} [other] Text of option other to add (for radio and checkbox)
+ * @apiParam (Question fields) {Number} [velikost_polja] Height size in lines of text field (for text question) (default is single line)
+ * @apiParam (Question fields) {String[]} [Odgovori] Array of options to add to question (for radio and checkbox)
+ * @apiParamExample {json} Post-example (For survey):
+ {
+ "naslov_vprasalnika": "This is title of new survey",
+ "survey_type": 2,
+ "uvod": {
+ "besedilo": "This is text of intruduction",
+ "hide_uvod": 0
+ },
+ "zakljucek": {
+ "besedilo": "",
+ "hide_zakljucek": 1
+ },
+ "vprasanja": [{
+ "besedilo_vprasanja": "This is text of question number 1",
+ "mesto_vprasanja": 1,
+ "vrsta_vprasanja": 1,
+ "reminder": 0,
+ "other": "Other:",
+ "Odgovori": ["Text of option 1", "Text of option 2", "Text of option 3"]
+ },
+ {
+ "besedilo_vprasanja": "This is text of question number 2",
+ "mesto_vprasanja": 2,
+ "vrsta_vprasanja": 2,
+ "velikost_polja": 10,
+ "reminder": 1
+ },
+ {
+ "besedilo_vprasanja": "This is text of question number 3",
+ "mesto_vprasanja": 3,
+ "vrsta_vprasanja": 0,
+ "Odgovori": ["Text of option 1", "Text of option 2", "Text of option 3"]
+ }
+ ]
+ }
+ *
+ * @apiParamExample {json} Post-example (For voting):
+ {
+ "naslov_vprasalnika": "This is title of new survey",
+ "survey_type": 0,
+ "besedilo_vprasanja": "This is text of question number 1",
+ "vrsta_vprasanja": 0,
+ "other": "Other:",
+ "Odgovori": ["Text of option 1", "Text of option 2", "Text of option 3"]
+ }
+ *
+ * @apiSuccess {String} url Link to new survey
+ * @apiSuccess {String} id ID of new survey
+ * @apiSuccessExample {json} Success-Response:
+ * {"url":"http:\/\/141.255.212.38\/1ka\/a\/56","id":56,"note":"Survey created"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function createSurvey($data) {
+ global $lang;
+ global $site_url;
+ global $global_user_id;
+
+ $json_array = array();
+
+ // Preverimo ce imamo osnovne podatke za ustvarjanje ankete
+ if (!isset($data['naslov_vprasalnika']) || !isset($data['survey_type'])) {
+ $json_array['error'] = 'Title or/and type of survey missing';
+ return $json_array;
+ }
+
+ $mobile_created = (isset($data['mobile_created']) && $data['mobile_created'] == 1) ? 1 : 0;
+
+ $url = $site_url;
+ $naslov = $data['naslov_vprasalnika'];
+ $purifier = New Purifier();
+ $naslov = $purifier->purify_DB($naslov);
+ $survey_type = $data['survey_type'];
+
+ $akronim = $naslov;
+
+ $starts = "NOW()";
+ $expire = "NOW() + INTERVAL 3 MONTH ";
+
+ $lang_resp = $data['lang_resp'];
+ $lang_admin = $data['lang_admin'];
+
+ $autoActiveSurvey = 0;
+
+ $res = sisplet_query("SELECT value FROM misc WHERE what='SurveyCookie'");
+ list ($SurveyCookie) = mysqli_fetch_row($res);
+
+
+ // GLASOVANJE
+ if ($survey_type == 0) {
+
+ $sql = sisplet_query("INSERT INTO srv_anketa (id, naslov, akronim, db_table, starts, expire, dostop, insert_uid, insert_time, edit_uid, edit_time, cookie, text, url, intro_opomba, survey_type, lang_admin, lang_resp, active, skin, show_intro, show_concl, locked, mobile_created) " .
+ "VALUES ('', '$naslov', '$akronim', '1', $starts, $expire, '0', '$global_user_id', NOW(), '$global_user_id', NOW(), '$SurveyCookie', '', '$url', '', '0', '$lang_admin', '$lang_resp', '0', '1kaBlue', '0', '0', '0', '$mobile_created')");
+
+ if (!$sql) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+ $anketa = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ if ($anketa > 0) {
+ $url .= 'a/' . $anketa;
+
+ // vnesemo tudi 1. grupo aka page
+ $sql = sisplet_query("INSERT INTO srv_grupa (id, ank_id, naslov, vrstni_red) VALUES ('', '$anketa', '$lang[srv_stran] 1', '1')");
+ $grupa = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ // Dodamo edino vpraasanje
+ $title = $purifier->purify_DB($data['besedilo_vprasanja']);
+ $vrstni_red = '1';
+ $variable = 'Q' . $vrstni_red;
+
+ // checkbox
+ if ($data['vrsta_vprasanja'] == '1') {
+ $type = 2;
+ $size = count($data['Odgovori']) > 0 ? count($data['Odgovori']) : 3;
+ }
+ // radio
+ else {
+ $type = 1;
+ $size = count($data['Odgovori']) > 0 ? count($data['Odgovori']) : 3;
+ }
+
+ // Vstavimo vprasanje
+ $sql = sisplet_query("INSERT INTO srv_spremenljivka (id, gru_id, naslov, variable, size, tip, vrstni_red)
+ VALUES ('', '$grupa', '<p>$title</p>', '$variable', '$size', '$type', '$vrstni_red')");
+ $spremenljivka = mysqli_insert_id($GLOBALS['connect_db']);
+
+ // Gremo cez posamezne vrednosti in jih dodamo
+ if (count($data['Odgovori']) > 0) {
+ $cnt = 1;
+ foreach ($data['Odgovori'] as $vrednost) {
+ $vrednost = $purifier->purify_DB($vrednost);
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, naslov, variable, vrstni_red)
+ VALUES ('', '$spremenljivka', '$vrednost', '$cnt', '$cnt')");
+
+ $cnt++;
+ }
+ } else {
+ for ($i = 1; $i <= $size; $i++) {
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, variable, vrstni_red)
+ VALUES ('', '$spremenljivka', '$i', '$i')");
+ }
+ }
+
+ if (isset($data['other']) && $data['other'] != '') {
+ $Vpr = new Vprasanje();
+ $Vpr->vrednost_new($data['other'], 1, null, $spremenljivka);
+ }
+ }
+ }
+ // NAVADNA ANKETA
+ else {
+ $uvod = $data['uvod'];
+ $uvod_besedilo = $purifier->purify_DB($uvod['besedilo']);
+ $show_intro = ($uvod['hide_uvod'] == '1') ? 0 : 1;
+
+ $zakljucek = $data['zakljucek'];
+ $zakljucek_besedilo = $purifier->purify_DB($zakljucek['besedilo']);
+ $show_concl = ($zakljucek['hide_zakljucek'] == '1') ? 0 : 1;
+
+ $sql = sisplet_query("INSERT INTO srv_anketa (id, naslov, akronim, db_table, starts, expire, dostop, insert_uid, insert_time, edit_uid, edit_time, cookie, text, url, intro_opomba, survey_type, lang_admin, lang_resp, active, skin, introduction, conclusion, show_intro, show_concl, locked, mobile_created) " .
+ "VALUES ('', '$naslov', '$akronim', '1', $starts, $expire, '0', '$global_user_id', NOW(), '$global_user_id', NOW(), '$SurveyCookie', '', '$url', '', '2', '$lang_admin', '$lang_resp', '$autoActiveSurvey', '1ka', '$uvod_besedilo', '$zakljucek_besedilo', '$show_intro', '$show_concl', '1', '$mobile_created')");
+ if (!$sql) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+ $anketa = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ if ($anketa > 0) {
+ $url .= 'a/' . $anketa;
+
+ // vnesemo tudi 1. grupo aka page
+ $sql = sisplet_query("INSERT INTO srv_grupa (id, ank_id, naslov, vrstni_red) VALUES ('', '$anketa', '$lang[srv_stran] 1', '1')");
+ $grupa = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ // Gremo cez vprasanja in jih dodamo
+ if (isset($data['vprasanja']) && count($data['vprasanja']) > 0) {
+ foreach ($data['vprasanja'] as $vprasanje) {
+ $prasanjedata = array();
+ $prasanjedata['group_id'] = $grupa;
+ $prasanjedata['title'] = $vprasanje['besedilo_vprasanja'];
+ $prasanjedata['order'] = $vprasanje['mesto_vprasanja'];
+ $prasanjedata['type_code'] = $vprasanje['vrsta_vprasanja'];
+ if (isset($vprasanje['velikost_polja']))
+ $prasanjedata['taSize'] = $vprasanje['velikost_polja'];
+ $prasanjedata['reminder'] = $vprasanje['reminder'];
+ $prasanjedata['other'] = $vprasanje['other'];
+ $prasanjedata['options'] = $vprasanje['Odgovori'];
+
+ $this->createQuestion($anketa, $prasanjedata, false);
+ }
+ }
+ }
+ }
+
+ if ($anketa > 0) {
+ // dodamo se uporabnika v dostop
+ $sql = sisplet_query("INSERT INTO srv_dostop (ank_id, uid) VALUES ('$anketa', '$global_user_id')");
+
+ //rabi se, da se naredi vrstica v tabeli srv_branching - na zacetku naredil,
+ //ker drugace ni delalo vredu kopiranje vrednosti pri kopiranju anket
+ new Branching($anketa);
+
+ $json_array['url'] = $url;
+ $json_array['id'] = $anketa;
+
+ $json_array['note'] = 'Survey created';
+ } else {
+ $json_array['error'] = 'Error creating survey';
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/createQuestion/survey/:id createQuestion
+ * @apiName createQuestion
+ * @apiGroup Questions and variables
+ * @apiDescription Add new question to survey, put it on last spot of given group/page in survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey to add new question to
+ *
+ * @apiParam (POST parameter) {String} title Text of question
+ * @apiParam (POST parameter) {Number} [group_id] Id of page/group to put question in (default is last page/group)
+ * @apiParam (POST parameter) {Number} type_code Type of question (0-radio, 1-checkbox, 2-text)
+ * @apiParam (POST parameter) {Number} [reminder] Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder) (default is 0)
+ * @apiParam (POST parameter) {String} [other] Text of option other to add (for cshoose type questions)
+ * @apiParam (POST parameter) {Number} [taSize] Height size in lines of text field (for text question) (default is single line)
+ * @apiParam (POST parameter) {String[]} [options] Array of options to add to question (for cshoose type questions)
+ * @apiParamExample {json} Post-example (For choice-type):
+ {
+ "question": {
+ "title": "This is text of choice type question",
+ "type_code": 1,
+ "group_id": 2027,
+ "reminder": 0,
+ "other": "Other:",
+ "options": ["Text of option 1", "Text of option 2", "Text of option 3"]
+ }
+ }
+ *
+ * @apiParamExample {json} Post-example (For text-type):
+ {
+ "question": {
+ "title": "This is text of text type question",
+ "type_code": 2,
+ "group_id": 2027,
+ "reminder": 1,
+ "taSize": 3
+ }
+ }
+ *
+ * @apiSuccess {String} que_id ID of new question
+ * @apiSuccessExample {json} Success-Response:
+ * {"que_id":5056,"note":"Question created"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function createQuestion($ank_id, $vprasanje, $prestevilci = true) {
+ global $lang;
+ $purifier = New Purifier();
+
+ if (!isset($vprasanje['type_code'])){
+ $json_array['error'] = 'Type code of question missing';
+ return $json_array;
+ }
+
+ //ce ni nastavljene grupe, vprasanje postavimo kar v zadnjo
+ if(!isset($vprasanje['group_id']) || !$vprasanje['group_id']){
+ $sql = sisplet_query("SELECT id from srv_grupa WHERE ank_id='$ank_id' ORDER BY vrstni_red DESC LIMIT 1;", 'obj');
+ if($sql->id)
+ $grupa=$sql->id;
+ //ce se ne obstaja grupa, jo kreiramo
+ else{
+ // vnesemo tudi 1. grupo aka page
+ $sql = sisplet_query("INSERT INTO srv_grupa (id, ank_id, naslov, vrstni_red) VALUES ('', '$ank_id', '$lang[srv_stran] 1', '1')");
+ $grupa = mysqli_insert_id($GLOBALS['connect_db']);
+ }
+ }
+ else
+ $grupa = $vprasanje['group_id'];
+
+ //ce ni dolocen vrstni red za spremenljivko, jo postavi na zadnje mesto grupe
+ if(!isset($vprasanje['order']) || !$vprasanje['order']){
+ $sql = sisplet_query("SELECT vrstni_red from srv_spremenljivka WHERE gru_id='$grupa' ORDER BY vrstni_red DESC LIMIT 1;", 'obj');
+ if($sql->vrstni_red)
+ $vrstni_red=$sql->vrstni_red+1;
+ }
+ else
+ $vrstni_red = $vprasanje['order'];
+
+ $reminder = $vprasanje['reminder'] ? $vprasanje['reminder'] : 0;
+ $other = $vprasanje['other'] ? $vprasanje['other'] : '';
+ $variable = 'Q' . $vrstni_red;
+ $title = (isset($vprasanje['title']) && $vprasanje['title'] != '') ? $purifier->purify_DB($vprasanje['title']) : $variable;
+ $params = '';
+
+ // checkbox
+ if ($vprasanje['type_code'] == '1') {
+ $type = 2;
+ $size = (isset($vprasanje['options']) && count($vprasanje['options']) > 0) ? count($vprasanje['options']) : 3;
+ }
+ // textbox
+ elseif ($vprasanje['type_code'] == '2') {
+ $type = 21;
+ $size = 1;
+ if($vprasanje['taSize'])
+ $params = 'taSize=' . $vprasanje['taSize'];
+ }
+ // radio
+ else {
+ $type = 1;
+ $size = (isset($vprasanje['options']) && count($vprasanje['options']) > 0) ? count($vprasanje['options']) : 3;
+ }
+
+ // Vstavimo vprasanje
+ $sql = sisplet_query("INSERT INTO srv_spremenljivka (id, gru_id, naslov, variable, size, tip, vrstni_red, reminder, params)
+ VALUES ('', '$grupa', '<p>$title</p>', '$variable', '$size', '$type', '$vrstni_red', '$reminder', '$params')");
+ $spremenljivka = mysqli_insert_id($GLOBALS['connect_db']);
+
+ //vnesi vrednost samo za textbox
+ if ($vprasanje['type_code'] == '2') {
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, naslov, variable, vrstni_red) VALUES ('', '$spremenljivka', '" . $variable . "a', '1', '1')");
+ }
+
+ // Gremo cez posamezne vrednosti in jih dodamo
+ if (isset($vprasanje['options']) && count($vprasanje['options']) > 0) {
+ $cnt = 1;
+ foreach ($vprasanje['options'] as $vrednost) {
+ $vrednost = $purifier->purify_DB($vrednost);
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, naslov, variable, vrstni_red) VALUES ('', '$spremenljivka', '$vrednost', '$cnt', '$cnt')");
+ $cnt++;
+ }
+ }
+
+ //dodamo se OTHER option, ce je nastavljeno
+ if ($other != '') {
+ $Vpr = new Vprasanje();
+ $Vpr->vrednost_new($other, 1, null, $spremenljivka);
+ }
+
+ Common::getInstance()->updateEditStamp();
+ Common::prestevilci($spremenljivka);
+ if ($prestevilci)
+ Common::prestevilci();
+
+ //potrebno za branching, da se podatki osvezijo in posodobijo v tabeli srv_branching
+ sisplet_query("UPDATE srv_anketa SET branching='0' WHERE id = '$ank_id'");
+ //zazeni branching, da se podatki v tabeli srv_branching posodobijo
+ new Branching($ank_id);
+
+ $json_array['note'] = 'Question created';
+ $json_array['que_id'] = $spremenljivka;
+ return $json_array;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/updateQuestion/survey/:id updateQuestion
+ * @apiName updateQuestion
+ * @apiGroup Questions and variables
+ * @apiDescription Update basic question properties
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} id_que ID of question
+ * @apiParam (POST parameter) {String} [title] Title/text of question
+ * @apiParam (POST parameter) {String} [reminder] Reminder code for question (0-no reminder, 1-soft reminder, 2-hard reminder)
+ * @apiParam (POST parameter) {String} [other] Text of option "Other" (update or add)
+ * @apiParamExample {json} Post-example:
+ {
+ "question": {
+ "id_que": "8487",
+ "title": "Which city you like most?",
+ "reminder": "1",
+ "other": "Other:"
+ }
+ }
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Question updated"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function updateQuestion($ank_id, $vprasanje) {
+ $purifier = New Purifier();
+
+ if($this->isQuestionSiblingOfSurvey($ank_id, $vprasanje['id_que'])){
+ if(!isset($vprasanje['title']) && !isset($vprasanje['reminder']) && !isset($vprasanje['other']) && !isset($vprasanje['taSize'])){
+ $json_array['error'] = 'Nothing to update';
+ return $json_array;
+ }
+ else{
+ $query = "UPDATE srv_spremenljivka SET";
+
+ if (isset($vprasanje['title']))
+ $query .= " naslov='<p>" . $purifier->purify_DB($vprasanje['title']) . "</p>',";
+
+ if (isset($vprasanje['reminder']))
+ $query .= " reminder='" . $vprasanje['reminder'] . "',";
+
+ $other = isset($vprasanje['other']) ? $vprasanje['other'] : null;
+ $id_spr = $vprasanje['id_que'];
+
+ //v dokumentaciji to izpustimo, ker pobrise vse druge parametre (v aplikaciji pa se to vseeno uporablja)
+ if (isset($vprasanje['taSize']))
+ $query .= " params='taSize=" . $vprasanje['taSize'] . "',";
+
+ $sql = sisplet_query(substr($query, 0, -1) . " WHERE id='$id_spr';");
+ if (!$sql)
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+
+ // Gremo cez posamezne vrednosti in jih dodamo
+ /* if(count($vprasanje['Odgovori']) > 0){
+ $cnt = 1;
+ foreach($vprasanje['Odgovori'] as $vrednost){
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, naslov, variable, vrstni_red)
+ VALUES ('', '$spremenljivka', '$vrednost', '$cnt', '$cnt')");
+ $cnt++;
+ }
+ }
+ else{
+ for($i=1; $i<=$size; $i++){
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, naslov, variable, vrstni_red) VALUES ('', '$spremenljivka', '$i', '$i', '$i')");
+ }
+ }
+ */
+
+ //ce se posodobi other
+ if ($other !== null) {
+ $sql = sisplet_query("SELECT id, naslov, vrstni_red FROM srv_vrednost WHERE spr_id='$id_spr' AND other='1';");
+ $otherV = mysqli_fetch_assoc($sql);
+
+ //other obstaja za to spremenljivko
+ if ($otherV) {
+ //samo spremeni title
+ if ($other != '' && $otherV['naslov'] != $other) {
+ sisplet_query("UPDATE srv_vrednost SET naslov='" . $purifier->purify_DB($other) . "' WHERE id='" . $otherV['id'] . "';");
+ }
+ //delete other
+ elseif ($other == '') {
+ $this->deleteOption($ank_id, $otherV['id']);
+ }
+ }
+ //other ne obstaja za to spremenljivko
+ else {
+ //se ni other v tej spremenljivki, dodaj ga
+ if ($other != '') {
+ $Vpr = new Vprasanje();
+ $Vpr->vrednost_new($other, 1, null, $id_spr);
+ Common::prestevilci($id_spr);
+ }
+ }
+ }
+
+ Common::getInstance()->Init($ank_id);
+ Common::getInstance()->updateEditStamp();
+
+ $json_array['note'] = 'Question updated';
+ }
+ }
+ else{
+ $json_array['error'] = 'Question does not exist or not belong to this survey';
+ }
+ return $json_array;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/updateSurvey/survey/:id updateSurvey
+ * @apiName updateSurvey
+ * @apiGroup Surveys
+ * @apiDescription Update basic survey properties
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} [title] Title of survey
+ * @apiParam (POST parameter) {String} [que_title] Title/text of question (only voting)
+ * @apiParam (POST parameter) {String} [introduction] Introduction text of survey or form ("" stands for default text)
+ * @apiParam (POST parameter) {String} [conclusion] Conclusion text of survey or form ("" stands for default text)
+ * @apiParam (POST parameter) {String} [show_intro] Do we show introduction (0-hide, 1-show)
+ * @apiParam (POST parameter) {String} [show_concl] Do we show conclusion (0-hide, 1-show)
+ * @apiParamExample {json} Post-example (survey or form):
+ {
+ "title":"A survey",
+ "introduction":"",
+ "conclusion":"Thank you!",
+ "show_intro":"1",
+ "show_concl":"1"
+ }
+ * @apiParamExample {json} Post-example (voting):
+ {
+ "title":"Weekly voting",
+ "que_title":"What is your vote?"
+ }
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Survey updated"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function updateSurvey($ank_id, $data) {
+ $purifier = New Purifier();
+
+ //get survey type
+ $sqlV = sisplet_query("SELECT survey_type FROM srv_anketa WHERE id='" . $ank_id . "'");
+
+ //voting
+ if (mysqli_fetch_assoc($sqlV)['survey_type'] == 0) {
+ if(isset($data['title'])){
+ $sql = sisplet_query("UPDATE srv_anketa SET naslov='" . $purifier->purify_DB($data['title']) . "', akronim='" . $purifier->purify_DB($data['title']) . "' WHERE id=" . $ank_id . ";");
+ if (!$sql)
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ }
+
+ if (isset($data['que_title'])){
+ //get id of question of voting
+ $sqlV = sisplet_query("SELECT s.id AS id FROM srv_anketa a, srv_spremenljivka s, srv_grupa g WHERE g.ank_id='" . $ank_id . "' AND s.gru_id=g.id;");
+
+ $sql = sisplet_query("UPDATE srv_spremenljivka SET naslov='<p>" . $purifier->purify_DB($data['que_title']) . "</p>' WHERE id='" . mysqli_fetch_assoc($sqlV)['id'] . "';");
+ if (!$sql)
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ }
+
+ if(!isset($data['title']) && !isset($data['que_title'])){
+ $json_array['note'] = 'Nothing to update';
+ }
+ else {
+ $json_array['note'] = 'Survey updated';
+ Common::getInstance()->updateEditStamp();
+ }
+ }
+
+ //questionaire or form
+ else {
+ $set_query = "";
+ if (isset($data['title']))
+ $set_query .= "naslov='" . $purifier->purify_DB($data['title']) . "', akronim='" . $purifier->purify_DB($data['title']) . "',";
+ if (isset($data['introduction']))
+ $set_query .= "introduction='" . $purifier->purify_DB($data['introduction']) . "',";
+ if (isset($data['conclusion']))
+ $set_query .= "conclusion='" . $purifier->purify_DB($data['conclusion']) . "',";
+ if (isset($data['show_intro']))
+ $set_query .= "show_intro='" . $data['show_intro'] . "',";
+ if (isset($data['show_concl']))
+ $set_query .= "show_concl='" . $data['show_concl'] . "',";
+
+ if(!$set_query){
+ $json_array['note'] = 'Nothing to update';
+ }
+ else{
+ $sql = sisplet_query("UPDATE srv_anketa SET " . substr($set_query, 0, -1) . " WHERE id=" . $ank_id . ";");
+ if (!$sql)
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ else
+ $json_array['note'] = 'Survey updated';
+ }
+ }
+
+ return $json_array;
+ }
+
+ private function getQuestionIdOfOption($option_id = null) {
+ if ($option_id != null) {
+ $sqlV = sisplet_query("SELECT spr_id FROM srv_vrednost WHERE id='" . $option_id . "'");
+ $rowV = mysqli_fetch_assoc($sqlV);
+ return $rowV['spr_id'];
+ }
+ return;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/updateOrCreateOption/survey/:id updateOrCreateOption
+ * @apiName updateOrCreateOption
+ * @apiGroup Questions and variables
+ * @apiDescription Update or add a value/option to question (for picking type of question - single or multiple choice)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} option_text Title/text of option/value
+ * @apiParam (POST parameter) {String} [que_id] ID of question to add new option/value (needed only for adding)
+ * @apiParam (POST parameter) {String} [option_id] ID of option/value to update (needed only for updating)
+ * @apiParamExample {json} Post-example (adding):
+ {
+ "option_text":"First option",
+ "que_id":"3894"
+ }
+ * @apiSuccessExample {json} Success-Response (adding):
+ * {"note":"Option added","opt_id":9619}
+ *
+ * @apiParamExample {json} Post-example (updating):
+ {
+ "option_text":"First option",
+ "option_id":"9618"
+ }
+ * @apiSuccessExample {json} Success-Response (updating):
+ * {"note":"Option updated","opt_id":"9618"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function updateOrCreateOption($ank_id, $data) {
+ $purifier = New Purifier();
+
+ if (!isset($data['option_text'])){
+ $json_array['error'] = 'Option text missing';
+ return $json_array;
+ }
+
+ $naslov = $purifier->purify_DB($data['option_text']);
+
+ if (!isset($data['option_id']) || $data['option_id'] == '') {
+ if (!isset($data['que_id'])){
+ $json_array['error'] = 'Question ID missing';
+ return $json_array;
+ }
+ if($this->isQuestionSiblingOfSurvey($ank_id, $data['que_id'])){
+ $json_array = $this->addQuestionVrednost($ank_id, $data['que_id'], array('naslov' => $data['option_text']), true);
+ }
+ else {
+ $json_array['error'] = "Question does not exist or does not belong to this survey";
+ }
+ } else {
+ $spr_id = $this->getQuestionIdOfOption($data['option_id']);
+ if($this->isQuestionSiblingOfSurvey($ank_id, $spr_id)){
+ $s = sisplet_query("UPDATE srv_vrednost SET naslov='" . $naslov . "' WHERE id = '" . $data['option_id'] . "'");
+ if (!$s)
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ else {
+ Common::getInstance()->updateEditStamp();
+ Common::prestevilci($this->getQuestionIdOfOption($data['option_id']));
+
+ $json_array['note'] = 'Option updated';
+ $json_array['opt_id'] = $data['option_id'];
+ }
+ }
+ else{
+ $json_array['error'] = "Option does not exist or does not belong to this survey";
+ }
+ }
+ return $json_array;
+ }
+
+ /**
+ * @api {delete} https://www.1ka.si/api/deleteOption/survey/:id deleteOption
+ * @apiName deleteOption
+ * @apiGroup Questions and variables
+ * @apiDescription Delete option/value of question (for picking type of question - single or multiple choice)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} option_id ID of option/value to delete
+ * @apiParamExample {json} Post-example:
+ {"option_id":"424"}
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Option deleted"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function deleteOption($ank_id, $option_id) {
+ $spr_id = $this->getQuestionIdOfOption($option_id);
+
+ if($this->isQuestionSiblingOfSurvey($ank_id, $spr_id)){
+ $Vpr = new Vprasanje();
+ if ($Vpr->ajax_vrednost_delete($option_id, true)['error'] == 0) {
+ $json_array['note'] = 'Option deleted';
+ Common::getInstance()->updateEditStamp();
+ Common::prestevilci($spr_id);
+ } else
+ $json_array['error'] = 'Error has occurred';
+ }
+ else {
+ $json_array['error'] = 'Option does not exist or does not belong to this survey';
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {delete} https://www.1ka.si/api/deleteSurvey/survey/:id deleteSurvey
+ * @apiName deleteSurvey
+ * @apiGroup Surveys
+ * @apiDescription Delete survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey to delete
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Survey deleted"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function deleteSurvey($ank_id) {
+ $SM = new SurveyAdmin();
+ $SM->anketa_delete($ank_id);
+ $json_array['note'] = 'Survey deleted';
+
+ return $json_array;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/addLink/survey/:id addLink
+ * @apiName addLink
+ * @apiGroup Data and analysis
+ * @apiDescription Add new public link (hash link of data or analysis). Example of hash (public) link: https://www.1ka.si/podatki/50/5BABEC6D/ ([SITE_ROOT]/podatki/[SURVEY_ID]/[HASH_CODE]/)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} a Broad type of content of hash link (analysis, data) (if data, parameter m is not needed)
+ * @apiParam (POST parameter) {String} m Specific type of content of hash link (analysis_creport, descriptor, frequency, charts, sumarnik) (when parameter a is "data", this parameter is not needed)
+ * @apiParamExample {json} Post-example:
+ {"a":"analysis", "m":"frequency"}
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Link added"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function addLink($ank_id, $data){
+ global $global_user_id;
+
+ $hashUrl = new SurveyUrlLinks($ank_id);
+ $hashUrl->addLinkAPI($global_user_id, $data['a'], $data['m']);
+
+ $json_array['note'] = 'Link added';
+
+ return $json_array;
+ }
+
+ /**
+ * @api {delete} https://www.1ka.si/api/deleteLink/survey/:id deleteLink
+ * @apiName deleteLink
+ * @apiGroup Data and analysis
+ * @apiDescription Delete specific public link (hash link of data or analysis)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} hash Hash code of public link to delete
+ * @apiParamExample {json} Post-example:
+ {"hash":"5BABEC6D"}
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Link deleted"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function deleteLink($ank_id, $hash){
+ $sql = "SELECT anketa FROM srv_hash_url WHERE hash='$hash';";
+ $que = sisplet_query($sql, 'obj');
+
+ if($que->anketa == $ank_id){
+ $hashUrl = new HashUrl($ank_id);
+ $hashUrl->deleteLink($hash);
+
+ $json_array['note'] = 'Link deleted';
+ }
+ else{
+ $json_array['error'] = 'Hash does not exist or does not belong to this survey';
+ }
+
+
+ return $json_array;
+ }
+
+ /**
+ * @api {delete} https://www.1ka.si/api/deleteQuestion/survey/:id deleteQuestion
+ * @apiName deleteQuestion
+ * @apiGroup Questions and variables
+ * @apiDescription Delete question
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {Number} que_id ID of question to delete
+ * @apiParamExample {json} Post-example:
+ {"que_id":4240}
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Question deleted"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function deleteQuestion($ank_id, $que_id) {
+ if($this->isQuestionSiblingOfSurvey($ank_id, $que_id)){
+ $sa = new SurveyAdmin();
+ $sa->brisi_spremenljivko($que_id);
+
+ Common::getInstance()->updateEditStamp();
+ Common::prestevilci();
+ $json_array['note'] = 'Question deleted';
+ }
+ else {
+ $json_array['error'] = 'Question does not exist or not belong to this survey';
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * @api {put} https://www.1ka.si/api/copySurvey/survey/:id copySurvey
+ * @apiName copySurvey
+ * @apiGroup Surveys
+ * @apiDescription Make a copy of specific survey
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey to copy
+ *
+ * @apiSuccess {Number} id ID of new survey
+ *
+ * @apiSuccessExample {json} Success-Response:
+ * {"id":5194,"note":"Survey copied"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function copySurvey($ank_id) {
+ $lib = new Library();
+ $json_array['id'] = $lib->ajax_anketa_copy_new($ank_id);
+ $json_array['note'] = 'Survey copied';
+
+ return $json_array;
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/copyQuestion/survey/:id copyQuestion
+ * @apiName copyQuestion
+ * @apiGroup Questions and variables
+ * @apiDescription Make a copy of specific question and put it +1 in order to original question on same page
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {Number} que_id ID of question to copy
+ * @apiParamExample {json} Post-example:
+ {"que_id":12240}
+ *
+ * @apiSuccess {Number} que_id ID of new question
+ * @apiSuccessExample {json} Success-Response:
+ * {"id":12831,"note":"Question copied"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function copyQuestion($ank_id, $que_id) {
+ if($this->isQuestionSiblingOfSurvey($ank_id, $que_id)){
+ $ba = new BranchingAjax($ank_id);
+ $new_id = $ba->spremenljivka_new($que_id, 0, 0, $que_id);
+ $json_array['que_id'] = $new_id;
+ $json_array['note'] = 'Question copied';
+
+ Common::getInstance()->updateEditStamp();
+ Common::prestevilci();
+ }
+ else {
+ $json_array['error'] = 'Question does not exist or not belong to this survey';
+ }
+
+ return $json_array;
+ }
+
+ /**
+ * Check if question belongs to survey
+ * @param type $ank_id - id of survey
+ * @param type $que_id - id of question
+ * @return boolean Does question belongs this survey
+ */
+ private function isQuestionSiblingOfSurvey($ank_id, $que_id){
+ $sql = "SELECT s.gru_id, gru.ank_id FROM srv_spremenljivka as s "
+ . "LEFT JOIN (SELECT id, ank_id FROM srv_grupa) AS gru ON gru.id = gru_id "
+ . "WHERE s.id='$que_id';";
+ $res = sisplet_query($sql, 'obj');
+ return $res->ank_id == $ank_id;
+ }
+
+ /**
+ * @api {delete} https://www.1ka.si/api/deleteSurveyUnit/survey/:id deleteSurveyUnit
+ * @apiName deleteSurveyUnit
+ * @apiGroup Data and analysis
+ * @apiDescription Delete unit/response in survey data (whole response of a respondent)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {String} srv_unit_id ID of unit/response to delete
+ * @apiParamExample {json} Post-example:
+ {"srv_unit_id":"12774"}
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Survey unit deleted"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function deleteSurveyUnit($ank_id, $unit_id) {
+ $sql = "SELECT ank_id FROM srv_user WHERE id='$unit_id';";
+ $que = sisplet_query($sql, 'obj');
+ if($que->ank_id == $ank_id){
+ $sql = "DELETE FROM srv_user WHERE id='$unit_id' AND ank_id='$ank_id';";
+ if(sisplet_query($sql))
+ $json_array['note'] = 'Survey unit deleted';
+ else
+ $json_array['error'] = 'Error has occurred';
+ }
+ else{
+ $json_array['error'] = 'Survey unit does not exist or does not belong to this survey';
+ }
+ return $json_array;
+ }
+
+ // Doda vrednost v vprasanje
+ // Rather use updateOrCreateOption!!!!!!!!!!!!!!!!!
+ private function addQuestionVrednost($ank_id, $spr_id, $data, $other_to_last = false) {
+ global $lang;
+ global $site_url;
+ global $global_user_id;
+ $purifier = New Purifier();
+
+ $json_array = array();
+
+ // Preverimo ce imamo osnovne podatke za dodajanje vrednosti
+ if (!isset($data['naslov'])) {
+ $json_array['error'] = 'Option title missing';
+ return $json_array;
+ }
+
+ // Preverimo ce obstaja vprasanje
+ $sql = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE s.id='" . $spr_id . "' AND s.gru_id=g.id AND g.ank_id='" . $ank_id . "'");
+ if (mysqli_num_rows($sql) > 0) {
+
+ // Dobimo ustrezen vrstni red
+ $sqlV = sisplet_query("SELECT v.vrstni_red AS vrstni_red, v.other AS other, v.id AS id FROM srv_vrednost v, srv_spremenljivka s, srv_grupa g WHERE v.spr_id='" . $spr_id . "' AND s.gru_id=g.id AND g.ank_id='" . $ank_id . "' ORDER BY v.vrstni_red DESC LIMIT 1");
+ $rowV = mysqli_fetch_assoc($sqlV);
+
+ //ce je other zadnji, premakni other za eno naprej po vrsnm redu, in novo vrednost na mesto other
+ if ($other_to_last && $rowV['other'] == 1) {
+ $vrstni_red = (int) $rowV['vrstni_red'];
+
+ //premakni other
+ $s = sisplet_query("UPDATE srv_vrednost SET vrstni_red='" . ($vrstni_red + 1) . "' WHERE id = '" . $rowV['id'] . "'");
+ if (!$s) {
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ return $json_array;
+ }
+ } else
+ $vrstni_red = (int) $rowV['vrstni_red'] + 1;
+
+ $title = $purifier->purify_DB($data['naslov']);
+
+ // Vstavimo vrednost v vprasanje
+ $sql = sisplet_query("INSERT INTO srv_vrednost (id, spr_id, naslov, naslov2, vrstni_red) VALUES ('', '$spr_id', '$title', '$title', '$vrstni_red')");
+ $opt_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ // Prestevilcimo da se nastavi variabla
+ //Common::getInstance()->Init($ank_id);
+ Common::prestevilci($spr_id);
+ Common::getInstance()->updateEditStamp();
+
+ $json_array['note'] = 'Option added';
+ $json_array['opt_id'] = $opt_id;
+ return $json_array;
+ }
+ else {
+ $json_array['error'] = 'Question does not exist';
+ return $json_array;
+ }
+ }
+
+ /**
+ * @api {post} https://www.1ka.si/api/SurveyActivation/survey/:id SurveyActivation
+ * @apiName SurveyActivation
+ * @apiGroup Surveys
+ * @apiDescription Activate (for 3 months from now) or deactivate survey (start it or stop it)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {Number} [active] If this parameter is not set, survey will be deactivated (0-deactivate survey, 1-activate survey)
+ * @apiParamExample {json} Post-example:
+ {"active":1}
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"Survey activity changed"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function SurveyActivation($ank_id, $data) {
+ global $global_user_id;
+
+ $active = (isset($data['active'])) ? $data['active'] : 0;
+
+ $starts = "NOW()";
+ $expire = "NOW() + INTERVAL 3 MONTH";
+ $updateActiveTime = ", starts=$starts, expire=$expire";
+
+ if ($active == 1) {
+ $activity_insert_string = "INSERT INTO srv_activity (sid, starts, expire, uid) VALUES('" . $ank_id . "', $starts, $expire, '" . $global_user_id . "' )";
+ $sql_insert = sisplet_query($activity_insert_string);
+ //ignoriraj erorror, ce ze obstaja identicna vrstica
+ /* if (!$sql_insert)
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']); */
+ }
+
+ $sql = sisplet_query("UPDATE srv_anketa SET active=" . $active
+ . ($active == 1 ? $updateActiveTime : '') . " WHERE id=" . $ank_id . ";");
+
+ if (!$sql) {
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ } else {
+ if (!isset($json_array['error']))
+ $json_array['note'] = 'Survey activity changed';
+ }
+
+ return $json_array;
+ }
+
+ // Blokiraj ponoven IP (trenutno samo za 24ur)
+ /**
+ * @api {post} https://www.1ka.si/api/BlockRepeatedIP/survey/:id BlockRepeatedIP
+ * @apiName BlockRepeatedIP
+ * @apiGroup Surveys
+ * @apiDescription Block repeated IP (do not allow respondent to respond to survey again for the next x minutes)
+ *
+ * @apiHeader {String} identifier Identifier to access API (https://www.1ka.si/d/en/about/1ka-api/api-key)
+ * @apiHeader {String} token SHA256 hash token calculated with API key (https://www.1ka.si/d/en/about/1ka-api/example2/get-call-example-php)
+ * @apiHeaderExample {json} Request-Example:
+ { "identifier": "abcdefgh01234567",
+ "token": "bd26lo2863dzcyidb8d7rmwo7xydhpoa77kbdamwtlj5ej70akgffb0b7aj30zqh" }
+ *
+ * @apiParam (GET parameter) {Number} id Id of survey
+ *
+ * @apiParam (POST parameter) {Number} [blockIP] In minutes - if this parameter is not set, blocking IP will be turned off (possible options are 10, 20, 30, 60, 720, 1440, 0-ip blocking off)
+ * @apiParamExample {json} Post-example:
+ {"blockIP":1440}
+ * @apiSuccessExample {json} Success-Response:
+ * {"note":"IP blocking changed"}
+ *
+ * @apiVersion 1.0.0
+ */
+ private function BlockRepeatedIP($ank_id, $data) {
+
+ $blockIP = (isset($data['blockIP'])) ? $data['blockIP'] : 0;
+
+ $sql = sisplet_query("UPDATE srv_anketa SET block_ip=" . $blockIP
+ . " WHERE id=" . $ank_id . ";");
+ if (!$sql) {
+ $json_array['error'] = mysqli_error($GLOBALS['connect_db']);
+ } else {
+ $json_array['note'] = 'IP blocking changed';
+ }
+
+ return $json_array;
+ }
+
+ // Poslje email vabilo novemu respondentu
+ private function sendEmailInvitation($ank_id, $data) {
+ global $lang;
+ global $global_user_id;
+ global $admin_type;
+
+ $json_array = array();
+
+ // Preverimo ce sploh imamo vklopljena vabila
+ $isEmail = (int) SurveyInfo::getInstance()->checkSurveyModule('email');
+ $d = new Dostop();
+ if (!((int) $isEmail > 0)) {
+
+ $json_array['error'] = 'Invitations are not enabled for this survey!';
+ return $json_array;
+
+ exit();
+ }
+
+ $email = (isset($data['email'])) ? $data['email'] : '';
+ $firstname = (isset($data['firstname'])) ? $data['firstname'] : '';
+ $lastname = (isset($data['lastname'])) ? $data['lastname'] : '';
+
+ // Opcijski dodatni parametri, ki jih lahko dodamo url-ju na anketo
+ $param_string = (isset($data['param_string'])) ? $data['param_string'] : '';
+
+ // Opcijsko nastavimo tudi cas poteka vabila
+ if(isset($data['expired']) && is_numeric($data['expired'])){
+ $expired = date('Y-m-d H:i:s', strtotime("+".$data['expired']." days"));
+ }
+ else{
+ $expired = '0000-00-00 00:00:00';
+ }
+
+ // Zaenkrat so vsi 3 parametri obvezni
+ if ($email != '' && $firstname != '' && $lastname != '') {
+
+ // Preverimo ce obstajajo vse 3 sistemske spremenljivke
+ $sqlVariable = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE (s.variable='email' OR s.variable='ime' OR s.variable='priimek') AND s.gru_id=g.id AND g.ank_id='" . $ank_id . "'");
+ if (mysqli_num_rows($sqlVariable) != 3) {
+
+ $json_array['error'] = 'Missing system variables (variables email, ime and priimek must exist in survey)!';
+ } else {
+ $SI = new SurveyInvitationsNew($ank_id);
+
+ // polovimo sistemske spremenljivke z vrednostmi
+ $qrySistemske = sisplet_query("SELECT s.id, s.naslov, s.variable FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id='" . $ank_id . "' AND variable IN('email', 'ime', 'priimek') ORDER BY g.vrstni_red, s.vrstni_red");
+ $sys_vars = array();
+ $sys_vars_ids = array();
+ while ($row = mysqli_fetch_assoc($qrySistemske)) {
+ $sys_vars[$row['id']] = array('id' => $row['id'], 'variable' => $row['variable'], 'naslov' => $row['naslov']);
+ $sys_vars_ids[] = $row['id'];
+ }
+ $sqlVrednost = sisplet_query("SELECT spr_id, id AS vre_id, vrstni_red, variable FROM srv_vrednost WHERE spr_id IN(" . implode(',', $sys_vars_ids) . ") ORDER BY vrstni_red ASC ");
+ while ($row = mysqli_fetch_assoc($sqlVrednost)) {
+ $sys_vars[$row['spr_id']]['vre_id'] = $row['vre_id'];
+ }
+
+ $list_id = '';
+
+ // Generiramo kodo za respondenta
+ // katera gesla (code) že imamo v bazi za to anketo
+ $password_in_db = array();
+ $sql_query = sisplet_query("SELECT password FROM srv_invitations_recipients WHERE ank_id='" . $ank_id . "' AND deleted = '0'");
+ while ($sql_row = mysqli_fetch_assoc($sql_query)) {
+ $password_in_db[$sql_row['password']] = $sql_row['password'];
+ }
+ // Izberemo random hash, ki se ni v bazi
+ do {
+ list($code, $cookie) = $SI->generateCode();
+ } while (in_array($code, $password_in_db));
+
+
+ // VSTAVIMO RESPONDENTA V SEZNAM
+ $sql_insert_start = sisplet_query("INSERT INTO srv_invitations_recipients
+ (ank_id, email, firstname, lastname, password, cookie, sent, responded, unsubscribed, deleted, date_inserted, date_expired, inserted_uid, list_id)
+ VALUES
+ ('" . $ank_id . "', '" . $email . "', '" . $firstname . "', '" . $lastname . "', '" . $code . "', '" . $cookie . "', '0', '0', '0', '0', NOW(), ".$expired.", '" . $global_user_id . "', '" . $list_id . "')");
+ $rec_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ // polovimo sporočilo in prejemnike
+ $sql_query_m = sisplet_query("SELECT id, subject_text, body_text, reply_to, isdefault, comment, naslov, url FROM srv_invitations_messages WHERE ank_id = '" . $ank_id . "' AND isdefault='1'");
+ if (mysqli_num_rows($sql_query_m) > 0) {
+ $sql_row_m = mysqli_fetch_assoc($sql_query_m);
+ } else {
+ // Nimamo še vsebine sporočila
+ $json_array['error'] = 'Email server settings and message not set!';
+ return $json_array;
+
+ exit();
+ }
+
+ // Kreiramo mail
+ $subject_text = $sql_row_m['subject_text'];
+ $body_text = $sql_row_m['body_text'];
+
+ // Naslov za odgovor je avtor ankete
+ if ($SI->validEmail($sql_row_m['reply_to'])) {
+ $reply_to = $sql_row_m['reply_to'];
+ } else {
+ $reply_to = Common::getInstance()->getReplyToEmail();
+ }
+
+ # če mamo SEO
+ $nice_url = SurveyInfo::getSurveyLink();
+
+ $date_sent = date("Y-m-d H:i:s");
+ $msg_url = $sql_row_m['url'];
+
+ # odvisno ali imamo url za jezik.
+ if ($msg_url != null && trim($msg_url) != '') {
+ $url = $msg_url . '?code=' . $code;
+ } else {
+ $url = $nice_url . '&code=' . $code;
+ }
+
+ $url .= '&ai=' . (int) $arch_id;
+
+ // URL-ju dodamo se opcijske dodatne parametre ce so nastavljeni
+ $url .= '&'.$param_string;
+
+ #odjava
+ $unsubscribe = $site_url . 'admin/survey/unsubscribe.php?anketa=' . $ank_id . '&code=' . $code;
+
+
+ // VSTAVIMO POSILJANJE V ARHIV
+ $arvhive_naslov = 'mailing_' . date("d.m.Y") . ', ' . date("H:i:s");
+ $sqlQuery = sisplet_query("INSERT INTO srv_invitations_archive
+ (id, ank_id, date_send, subject_text, body_text, uid, comment, naslov, rec_in_db)
+ VALUES
+ (NULL, '$ank_id', '$date_sent', '$subject_text', '$body_text', '$global_user_id', '', '$arvhive_naslov', '1')");
+ $arch_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ $user_body_text = str_replace(
+ array(
+ '#URL#',
+ '#URLLINK#',
+ '#UNSUBSCRIBE#',
+ '#FIRSTNAME#',
+ '#LASTNAME#',
+ '#EMAIL#',
+ '#CODE#',
+ '#PASSWORD#'
+ ), array(
+ '<a href="' . $url . '">' . $url . '</a>',
+ $url,
+ '<a href="' . $unsubscribe . '">' . $lang['user_bye_hl'] . '</a>',
+ $firstname,
+ $lastname,
+ $email,
+ $code,
+ $code
+ ), $body_text
+ );
+
+
+ // POSLJEMO MAIL
+ $resultX = null;
+ try {
+ $MA = new MailAdapter($ank_id, $type='invitation');
+ $MA->addRecipients($email);
+ $resultX = $MA->sendMail($user_body_text, $subject_text);
+ } catch (Exception $e) {
+ // todo fajn bi bilo zalogirat kaj se dogaja
+ $__error = $e->getMessage();
+ $__errStack = $e->getTraceAsString();
+ }
+
+
+ // Vabilo OK poslano
+ if ($resultX) {
+ // Updatamo prejemnika - status in sent
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET sent='1', date_sent='" . $date_sent . "', last_status='1' WHERE id='" . $rec_id . "'");
+
+ // Updatamo se arhiv
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_archive SET cnt_succsess='1', cnt_error='0' WHERE id='" . $arch_id . "'");
+
+ // Updatamo arhiv prejemnikov
+ $sqlQuery = sisplet_query("INSERT INTO srv_invitations_archive_recipients (arch_id,rec_id,success) VALUES ('" . $arch_id . "','" . $rec_id . "','1')");
+
+ // Updatamo tracking
+ $sqlQueryTracking = sisplet_query("INSERT INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES ('" . $arch_id . "',NOW(),'" . $rec_id . "','1')");
+
+
+ // Dodamo userje v bazo
+ $sqlUserInsert = sisplet_query("INSERT INTO srv_user
+ (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
+ VALUES
+ ('" . $ank_id . "', '" . $email . "', '" . $cookie . "', '" . $code . "', '1', NOW(), '" . $rec_id . "') ON DUPLICATE KEY UPDATE cookie = '" . $cookie . "', pass='" . $code . "'");
+ $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ($usr_id) {
+ // vstavimo v srv_userbase
+ sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('" . $usr_id . "','0',NOW(),'" . $global_user_id . "')");
+
+ // vstavimo v srv_userstatus
+ sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('" . $usr_id . "', '0', '0', NOW())");
+
+ // vstavimo v srv_data_text (email, ime, priimek)
+ SurveyInfo::getInstance()->SurveyInit($ank_id);
+ $db_table = (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) ? '_active' : '';
+ foreach ($sys_vars AS $sid => $spremenljivka) {
+ if ($spremenljivka['variable'] == 'email')
+ sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $email . "', '" . $usr_id . "')");
+ elseif ($spremenljivka['variable'] == 'ime')
+ sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $firstname . "', '" . $usr_id . "')");
+ elseif ($spremenljivka['variable'] == 'priimek')
+ sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $lastname . "', '" . $usr_id . "')");
+ }
+ }
+ else {
+ // lahko da user že obstaja in je šlo za duplicated keys
+ }
+
+ $json_array['note'] = 'Email succesfully sent.';
+ }
+ // Vabilo ni bilo poslano
+ else {
+ // Updatamo prejemnika - status in sent
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status='2' WHERE id='" . $rec_id . "'");
+
+ // Updatamo se arhiv
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_archive SET cnt_succsess='0', cnt_error='1' WHERE id='" . $arch_id . "'");
+
+ // Updatamo arhiv prejemnikov
+ $sqlQuery = sisplet_query("INSERT INTO srv_invitations_archive_recipients (arch_id,rec_id,success) VALUES ('" . $arch_id . "','" . $rec_id . "','0')");
+
+ // Updatamo tracking
+ $sqlQueryTracking = sisplet_query("INSERT INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES ('" . $arch_id . "',NOW(),'" . $rec_id . "','2')");
+
+
+ // Dodamo userje v bazo
+ $sqlUserInsert = sisplet_query("INSERT INTO srv_user
+ (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
+ VALUES
+ ('" . $ank_id . "', '" . $email . "', '" . $cookie . "', '" . $code . "', '2', NOW(), '" . $rec_id . "') ON DUPLICATE KEY UPDATE cookie = '" . $cookie . "', pass='" . $code . "'");
+ $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ($usr_id) {
+ // vstavimo v srv_userbase
+ sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('" . $usr_id . "','0',NOW(),'" . $global_user_id . "')");
+
+ // vstavimo v srv_userstatus
+ sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('" . $usr_id . "', '0', '0', NOW())");
+
+ // vstavimo v srv_data_text (email, ime, priimek)
+ SurveyInfo::getInstance()->SurveyInit($ank_id);
+ $db_table = (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) ? '_active' : '';
+ foreach ($sys_vars AS $sid => $spremenljivka) {
+ if ($spremenljivka['variable'] == 'email') {
+ $data_insert = sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $email . "', '" . $usr_id . "')");
+ } elseif ($spremenljivka['variable'] == 'ime') {
+ $data_insert = sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $firstname . "', '" . $usr_id . "')");
+ } elseif ($spremenljivka['variable'] == 'priimek') {
+ $data_insert = sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $lastname . "', '" . $usr_id . "')");
+ }
+ }
+ } else {
+ // lahko da user že obstaja in je šlo za duplicated keys
+ }
+
+ $json_array['error'] = 'Email sending error!';
+ }
+ }
+ }
+ // Manjkajo parametri (email, firstname, lastname)
+ else {
+ $json_array['error'] = 'Missing parameters (email, firstname and lastname are mandatory)!';
+ }
+
+ return $json_array;
+ }
+
+ // Doda novo skupino
+ private function addGroup($ank_id, $data) {
+ global $lang;
+ global $global_user_id;
+ global $admin_type;
+ global $site_path;
+
+ $json_array = array();
+
+ // Naslov skupine je obvezen
+ $group_naslov = (isset($data['title'])) ? $data['title'] : '';
+ if ($group_naslov != '') {
+
+ $ss = new SurveySkupine($ank_id);
+ $spr_id = $ss->hasSkupine();
+
+ // Na zacetku moramo ustvarit najprej vprasanje
+ if ($spr_id == 0) {
+
+ $sqlG = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id='$ank_id' AND vrstni_red='1'");
+ $rowG = mysqli_fetch_array($sqlG);
+ $gru_id = $rowG['id'];
+
+ $b = new Branching($ank_id);
+ $spr_id = $b->nova_spremenljivka($grupa = $gru_id, $grupa_vrstni_red = 1, $vrstni_red = 0);
+
+ $sql = sisplet_query("UPDATE srv_spremenljivka SET naslov='" . $lang['srv_skupina'] . "', variable='" . strtolower($lang['srv_skupina']) . "', variable_custom='1', skupine='1', sistem='1', visible='0', size='0' WHERE id='$spr_id'");
+
+ Vprasanje::change_tip($spr_id, 1);
+ }
+
+ // Ustvarimo vrednost v vprasanju
+ $v = new Vprasanje($ank_id);
+ $v->spremenljivka = $spr_id;
+ $vre_id = $v->vrednost_new($group_naslov);
+
+ // Preverimo ce imamo nice URL -> dodamo dodatnega za skupine
+ $sql = sisplet_query("SELECT * FROM srv_nice_links WHERE ank_id='$ank_id'");
+ if (mysqli_num_rows($sql) > 0) {
+
+ Common::updateEditStamp();
+
+ $row = mysqli_fetch_array($sql);
+
+ $add = false;
+
+ $anketa = $ank_id;
+ $nice_url = $row['link'];
+
+ $sql2 = sisplet_query("SELECT variable, vrstni_red FROM srv_vrednost WHERE id='$vre_id'");
+ $row2 = mysqli_fetch_array($sql2);
+ $nice_url .= '_' . $row2['vrstni_red'];
+
+ $f = @fopen($site_path . '.htaccess', 'rb');
+ if ($f !== false) {
+ $add = true;
+ while (!feof($f)) {
+ $r = fgets($f);
+ if (strpos($r, "^" . $nice_url . '\b') !== false) { // preverimo, da ni tak redirect ze dodan
+ $add = false;
+ }
+ }
+ fclose($f);
+ }
+
+ if (strlen($nice_url) < 3)
+ $add = false;
+
+ if (SurveyInfo::getInstance()->checkSurveyModule('uporabnost'))
+ $link = 'main/survey/uporabnost.php?anketa=' . $anketa . '&skupina=' . $vre_id;
+ else
+ $link = 'main/survey/index.php?anketa=' . $anketa . '&skupina=' . $vre_id;
+
+ if ($add) {
+ $f = @fopen($site_path . '.htaccess', 'a');
+ if ($f !== false) {
+ fwrite($f, "\nRewriteRule ^" . $nice_url . '\b(.*) ' . $link . "&foo=\$1&%{QUERY_STRING}");
+ fclose($f);
+
+ $sqlI = sisplet_query("INSERT INTO srv_nice_links_skupine (id,ank_id,nice_link_id,vre_id,link) VALUES ('','$ank_id','$row[id]','$vre_id','$nice_url')");
+ }
+ }
+ }
+
+ $sqlVrednost = sisplet_query("SELECT variable FROM srv_vrednost WHERE id='" . $vre_id . "'");
+ $rowVrednost = mysqli_fetch_array($sqlVrednost);
+
+ // Vrnemo grupo
+ $json_array['group'] = $rowVrednost['variable'];
+
+ // Vrnemo tudi url do ankete za ustvarjeno skupino
+ $nice_url = SurveyInfo::getSurveyLink();
+ $json_array['url'] = $nice_url . '?skupina=' . $rowVrednost['variable'];
+
+ $json_array['note'] = 'Group succesfully added.';
+ } else {
+ $json_array['error'] = 'Missing parameter (group title is mandatory)!';
+ }
+
+ return $json_array;
+ }
+
+
+ // Doda novo skupino za modul Evoli - teammeter
+ private function addGroupTeamMeter($ank_id, $data) {
+ global $lang;
+ global $global_user_id;
+ global $admin_type;
+ global $site_path;
+
+ $json_array = array();
+
+ // Obvezni parametri
+ $group_naslov = (isset($data['title'])) ? $data['title'] : '';
+ $email = (isset($data['email'])) ? $data['email'] : '';
+ $language = (isset($data['language'])) ? $data['language'] : '';
+ $kvota_max = (isset($data['quota'])) ? $data['quota'] : '';
+
+ if ($group_naslov != '' && $email != '' && $language != '' && $kvota_max != '') {
+
+ $ss = new SurveySkupine($ank_id);
+ $spr_id = $ss->hasSkupine();
+
+ // Na zacetku moramo ustvarit najprej vprasanje
+ if ($spr_id == 0) {
+
+ $sqlG = sisplet_query("SELECT id FROM srv_grupa WHERE ank_id='$ank_id' AND vrstni_red='1'");
+ $rowG = mysqli_fetch_array($sqlG);
+ $gru_id = $rowG['id'];
+
+ $b = new Branching($ank_id);
+ $spr_id = $b->nova_spremenljivka($grupa = $gru_id, $grupa_vrstni_red = 1, $vrstni_red = 0);
+
+ $sql = sisplet_query("UPDATE srv_spremenljivka SET naslov='" . $lang['srv_skupina'] . "', variable='skupina', variable_custom='1', skupine='1', sistem='1', visible='0', size='0' WHERE id='$spr_id'");
+
+ Vprasanje::change_tip($spr_id, 1);
+ }
+
+ // Ustvarimo vrednost v vprasanju
+ $v = new Vprasanje($ank_id);
+ $v->spremenljivka = $spr_id;
+ $vre_id = $v->vrednost_new($group_naslov);
+
+ // Preverimo ce imamo nice URL -> dodamo dodatnega za skupine
+ $sql = sisplet_query("SELECT * FROM srv_nice_links WHERE ank_id='$ank_id'");
+ if (mysqli_num_rows($sql) > 0) {
+
+ Common::updateEditStamp();
+
+ $row = mysqli_fetch_array($sql);
+
+ $add = false;
+
+ $anketa = $ank_id;
+ $nice_url = $row['link'];
+
+ $sql2 = sisplet_query("SELECT variable, vrstni_red FROM srv_vrednost WHERE id='$vre_id'");
+ $row2 = mysqli_fetch_array($sql2);
+ $nice_url .= '_' . $row2['vrstni_red'];
+
+ $f = @fopen($site_path . '.htaccess', 'rb');
+ if ($f !== false) {
+ $add = true;
+ while (!feof($f)) {
+ $r = fgets($f);
+ if (strpos($r, "^" . $nice_url . '\b') !== false) { // preverimo, da ni tak redirect ze dodan
+ $add = false;
+ }
+ }
+ fclose($f);
+ }
+
+ if (strlen($nice_url) < 3)
+ $add = false;
+
+ if (SurveyInfo::getInstance()->checkSurveyModule('uporabnost'))
+ $link = 'main/survey/uporabnost.php?anketa=' . $anketa . '&skupina=' . $vre_id;
+ else
+ $link = 'main/survey/index.php?anketa=' . $anketa . '&skupina=' . $vre_id;
+
+ if ($add) {
+ $f = @fopen($site_path . '.htaccess', 'a');
+ if ($f !== false) {
+ fwrite($f, "\nRewriteRule ^" . $nice_url . '\b(.*) ' . $link . "&foo=\$1&%{QUERY_STRING}");
+ fclose($f);
+
+ $sqlI = sisplet_query("INSERT INTO srv_nice_links_skupine (id,ank_id,nice_link_id,vre_id,link) VALUES ('','$ank_id','$row[id]','$vre_id','$nice_url')");
+ }
+ }
+ }
+
+ if ($language == 'eng')
+ $lang_id = 2;
+ elseif ($language == 'dan')
+ $lang_id = 29;
+ else
+ $lang_id = 1;
+
+ $nice_url = SurveyInfo::getSurveyLink();
+ $group_url = $nice_url . '?skupina=' . $vre_id . '&language=' . $lang_id;
+
+ // Dodamo se vrednosti v posebno tabelo za evoli team meter
+ $sqlI = sisplet_query("INSERT INTO srv_evoli_teammeter
+ (ank_id, skupina_id, email, lang_id, url, kvota_max)
+ VALUES ('" . $ank_id . "', '" . $vre_id . "', '" . $email . "', '" . $lang_id . "', '" . $group_url . "', '" . $kvota_max . "')");
+
+
+ // Vrnemo grupo
+ $json_array['group'] = $vre_id;
+
+ // Vrnemo tudi url do ankete za ustvarjeno skupino
+ $json_array['url'] = $group_url;
+
+ $json_array['note'] = 'Group succesfully added.';
+ }
+ else {
+ $json_array['error'] = 'Missing parameters (group title, email, language id and quota are mandatory)!';
+ }
+
+ return $json_array;
+ }
+
+ // Poslje email vabilo novemu respondentu za modul Evoli - url se uporabi za specificno grupo
+ private function sendEmailInvitationTeamMeter($ank_id, $data) {
+ global $lang;
+ global $global_user_id;
+ global $admin_type;
+
+ $json_array = array();
+
+ // Preverimo ce sploh imamo vklopljena vabila
+ $isEmail = (int) SurveyInfo::getInstance()->checkSurveyModule('email');
+ $d = new Dostop();
+ if (!((int) $isEmail > 0)) {
+
+ $json_array['error'] = 'Invitations are not enabled for this survey!';
+ return $json_array;
+
+ exit();
+ }
+
+ $email = (isset($data['email'])) ? $data['email'] : '';
+ $firstname = (isset($data['firstname'])) ? $data['firstname'] : '';
+ $lastname = (isset($data['lastname'])) ? $data['lastname'] : '';
+ $group = (isset($data['group'])) ? $data['group'] : '';
+
+ // Zaenkrat so vsi 4 parametri obvezni
+ if ($email != '' && $firstname != '' && $lastname != '' && $group != '') {
+
+ // Preverimo ce obstajajo vse 3 sistemske spremenljivke
+ $sqlVariable = sisplet_query("SELECT s.id FROM srv_spremenljivka s, srv_grupa g WHERE (s.variable='email' OR s.variable='ime' OR s.variable='priimek') AND s.gru_id=g.id AND g.ank_id='" . $ank_id . "'");
+ if (mysqli_num_rows($sqlVariable) != 3) {
+
+ $json_array['error'] = 'Missing system variables (variables email, ime and priimek must exist in survey)!';
+ } else {
+
+ $skupina_id = 0;
+ $lang_id = 0;
+
+ // Preverimo ce obstaja skupina
+ $sqlTM = sisplet_query("SELECT tm.*, v.naslov
+ FROM srv_evoli_teammeter tm, srv_vrednost v, srv_spremenljivka s, srv_grupa g
+ WHERE s.gru_id=g.id AND v.spr_id=s.id AND v.id=tm.skupina_id
+ AND g.ank_id='" . $ank_id . "' AND s.skupine='1' AND v.naslov='" . $group . "'");
+ if (mysqli_num_rows($sqlTM) == 1) {
+ $rowTM = mysqli_fetch_array($sqlTM);
+
+ $skupina_id = $rowTM['skupina_id'];
+ $lang_id = $rowTM['lang_id'];
+ }
+
+ if ($skupina_id == 0 || $lang_id == 0) {
+
+ $json_array['error'] = 'Group "' . $group . '" does not exist!';
+ return $json_array;
+
+ exit();
+ } else {
+ $SI = new SurveyInvitationsNew($ank_id);
+
+ // polovimo sistemske spremenljivke z vrednostmi
+ $qrySistemske = sisplet_query("SELECT s.id, s.naslov, s.variable FROM srv_spremenljivka s, srv_grupa g WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id='" . $ank_id . "' AND variable IN('email', 'ime', 'priimek') ORDER BY g.vrstni_red, s.vrstni_red");
+ $sys_vars = array();
+ $sys_vars_ids = array();
+ while ($row = mysqli_fetch_assoc($qrySistemske)) {
+ $sys_vars[$row['id']] = array('id' => $row['id'], 'variable' => $row['variable'], 'naslov' => $row['naslov']);
+ $sys_vars_ids[] = $row['id'];
+ }
+ $sqlVrednost = sisplet_query("SELECT spr_id, id AS vre_id, vrstni_red, variable FROM srv_vrednost WHERE spr_id IN(" . implode(',', $sys_vars_ids) . ") ORDER BY vrstni_red ASC ");
+ while ($row = mysqli_fetch_assoc($sqlVrednost)) {
+ $sys_vars[$row['spr_id']]['vre_id'] = $row['vre_id'];
+ }
+
+ $list_id = '';
+
+ // Generiramo kodo za respondenta
+ // katera gesla (code) že imamo v bazi za to anketo
+ $password_in_db = array();
+ $sql_query = sisplet_query("SELECT password FROM srv_invitations_recipients WHERE ank_id='" . $ank_id . "' AND deleted = '0'");
+ while ($sql_row = mysqli_fetch_assoc($sql_query)) {
+ $password_in_db[$sql_row['password']] = $sql_row['password'];
+ }
+ // Izberemo random hash, ki se ni v bazi
+ do {
+ list($code, $cookie) = $SI->generateCode();
+ } while (in_array($code, $password_in_db));
+
+
+ // VSTAVIMO RESPONDENTA V SEZNAM
+ $sql_insert_start = sisplet_query("INSERT INTO srv_invitations_recipients
+ (ank_id, email, firstname, lastname, password, cookie, sent, responded, unsubscribed, deleted, date_inserted, inserted_uid, list_id)
+ VALUES
+ ('" . $ank_id . "', '" . $email . "', '" . $firstname . "', '" . $lastname . "', '" . $code . "', '" . $cookie . "', '0', '0', '0', '0', NOW(), '" . $global_user_id . "', '" . $list_id . "')");
+ $rec_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ // polovimo sporočilo in prejemnike
+ $sql_query_m = sisplet_query("SELECT id, subject_text, body_text, reply_to, isdefault, comment, naslov, url FROM srv_invitations_messages WHERE ank_id = '" . $ank_id . "' AND isdefault='1'");
+ if (mysqli_num_rows($sql_query_m) > 0) {
+ $sql_row_m = mysqli_fetch_assoc($sql_query_m);
+ } else {
+ // Nimamo še vsebine sporočila
+ $json_array['error'] = 'Email server settings and message not set!';
+ return $json_array;
+
+ exit();
+ }
+
+ // Kreiramo mail
+ $subject_text = $sql_row_m['subject_text'];
+ $body_text = $sql_row_m['body_text'];
+
+ // Naslov za odgovor je avtor ankete
+ if ($SI->validEmail($sql_row_m['reply_to'])) {
+ $reply_to = $sql_row_m['reply_to'];
+ } else {
+ $reply_to = Common::getInstance()->getReplyToEmail();
+ }
+
+ # če mamo SEO
+ $nice_url = SurveyInfo::getSurveyLink();
+
+ $date_sent = date("Y-m-d H:i:s");
+ $msg_url = $sql_row_m['url'];
+
+ # odvisno ali imamo url za jezik.
+ if ($msg_url != null && trim($msg_url) != '') {
+ $url = $msg_url . '?code=' . $code;
+ } else {
+ $url = $nice_url . '&code=' . $code;
+ }
+
+ $url .= '&ai=' . (int) $arch_id;
+
+ // Url-ju dodamo se grupo in jezik
+ $url .= '&skupina=' . $skupina_id . '&language=' . $lang_id;
+
+ #odjava
+ $unsubscribe = $site_url . 'admin/survey/unsubscribe.php?anketa=' . $ank_id . '&code=' . $code;
+
+
+ // VSTAVIMO POSILJANJE V ARHIV
+ $arvhive_naslov = 'mailing_' . date("d.m.Y") . ', ' . date("H:i:s");
+ $sqlQuery = sisplet_query("INSERT INTO srv_invitations_archive
+ (id, ank_id, date_send, subject_text, body_text, uid, comment, naslov, rec_in_db)
+ VALUES
+ (NULL, '$ank_id', '$date_sent', '$subject_text', '$body_text', '$global_user_id', '', '$arvhive_naslov', '1')");
+ $arch_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+
+ $user_body_text = str_replace(
+ array(
+ '#URL#',
+ '#URLLINK#',
+ '#UNSUBSCRIBE#',
+ '#FIRSTNAME#',
+ '#LASTNAME#',
+ '#EMAIL#',
+ '#CODE#',
+ '#PASSWORD#'
+ ), array(
+ '<a href="' . $url . '">' . $url . '</a>',
+ $url,
+ '<a href="' . $unsubscribe . '">' . $lang['user_bye_hl'] . '</a>',
+ $firstname,
+ $lastname,
+ $email,
+ $code,
+ $code
+ ), $body_text
+ );
+
+
+ // POSLJEMO MAIL
+ $resultX = null;
+ try {
+ $MA = new MailAdapter($ank_id, $type='invitation');
+ $MA->addRecipients($email);
+ $resultX = $MA->sendMail($user_body_text, $subject_text);
+ } catch (Exception $e) {
+ // todo fajn bi bilo zalogirat kaj se dogaja
+ $__error = $e->getMessage();
+ $__errStack = $e->getTraceAsString();
+ }
+
+
+ // Vabilo OK poslano
+ if ($resultX) {
+ // Updatamo prejemnika - status in sent
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET sent='1', date_sent='" . $date_sent . "', last_status='1' WHERE id='" . $rec_id . "'");
+
+ // Updatamo se arhiv
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_archive SET cnt_succsess='1', cnt_error='0' WHERE id='" . $arch_id . "'");
+
+ // Updatamo arhiv prejemnikov
+ $sqlQuery = sisplet_query("INSERT INTO srv_invitations_archive_recipients (arch_id,rec_id,success) VALUES ('" . $arch_id . "','" . $rec_id . "','1')");
+
+ // Updatamo tracking
+ $sqlQueryTracking = sisplet_query("INSERT INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES ('" . $arch_id . "',NOW(),'" . $rec_id . "','1')");
+
+
+ // Dodamo userje v bazo
+ $sqlUserInsert = sisplet_query("INSERT INTO srv_user
+ (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
+ VALUES
+ ('" . $ank_id . "', '" . $email . "', '" . $cookie . "', '" . $code . "', '1', NOW(), '" . $rec_id . "') ON DUPLICATE KEY UPDATE cookie = '" . $cookie . "', pass='" . $code . "'");
+ $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ($usr_id) {
+ // vstavimo v srv_userbase
+ sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('" . $usr_id . "','0',NOW(),'" . $global_user_id . "')");
+
+ // vstavimo v srv_userstatus
+ sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('" . $usr_id . "', '0', '0', NOW())");
+
+ // vstavimo v srv_data_text (email, ime, priimek)
+ SurveyInfo::getInstance()->SurveyInit($ank_id);
+ $db_table = (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) ? '_active' : '';
+ foreach ($sys_vars AS $sid => $spremenljivka) {
+ if ($spremenljivka['variable'] == 'email')
+ sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $email . "', '" . $usr_id . "')");
+ elseif ($spremenljivka['variable'] == 'ime')
+ sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $firstname . "', '" . $usr_id . "')");
+ elseif ($spremenljivka['variable'] == 'priimek')
+ sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $lastname . "', '" . $usr_id . "')");
+ }
+ }
+ else {
+ // lahko da user že obstaja in je šlo za duplicated keys
+ }
+
+ $json_array['note'] = 'Email succesfully sent.';
+ }
+ // Vabilo ni bilo poslano
+ else {
+ // Updatamo prejemnika - status in sent
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status='2' WHERE id='" . $rec_id . "'");
+
+ // Updatamo se arhiv
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_archive SET cnt_succsess='0', cnt_error='1' WHERE id='" . $arch_id . "'");
+
+ // Updatamo arhiv prejemnikov
+ $sqlQuery = sisplet_query("INSERT INTO srv_invitations_archive_recipients (arch_id,rec_id,success) VALUES ('" . $arch_id . "','" . $rec_id . "','0')");
+
+ // Updatamo tracking
+ $sqlQueryTracking = sisplet_query("INSERT INTO srv_invitations_tracking (inv_arch_id, time_insert, res_id, status) VALUES ('" . $arch_id . "',NOW(),'" . $rec_id . "','2')");
+
+
+ // Dodamo userje v bazo
+ $sqlUserInsert = sisplet_query("INSERT INTO srv_user
+ (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
+ VALUES
+ ('" . $ank_id . "', '" . $email . "', '" . $cookie . "', '" . $code . "', '2', NOW(), '" . $rec_id . "') ON DUPLICATE KEY UPDATE cookie = '" . $cookie . "', pass='" . $code . "'");
+ $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ($usr_id) {
+ // vstavimo v srv_userbase
+ sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('" . $usr_id . "','0',NOW(),'" . $global_user_id . "')");
+
+ // vstavimo v srv_userstatus
+ sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('" . $usr_id . "', '0', '0', NOW())");
+
+ // vstavimo v srv_data_text (email, ime, priimek)
+ SurveyInfo::getInstance()->SurveyInit($ank_id);
+ $db_table = (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) ? '_active' : '';
+ foreach ($sys_vars AS $sid => $spremenljivka) {
+ if ($spremenljivka['variable'] == 'email') {
+ $data_insert = sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $email . "', '" . $usr_id . "')");
+ } elseif ($spremenljivka['variable'] == 'ime') {
+ $data_insert = sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $firstname . "', '" . $usr_id . "')");
+ } elseif ($spremenljivka['variable'] == 'priimek') {
+ $data_insert = sisplet_query("INSERT INTO srv_data_text" . $db_table . " (spr_id, vre_id, text, usr_id) VALUES ('" . $sid . "', '" . $spremenljivka['vre_id'] . "', '" . $lastname . "', '" . $usr_id . "')");
+ }
+ }
+ } else {
+ // lahko da user že obstaja in je šlo za duplicated keys
+ }
+
+ $json_array['error'] = 'Email sending error!';
+ }
+ }
+ }
+ }
+ // Manjkajo parametri (email, firstname, lastname)
+ else {
+ $json_array['error'] = 'Missing parameters (email, firstname and lastname are mandatory)!';
+ }
+
+ return $json_array;
+ }
+
+ // Doda kupcu iz trgovine moznost dostopa do evoli landing paga (vrne token za dostop s katerim lahko enkrat izpolni formo in poslje vabila)
+ private function createEvoliPass($ank_id, $email) {
+ global $lang;
+ global $global_user_id;
+ global $admin_type;
+
+ $json_array = array();
+
+ // Oba parametra sta obvezna
+ if ($ank_id != '' && $email != '') {
+
+ // Zgeneriramo nakljucno geslo, ki se ne obstaja v bazi
+ $pass = substr(md5(microtime()), rand(0, 26), 5);
+ $sql = sisplet_query("SELECT * FROM srv_evoli_landingPage_access WHERE pass='" . $pass . "'");
+ while (mysqli_num_rows($sql) > 0) {
+ $pass = substr(md5(microtime()), rand(0, 26), 5);
+ $sql = sisplet_query("SELECT * FROM srv_evoli_landingPage_access WHERE pass='" . $pass . "'");
+ }
+
+ // Vstavimo kupca v tabelo za dostop
+ $sqlI = sisplet_query("INSERT INTO srv_evoli_landingPage_access (ank_id, email, pass, time_created) VALUES ('" . $ank_id . "', '" . $email . "', '" . $pass . "', NOW())");
+
+ $json_array['pass'] = $pass;
+ }
+ // Manjkajo parametri (email, firstname, lastname)
+ else {
+ $json_array['error'] = 'Missing parameters (survey id and email are mandatory)!';
+ }
+
+ return $json_array;
+ }
+
+ // Vrne pass za kupca iz trgovine za moznost dostopa do evoli landing paga (vrne token za dostop s katerim lahko enkrat izpolni formo in poslje vabila)
+ private function getEvoliPass($ank_id, $email) {
+ global $lang;
+ global $global_user_id;
+ global $admin_type;
+
+ $json_array = array();
+
+ // Oba parametra sta obvezna
+ if ($ank_id != '' && $email != '') {
+
+ $sql = sisplet_query("SELECT pass FROM srv_evoli_landingPage_access WHERE ank_id='" . $ank_id . "' AND email='" . $email . "' AND used='0'");
+ if (mysqli_num_rows($sql) > 0) {
+ $row = mysqli_fetch_array($sql);
+ $json_array['pass'] = $row['pass'];
+ } else {
+ $json_array['pass'] = '-1';
+ }
+ }
+ // Manjkajo parametri (email, firstname, lastname)
+ else {
+ $json_array['error'] = 'Missing parameters (survey id and email are mandatory)!';
+ }
+
+ return $json_array;
+ }
+
+
+ // Vrne verzijo mobilne aplikacije
+ // TRENUTNO SE NE RABI VEC
+ private function getMobileAppVersion() {
+ global $lang;
+ global $global_user_id;
+
+ $sm = new SurveyMobile();
+ $mobile_versions = $sm->getMobileVersion();
+
+ $obj['note'] = "login OK";
+ $obj['version'] = $mobile_versions;
+
+ return $obj;
+ }
+
+ private function getLang($anketa) {
+ $lang_admin = 0;
+ if ($anketa > 0) {
+ $sql = sisplet_query("SELECT lang_admin FROM srv_anketa WHERE id = '$anketa'");
+ $row = @mysqli_fetch_array($sql);
+ $lang_admin = $row['lang_admin'];
+ }
+ if ($lang_admin == 0) {
+ //$sql = sisplet_query("SELECT * FROM misc WHERE what = 'SurveyLang_admin'");
+ $sql = sisplet_query("SELECT lang FROM users WHERE id = '$global_user_id'");
+ $row = @mysqli_fetch_array($sql);
+ $lang_admin = $row['lang'];
+ }
+ if ($lang_admin == 0) {
+ $sql = sisplet_query("SELECT * FROM misc WHERE what = 'SurveyLang_admin'");
+ $row = @mysqli_fetch_array($sql);
+ $lang_admin = $row['value'];
+ }
+ if ($lang_admin == 0)
+ $lang_admin = 2; // za vsak slucaj, ce ni v bazi
+
+ return $lang_admin;
+ }
+
+
+ // Ustvari novega uporabnika - zaenkrat dovoljeno samo za Gorenje instalacijo
+ private function createUser($data){
+ global $pass_salt;
+ global $lang;
+
+ $json_array = array();
+
+ $email = (isset($data['email'])) ? $data['email'] : '';
+ $name = (isset($data['name'])) ? $data['name'] : '';
+ $pass = (isset($data['pass'])) ? $data['pass'] : '';
+
+
+ // Email in name sta obvezna, psss je lahko tudi prazen
+ if($email != '' && $name != ''){
+
+ // Preverimo ce ze obstaja email
+ $sql = sisplet_query ("SELECT * FROM users WHERE email='".$email."'");
+ if(mysqli_num_rows($sql) > 0){
+
+ $json_array['error'] = 'Uporabnik z izbanim emailom že obstaja!';
+ return $json_array;
+
+ exit();
+ }
+
+ $kdaj = date('Y-m-d');
+ $priimek = '';
+
+ // Status ima vedno active?
+ //if ($banan == 1)
+ // $status = 0;
+ //elseif ($active == 1)
+ $status = 1;
+ //else
+ // $status = 2;
+
+ // Zakodiramo geslo ki ga insertamo
+ if($pass == '')
+ $g = '';
+ else
+ $g = base64_encode((hash(SHA256, $pass . $pass_salt)));
+
+ // Vstavimo userja v bazo
+ sisplet_query ("INSERT INTO users
+ (type, email, name, surname, pass, status, when_reg, came_from, lang)
+ VALUES
+ ('3', '".$email."', '".$name."', '".$priimek."', '".$g."', '".$status."', '".$kdaj."', '0', '".$lang['id']."')");
+
+ $json_array['note'] = 'Uporabnik '.$name.' ('.$email.') uspešno dodan in aktiviran.';
+ }
+ // Manjkajo parametri (email, name)
+ else{
+ $json_array['error'] = 'Missing parameters (email and name are mandatory)!';
+ }
+
+ return $json_array;
+ }
+}
diff --git a/admin/survey/api/documentation/1ka_API.docx b/admin/survey/api/documentation/1ka_API.docx
new file mode 100644
index 0000000..b53ea17
--- /dev/null
+++ b/admin/survey/api/documentation/1ka_API.docx
Binary files differ
diff --git a/admin/survey/api/documentation/1ka_API_eng.docx b/admin/survey/api/documentation/1ka_API_eng.docx
new file mode 100644
index 0000000..b1fbf88
--- /dev/null
+++ b/admin/survey/api/documentation/1ka_API_eng.docx
Binary files differ